Rawtypes warnings in core and other foundation modules (#1294)

lowhanging rawtypes
few unchecked warnings
adde generics to some API methods

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/QueryOperation.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/QueryOperation.java
index 8b46418..db03b34 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/QueryOperation.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/QueryOperation.java
@@ -641,12 +641,12 @@
                             Object xmlTypeFactory;
                             Method getStringMethod;
                             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                                oracleOPAQUE = AccessController.doPrivileged(new PrivilegedClassForName(IORACLEOPAQUE_STR, true, this.getClass().getClassLoader()));
-                                xmlTypeFactoryClass = AccessController.doPrivileged(new PrivilegedClassForName(XMLTYPEFACTORY_STR, true, this.getClass().getClassLoader()));
-                                xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(xmlTypeFactoryClass, new Class[0], true));
-                                xmlTypeFactory = AccessController.doPrivileged(new PrivilegedInvokeConstructor(xmlTypeFactoryConstructor, new Object[0]));
+                                oracleOPAQUE = AccessController.doPrivileged(new PrivilegedClassForName<>(IORACLEOPAQUE_STR, true, this.getClass().getClassLoader()));
+                                xmlTypeFactoryClass = AccessController.doPrivileged(new PrivilegedClassForName<>(XMLTYPEFACTORY_STR, true, this.getClass().getClassLoader()));
+                                xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(xmlTypeFactoryClass, new Class[0], true));
+                                xmlTypeFactory = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(xmlTypeFactoryConstructor, new Object[0]));
                                 getStringMethod = AccessController.doPrivileged(new PrivilegedGetDeclaredMethod(xmlTypeFactoryClass, GETSTRING_METHOD, new Class[] {oracleOPAQUE}));
-                                fieldValue = AccessController.doPrivileged(new PrivilegedMethodInvoker(getStringMethod, fieldValue, new Object[] {}));
+                                fieldValue = AccessController.doPrivileged(new PrivilegedMethodInvoker<>(getStringMethod, fieldValue, new Object[] {}));
                             } else {
                                 oracleOPAQUE = PrivilegedAccessHelper.getClassForName(IORACLEOPAQUE_STR, false, this.getClass().getClassLoader());
                                 xmlTypeFactoryClass = PrivilegedAccessHelper.getClassForName(XMLTYPEFACTORY_STR, true, this.getClass().getClassLoader());
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/Util.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/Util.java
index b790aeb..a054da2 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/Util.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/Util.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -26,7 +26,6 @@
 import static org.eclipse.persistence.internal.helper.ClassConstants.FLOAT;
 import static org.eclipse.persistence.internal.helper.ClassConstants.INTEGER;
 import static org.eclipse.persistence.internal.helper.ClassConstants.LONG;
-import static org.eclipse.persistence.internal.helper.ClassConstants.Object_Class;
 import static org.eclipse.persistence.internal.helper.ClassConstants.SHORT;
 import static org.eclipse.persistence.internal.helper.ClassConstants.STRING;
 import static org.eclipse.persistence.internal.oxm.Constants.ANY_SIMPLE_TYPE_QNAME;
@@ -67,6 +66,7 @@
 import javax.xml.namespace.QName;
 
 // EclipseLink imports
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.databaseaccess.DatabasePlatform;
 import org.eclipse.persistence.platform.xml.XMLPlatform;
 import org.eclipse.persistence.platform.xml.XMLPlatformFactory;
@@ -434,7 +434,7 @@
     public static Class<?> getClassFromJDBCType(String typeName, DatabasePlatform databasePlatform) {
         Class<?> clz = databasePlatform.getClassTypes().get(typeName);
         if (clz == null) {
-            return Object_Class;
+            return CoreClassConstants.OBJECT;
         }
         return clz;
     }
@@ -444,7 +444,7 @@
     public static final Map<QName, Class<?>> SCHEMA_2_CLASS;
     static {
       SCHEMA_2_CLASS = Collections.unmodifiableMap(new HashMap<QName, Class<?>>() {{
-            put(ANY_SIMPLE_TYPE_QNAME,Object_Class);
+            put(ANY_SIMPLE_TYPE_QNAME,CoreClassConstants.OBJECT);
             put(BASE_64_BINARY_QNAME, APBYTE);
             put(BOOLEAN_QNAME, BOOLEAN);
             put(BYTE_QNAME, BYTE);
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/XRServiceFactory.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/XRServiceFactory.java
index 3ef1161..6d3b7c7 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/XRServiceFactory.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/internal/xr/XRServiceFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -387,7 +387,7 @@
                     }
                 }
                 // convert class names to classes on the associated OR descriptor
-                ClassDescriptor odesc = (ClassDescriptor) orProject.getAliasDescriptors().get(alias);
+                ClassDescriptor odesc = orProject.getAliasDescriptors().get(alias);
                 if (odesc != null)  {  // shouldn't be null...
                     // step three:  align OR alias and ordered descriptors (alias names and mappings)
                     ClassDescriptor orderedDescriptor = getDescriptorForClassName(orProject, odesc.getJavaClassName());
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/MetadataResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/MetadataResource.java
index b4639ce..6e63c55 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/MetadataResource.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/MetadataResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -268,7 +268,7 @@
         final MetadataCatalog result = new MetadataCatalog();
 
         // Entities
-        final Map<Class, ClassDescriptor> descriptors = context.getServerSession().getDescriptors();
+        final Map<Class<?>, ClassDescriptor> descriptors = context.getServerSession().getDescriptors();
         for (ClassDescriptor descriptor : descriptors.values()) {
 
             // Skip embeddables
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractPersistenceUnitResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractPersistenceUnitResource.java
index 13b61cc..5224a46 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractPersistenceUnitResource.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/common/AbstractPersistenceUnitResource.java
@@ -138,9 +138,9 @@
             PersistenceContext context = getPersistenceContext(persistenceUnit, null, baseURI, version, null);
             PersistenceUnit pu = new PersistenceUnit();
             pu.setPersistenceUnitName(persistenceUnit);
-            Map<Class, ClassDescriptor> descriptors = context.getServerSession().getDescriptors();
+            Map<Class<?>, ClassDescriptor> descriptors = context.getServerSession().getDescriptors();
             String mediaType = StreamingOutputMarshaller.mediaType(headers.getAcceptableMediaTypes()).toString();
-            Iterator<Class> contextIterator = descriptors.keySet().iterator();
+            Iterator<Class<?>> contextIterator = descriptors.keySet().iterator();
             while (contextIterator.hasNext()) {
                 ClassDescriptor descriptor = descriptors.get(contextIterator.next());
                 String alias = descriptor.getAlias();
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapter.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapter.java
index b4aff92..cbde40b 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapter.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapter.java
@@ -77,7 +77,7 @@
         ClassLoader cl = jpaSession.getDatasourcePlatform().getConversionManager().getLoader();
         DefaultXMLNameTransformer xmlNameTransformer = new DefaultXMLNameTransformer();
         for (Object descriptorAlias : project.getAliasDescriptors().keySet()) {
-            ClassDescriptor descriptor = (ClassDescriptor) project.getAliasDescriptors().get(descriptorAlias);
+            ClassDescriptor descriptor = project.getAliasDescriptors().get(descriptorAlias);
 
             if (!PersistenceWeavedRest.class.isAssignableFrom(descriptor.getJavaClass())) {
                 continue;
@@ -190,7 +190,7 @@
         }
 
         for (Object descriptorAlias : project.getAliasDescriptors().keySet()) {
-            ClassDescriptor descriptor = (ClassDescriptor) project.getAliasDescriptors().get(descriptorAlias);
+            ClassDescriptor descriptor = project.getAliasDescriptors().get(descriptorAlias);
             ClassDescriptor jpaDescriptor = jpaSession.getDescriptorForAlias(descriptor.getAlias());
             Vector<DatabaseMapping> descriptorMappings = (Vector<DatabaseMapping>) descriptor.getMappings().clone();
 
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapterV2.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapterV2.java
index a80436a..d2378a7 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapterV2.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/util/PreLoginMappingAdapterV2.java
@@ -42,7 +42,7 @@
         final Project project = event.getSession().getProject();
         final DefaultXMLNameTransformer xmlNameTransformer = new DefaultXMLNameTransformer();
         for (Object descriptorAlias : project.getAliasDescriptors().keySet()) {
-            final ClassDescriptor descriptor = (ClassDescriptor) project.getAliasDescriptors().get(descriptorAlias);
+            final ClassDescriptor descriptor = project.getAliasDescriptors().get(descriptorAlias);
 
             if (!PersistenceWeavedRest.class.isAssignableFrom(descriptor.getJavaClass())) {
                 continue;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/employee/domain/Employee.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/employee/domain/Employee.java
index 319b27a..8ae67c7 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/employee/domain/Employee.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/employee/domain/Employee.java
@@ -183,12 +183,12 @@
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
         try {
-            hours[0] = (Time) session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-            hours[1] = (Time) session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+            hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+            hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         } catch (Throwable in904) {
             // Allow performance tests to be run in 904.
-            hours[0] = (Time)ConversionManager.getDefaultManager().convertObject(row.get("START_TIME"), java.sql.Time.class);
-            hours[1] = (Time)ConversionManager.getDefaultManager().convertObject(row.get("END_TIME"), java.sql.Time.class);
+            hours[0] = ConversionManager.getDefaultManager().convertObject(row.get("START_TIME"), Time.class);
+            hours[1] = ConversionManager.getDefaultManager().convertObject(row.get("END_TIME"), Time.class);
         }
         return hours;
     }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/Computer.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/Computer.java
index 4ccf4d2..9addf16 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/Computer.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/Computer.java
@@ -17,10 +17,8 @@
 import java.io.*;
 import java.util.Enumeration;
 import org.eclipse.persistence.descriptors.*;
-import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.mappings.*;
 import org.eclipse.persistence.tools.schemaframework.*;
-import org.eclipse.persistence.testing.models.inheritance.PC;
 
 public class Computer implements Serializable {
     public int id;
@@ -35,7 +33,7 @@
         // As a result, we check for the mapping before adding it.
         // The reason this mapping is not added in the project is that some Mapping Workbench
         // tests rely on the ammendment method.
-        Enumeration mappings = descriptor.getMappings().elements();
+        Enumeration<DatabaseMapping> mappings = descriptor.getMappings().elements();
         while (mappings.hasMoreElements()) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (mapping.isTransformationMapping()) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/PC.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/PC.java
index 7be1b67..b104f6d 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/PC.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/inheritance/PC.java
@@ -31,7 +31,7 @@
         // As a result, we check for the mapping before adding it.
         // The reason this mapping is not added in the project is that some Mapping Workbench
         // tests rely on the ammendment method.
-        Enumeration mappings = descriptor.getMappings().elements();
+        Enumeration<DatabaseMapping> mappings = descriptor.getMappings().elements();
         while (mappings.hasMoreElements()) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (mapping.isTransformationMapping()) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/mapping/Employee.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/mapping/Employee.java
index 1e6a71f..087e075 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/mapping/Employee.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/models/mapping/Employee.java
@@ -558,8 +558,8 @@
     }
 
     public java.util.Date setDateAndTime(org.eclipse.persistence.sessions.Record row, org.eclipse.persistence.sessions.Session session) {
-        java.sql.Date sqlDateOfBirth = (java.sql.Date)ConversionManager.getDefaultManager().convertObject(row.get("BDAY"), java.sql.Date.class);
-        java.sql.Time timeOfBirth = (java.sql.Time)session.getLogin().getPlatform().convertObject(row.get("BTIME"), java.sql.Time.class);
+        java.sql.Date sqlDateOfBirth = ConversionManager.getDefaultManager().convertObject(row.get("BDAY"), java.sql.Date.class);
+        java.sql.Time timeOfBirth = session.getLogin().getPlatform().convertObject(row.get("BTIME"), java.sql.Time.class);
         if ((timeOfBirth == null) || (sqlDateOfBirth == null)) {
             return null;
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AgentBuilderHelper.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AgentBuilderHelper.java
index e14f137..f9f502c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AgentBuilderHelper.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AgentBuilderHelper.java
@@ -32,7 +32,7 @@
 public class AgentBuilderHelper {
 
     public static List getCustomers(Object object) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             return ((Agent)object).getCustomers();
         } else if (Builder.class.equals(cls)) {
@@ -43,7 +43,7 @@
     }
 
     public static List getHouses(Object object) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             return ((Agent)object).getHouses();
         } else if (Builder.class.equals(cls)) {
@@ -74,7 +74,7 @@
     }
 
     public static String getLastName(Object object) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             return ((Agent)object).getLastName();
         } else if (Builder.class.equals(cls)) {
@@ -85,7 +85,7 @@
     }
 
     public static void setLastName(Object object, String lastName) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).setLastName(lastName);
         } else if (Builder.class.equals(cls)) {
@@ -96,7 +96,7 @@
     }
 
     public static String getFirstName(Object object) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             return ((Agent)object).getFirstName();
         } else if (Builder.class.equals(cls)) {
@@ -107,7 +107,7 @@
     }
 
     public static void setFirstName(Object object, String firstName) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).setFirstName(firstName);
         } else if (Builder.class.equals(cls)) {
@@ -118,7 +118,7 @@
     }
 
     public static void addCustomer(Object object, Customer customer) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).addCustomer(customer);
         } else if (Builder.class.equals(cls)) {
@@ -129,7 +129,7 @@
     }
 
     public static void addHouse(Object object, House house) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).addHouse(house);
         } else if (Builder.class.equals(cls)) {
@@ -140,7 +140,7 @@
     }
 
     public static void removeCustomer(Object object, Customer customer) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).removeCustomer(customer);
         } else if (Builder.class.equals(cls)) {
@@ -151,7 +151,7 @@
     }
 
     public static void removeHouse(Object object, House house) {
-        Class cls = object.getClass();
+        Class<? extends Object> cls = object.getClass();
         if(Agent.class.equals(cls)) {
             ((Agent)object).removeHouse(house);
         } else if (Builder.class.equals(cls)) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AggregateTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AggregateTestModel.java
index 7ed0aa6..5607c00 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AggregateTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/aggregate/AggregateTestModel.java
@@ -147,8 +147,8 @@
         suite.setName("AggregateCheckForNullUnitOfWorkTestSuite");
         suite.setDescription("This suite tests updating objects with UOW in the aggregate model.");
 
-        Class employeeClass = Employee.class;
-        Class clientClass = Client.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<Client> clientClass = Client.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new CheckForNullUnitOfWorkTest(manager.getObject(employeeClass, "example1")));
@@ -171,9 +171,9 @@
         suite.setName("AggregateDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the aggregate model.");
 
-        Class employeeClass = Employee.class;
-        Class clientClass = Client.class;
-        Class evaluationClientClass = EvaluationClient.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<Client> clientClass = Client.class;
+        Class<EvaluationClient> evaluationClientClass = EvaluationClient.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "example1")));
@@ -386,12 +386,12 @@
         suite.setDescription("This suite test the reading of each object in the aggregate model.");
 
         //=====================================
-        Class employee1Class = Employee1.class;
+        Class<Employee1> employee1Class = Employee1.class;
 
         //======================================
-        Class employeeClass = Employee.class;
-        Class clientClass = Client.class;
-        Class evaluationClientClass = EvaluationClient.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<Client> clientClass = Client.class;
+        Class<EvaluationClient> evaluationClientClass = EvaluationClient.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         //===============================================================================
@@ -432,7 +432,7 @@
         suite.setName("AggregateUnitOfWorkCommitResumeTestSuite");
         suite.setDescription("This suite tests updating objects with UOW in the aggregate model using the commitAndResume method.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new BatchReadingWithAggregateCollectionMapping(Agent.class));
@@ -462,8 +462,8 @@
         suite.setName("AggregateUnitOfWorkTestSuite");
         suite.setDescription("This suite tests updating objects with UOW in the aggregate model.");
 
-        Class employeeClass = Employee.class;
-        Class clientClass = Client.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<Client> clientClass = Client.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new UnitOfWorkTest(manager.getObject(employeeClass, "example1")));
@@ -505,10 +505,10 @@
         suite.setName("AggregateUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the aggregate model.");
 
-        Class employee1Class = Employee1.class;
-        Class employeeClass = Employee.class;
-        Class clientClass = Client.class;
-        Class evaluationClientClass = EvaluationClient.class;
+        Class<Employee1> employee1Class = Employee1.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<Client> clientClass = Client.class;
+        Class<EvaluationClient> evaluationClientClass = EvaluationClient.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         //=================================================================================
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/CMServer.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/CMServer.java
index 68600b2..2c37eb9 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/CMServer.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/CMServer.java
@@ -15,6 +15,8 @@
 package org.eclipse.persistence.testing.tests.clientserver;
 
 import java.util.*;
+
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.sessions.DatabaseLogin;
 
@@ -29,7 +31,7 @@
 
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
             descriptors.addElement(iterator.next());
         }
         serverSession.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server.java
index 65b3459..e6452db 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server.java
@@ -15,6 +15,8 @@
 package org.eclipse.persistence.testing.tests.clientserver;
 
 import java.util.*;
+
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.sessions.DatabaseLogin;
 import org.eclipse.persistence.sessions.server.ConnectionPool;
@@ -42,7 +44,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
             descriptors.addElement(iterator.next());
         }
         serverSession.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server1.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server1.java
index 3fb87dd..d38cc81 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server1.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/clientserver/Server1.java
@@ -15,6 +15,8 @@
 package org.eclipse.persistence.testing.tests.clientserver;
 
 import java.util.*;
+
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.sessions.server.ConnectionPool;
 
@@ -40,7 +42,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext();) {
             descriptors.addElement(iterator.next());
         }
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConvertByteCharArrayToStringTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConvertByteCharArrayToStringTest.java
index a2e95aa..b73ba10 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConvertByteCharArrayToStringTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConvertByteCharArrayToStringTest.java
@@ -46,10 +46,10 @@
     @Override
     public void test() {
         //Convert back to a string
-        byteString = (String)ConversionManager.getDefaultManager().convertObject(byteArray, ClassConstants.STRING);
-        byteOString = (String)ConversionManager.getDefaultManager().convertObject(byteOArray, ClassConstants.STRING);
-        charString = (String)ConversionManager.getDefaultManager().convertObject(charArray, ClassConstants.STRING);
-        charOString = (String)ConversionManager.getDefaultManager().convertObject(charOArray, ClassConstants.STRING);
+        byteString = ConversionManager.getDefaultManager().convertObject(byteArray, ClassConstants.STRING);
+        byteOString = ConversionManager.getDefaultManager().convertObject(byteOArray, ClassConstants.STRING);
+        charString = ConversionManager.getDefaultManager().convertObject(charArray, ClassConstants.STRING);
+        charOString = ConversionManager.getDefaultManager().convertObject(charOArray, ClassConstants.STRING);
     }
 
     @Override
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/customsqlstoredprocedures/CustomSQLTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/customsqlstoredprocedures/CustomSQLTestModel.java
index ac3dfdc..fe9aca2 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/customsqlstoredprocedures/CustomSQLTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/customsqlstoredprocedures/CustomSQLTestModel.java
@@ -88,7 +88,7 @@
         suite.setName("CustomSQLDeleteObjectTestSuite");
         suite.setDescription("This suite tests delete SQL.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -138,7 +138,7 @@
         suite.setName("CustomSQLReadObjectTestSuite");
         suite.setDescription("This suite test read sql.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -156,7 +156,7 @@
         TestSuite suite = new TestSuite();
         suite.setName("RefreshObjectTestSuite");
         suite.setDescription("This Suite contains tests that verify that Refreshing of Objects is working correctly");
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
         suite.addTest(new ReadObjectQueryTest((Employee)manager.getObject(employeeClass, "0003")));
         return suite;
@@ -180,7 +180,7 @@
         suite.setName("CustomSQLStoredProcedureTestSuite");
         suite.setDescription("This suite tests certains aspects of StoredProcedures");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new CacheHitTest(manager.getObject(employeeClass, "0003")));
@@ -239,7 +239,7 @@
         suite.setName("CustomSQLUpdateObjectTestSuite");
         suite.setDescription("This suite tests update sql.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/DistributedServer.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/DistributedServer.java
index e9a04a2..e5afa63 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/DistributedServer.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/DistributedServer.java
@@ -18,7 +18,6 @@
 
 import java.util.Iterator;
 
-import org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.sessions.broker.SessionBroker;
 import org.eclipse.persistence.sessions.DatabaseSession;
@@ -43,7 +42,7 @@
         super();
         if (testSssion.isSessionBroker()) {
             this.session = new SessionBroker();
-            Iterator enumtr = ((SessionBroker)testSssion).getSessionsByName().keySet().iterator();
+            Iterator<String> enumtr = ((SessionBroker)testSssion).getSessionsByName().keySet().iterator();
             while (enumtr.hasNext()) {
                 String name = (String)enumtr.next();
                 DatabaseSession newMemberSession = ((SessionBroker)testSssion).getSessionForName(name).getProject().createDatabaseSession();
@@ -55,7 +54,7 @@
         this.session.setSessionLog(testSssion.getSessionLog());
         this.session.login();
         if (testSssion.isSessionBroker()) {
-            Iterator enumtr = ((SessionBroker)testSssion).getSessionsByName().keySet().iterator();
+            Iterator<String> enumtr = ((SessionBroker)testSssion).getSessionsByName().keySet().iterator();
             while (enumtr.hasNext()) {
                 String name = (String)enumtr.next();
                 Session oldMemberSession = ((SessionBroker)testSssion).getSessionForName(name);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/UpdateChangeObjectWithOptimisticLockTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/UpdateChangeObjectWithOptimisticLockTest.java
index 6786e39..1218f9a 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/UpdateChangeObjectWithOptimisticLockTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/UpdateChangeObjectWithOptimisticLockTest.java
@@ -66,8 +66,8 @@
         // Because it seems there is no way to write object with version without transaction,
         // let's compare versions directly
         Employee remoteEmp = (Employee)remoteServer.executeQuery(this.query);
-        long remoteVersion = (Long)remoteServer.getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(remoteEmp, remoteEmp.getId(), (AbstractSession)remoteServer);
-        long writtenVersion = (Long)getUnitOfWork().getParent().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(objectToBeWritten, ((Employee)objectToBeWritten).getId(), getUnitOfWork().getParent());
+        long remoteVersion = remoteServer.getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(remoteEmp, remoteEmp.getId(), (AbstractSession)remoteServer);
+        long writtenVersion = getUnitOfWork().getParent().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(objectToBeWritten, ((Employee)objectToBeWritten).getId(), getUnitOfWork().getParent());
         if (remoteVersion != writtenVersion) {
             throw new TestErrorException("Failed to copy the version number to the remote system");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/VerifyAggregateCollectionObjectsDeletedFromCacheTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/VerifyAggregateCollectionObjectsDeletedFromCacheTest.java
index 0098a49..bf64362 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/VerifyAggregateCollectionObjectsDeletedFromCacheTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/VerifyAggregateCollectionObjectsDeletedFromCacheTest.java
@@ -51,7 +51,7 @@
         List customers = AgentBuilderHelper.getCustomers(object);
 
         Customer customerx = (Customer)customers.get(0);
-        Vector dependants = customerx.getDependants();
+        Vector<Dependant> dependants = customerx.getDependants();
         customerx.removeDependant((Dependant)dependants.lastElement());
         AgentBuilderHelper.removeCustomer(object, (Customer)customers.get(customers.size()-1));
     }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/NewObjectWithOptimisticLockingTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/NewObjectWithOptimisticLockingTest.java
index deba87f..4c1afdf 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/NewObjectWithOptimisticLockingTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/NewObjectWithOptimisticLockingTest.java
@@ -76,7 +76,7 @@
         }
 
         boolean found = false;
-        Iterator i = holder.getItems().iterator();
+        Iterator<ListItem> i = holder.getItems().iterator();
         while (i.hasNext()){
             ListItem item = (ListItem)i.next();
             if (item.getDescription() != null && item.getDescription().equals("test2")){
@@ -93,7 +93,7 @@
     public void reset(){
         UnitOfWork uow = getSession().acquireUnitOfWork();
         holder = (ListHolder)uow.readObject(ListHolder.class);
-        Iterator i = holder.getItems().iterator();
+        Iterator<ListItem> i = holder.getItems().iterator();
         while (i.hasNext()){
             uow.deleteObject(i.next());
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/OrderedListNewObjectTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/OrderedListNewObjectTest.java
index ef382bd..0edce96 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/OrderedListNewObjectTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/distributedservers/rcm/OrderedListNewObjectTest.java
@@ -93,7 +93,7 @@
     public void reset(){
         UnitOfWork uow = getSession().acquireUnitOfWork();
         ListHolder holder = (ListHolder)uow.readObject(ListHolder.class);
-        Iterator i = holder.getItems().iterator();
+        Iterator<ListItem> i = holder.getItems().iterator();
         while (i.hasNext()){
             uow.deleteObject(i.next());
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/AddDescriptorsTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/AddDescriptorsTest.java
index f3eea37..95665d8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/AddDescriptorsTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/AddDescriptorsTest.java
@@ -20,6 +20,8 @@
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 
+import java.util.Iterator;
+
 // To make this test fail, comment a single line of code:
 //   session.clearLastDescriptorAccessed();
 // in org.eclipse.persistence.descriptors.ClassDescriptor.preInterfaceInitialization() method.
@@ -37,7 +39,7 @@
             // The test has failed - at least one "old" descriptor is referenced by a new descriptor.
             // To ensure consistency, remove EmployeeSystem interface descriptors first,
             // then add all EmployeeSystem descriptors again
-            java.util.Iterator iterator = getSession().getDescriptors().keySet().iterator();
+            Iterator<Class<?>> iterator = getSession().getDescriptors().keySet().iterator();
             while (iterator.hasNext()) {
                 Class cls = (Class)iterator.next();
                 String packageName = Helper.getPackageName(cls);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/EmployeeBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/EmployeeBasicTestModel.java
index d74c739..0babde8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/EmployeeBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/employee/EmployeeBasicTestModel.java
@@ -85,9 +85,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -179,9 +179,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -226,9 +226,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/AddDescriptorsTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/AddDescriptorsTest.java
index 372fca0..e4d5403 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/AddDescriptorsTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/AddDescriptorsTest.java
@@ -21,6 +21,8 @@
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 
+import java.util.Iterator;
+
 // To make this test fail, comment a single line of code:
 //   session.clearLastDescriptorAccessed();
 // in org.eclipse.persistence.descriptors.ClassDescriptor.preInterfaceInitialization() method.
@@ -38,7 +40,7 @@
             // The test has failed - at least one "old" descriptor is referenced by a new descriptor.
             // To ensure consistency, remove EmployeeSystem interface descriptors first,
             // then add all EmployeeSystem descriptors again
-            java.util.Iterator iterator = getSession().getDescriptors().keySet().iterator();
+            Iterator<Class<?>> iterator = getSession().getDescriptors().keySet().iterator();
             while (iterator.hasNext()) {
                 Class cls = (Class)iterator.next();
                 String packageName = Helper.getPackageName(cls);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ContainerCloningTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ContainerCloningTest.java
index 72a93b8..7d9093f 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ContainerCloningTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ContainerCloningTest.java
@@ -39,7 +39,7 @@
     public void test() {
         ContainerPolicy cp = new CollectionContainerPolicy();
         cp.setContainerClass(ClassConstants.ArrayList_class);
-        Collection originalC = java.util.Arrays.asList(new Employee());
+        Collection<Employee> originalC = java.util.Arrays.asList(new Employee());
         Collection cloneC = (Collection)cp.cloneFor(originalC);
 
         cp = new MapContainerPolicy();
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ExceptionHandlerLoginIntegrityTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ExceptionHandlerLoginIntegrityTest.java
index dd2ba72..7b61139 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ExceptionHandlerLoginIntegrityTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/feature/ExceptionHandlerLoginIntegrityTest.java
@@ -19,6 +19,8 @@
 import org.eclipse.persistence.testing.models.employee.relational.*;
 import org.eclipse.persistence.mappings.*;
 
+import java.util.Map;
+
 /**
  * To test the functionality of ExceptionHandler.
  * ExceptionHandler can catch errors that occur on queries or during database access.
@@ -63,7 +65,7 @@
         login = getSession().getLogin();
         project = new EmployeeProject();
         project.setLogin(login);
-        java.util.Map descriptors = project.getDescriptors();
+        Map<Class<?>, ClassDescriptor> descriptors = project.getDescriptors();
 
         //java.util.Enumeration e =ht.elements();(Descriptor)e.nextElement();
         ClassDescriptor descriptor = (ClassDescriptor)descriptors.get(org.eclipse.persistence.testing.models.employee.domain.Employee.class);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/HistoricalQualifiedTableEmployeeSystem.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/HistoricalQualifiedTableEmployeeSystem.java
index a39c307..f3d911f 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/HistoricalQualifiedTableEmployeeSystem.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/HistoricalQualifiedTableEmployeeSystem.java
@@ -46,20 +46,20 @@
 
         ManyToManyMapping mapping = (ManyToManyMapping)empDescriptor.getMappingForAttributeName("projects");
         String oldRelationTableName = mapping.getRelationTableName();
-        List oldHistoricalTableNames = mapping.getHistoryPolicy().getHistoryTableNames();
+        List<String> oldHistoricalTableNames = mapping.getHistoryPolicy().getHistoryTableNames();
         mapping.getHistoryPolicy().setHistoricalTables(new Vector(1));
         for (int i = 0; i < oldHistoricalTableNames.size(); i++) {
             mapping.getHistoryPolicy().addHistoryTableName(user + "." + oldHistoricalTableNames.get(i));
         }
         mapping.setRelationTableName(user + "." + oldRelationTableName);
 
-        Vector targetRelationKeyFields = mapping.getTargetKeyFields();
+        Vector<DatabaseField> targetRelationKeyFields = mapping.getTargetKeyFields();
         for (int i = 0; i < targetRelationKeyFields.size(); i++) {
             String oldName = ((DatabaseField)targetRelationKeyFields.get(i)).getTable().getName();
             ((DatabaseField)targetRelationKeyFields.get(i)).setTableName(user + "." + oldName);
         }
 
-        Vector sourceRelationKeyFields = mapping.getSourceRelationKeyFields();
+        Vector<DatabaseField> sourceRelationKeyFields = mapping.getSourceRelationKeyFields();
         for (int i = 0; i < sourceRelationKeyFields.size(); i++) {
             String oldName = ((DatabaseField)sourceRelationKeyFields.get(i)).getTable().getName();
             ((DatabaseField)sourceRelationKeyFields.get(i)).setTableName(user + "." + oldName);
@@ -67,7 +67,7 @@
 
         DirectCollectionMapping dcmapping = (DirectCollectionMapping)empDescriptor.getMappingForAttributeName("responsibilitiesList");
         String oldReferenceTableName = dcmapping.getReferenceTableName();
-        List oldDCHistoricalTableNames = dcmapping.getHistoryPolicy().getHistoryTableNames();
+        List<String> oldDCHistoricalTableNames = dcmapping.getHistoryPolicy().getHistoryTableNames();
         dcmapping.getHistoryPolicy().setHistoricalTables(new Vector(1));
         for (int i = 0; i < oldDCHistoricalTableNames.size(); i++) {
             dcmapping.getHistoryPolicy().addHistoryTableName(user + "." + oldDCHistoricalTableNames.get(i));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/IsolatedSessionHistoricalTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/IsolatedSessionHistoricalTest.java
index 88920fc..4983d4e 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/IsolatedSessionHistoricalTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/history/IsolatedSessionHistoricalTest.java
@@ -16,6 +16,7 @@
 
 import java.util.*;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.queries.*;
 import org.eclipse.persistence.history.*;
@@ -40,7 +41,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/CleanupCacheKeyCorrectnessTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/CleanupCacheKeyCorrectnessTest.java
index 31d89f7..a259974 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/CleanupCacheKeyCorrectnessTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/CleanupCacheKeyCorrectnessTest.java
@@ -69,7 +69,7 @@
 
     @Override
     public void test() {
-        List employees = new ArrayList<Employee>(numberOfObjectsToCreate);
+        List<Employee> employees = new ArrayList<>(numberOfObjectsToCreate);
 
         UnitOfWork uow = getSession().acquireUnitOfWork();
         for (int i = 0; i < numberOfObjectsToCreate; i++) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentIdentityMapKeyEnumerationTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentIdentityMapKeyEnumerationTest.java
index 91f9a85..e1adb2b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentIdentityMapKeyEnumerationTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentIdentityMapKeyEnumerationTest.java
@@ -48,7 +48,7 @@
             @Override
             public void run() {
                 while (shouldRun) {
-                    Enumeration keys = identityMap.keys();
+                    Enumeration<CacheKey> keys = identityMap.keys();
                     while (keys.hasMoreElements()) {
                         try {
                             Object key = keys.nextElement();
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentReadBigBadObjectTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentReadBigBadObjectTest.java
index b68d685..0569a42 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentReadBigBadObjectTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ConcurrentReadBigBadObjectTest.java
@@ -56,7 +56,7 @@
         ClassDescriptor d = (server.serverSession).getClassDescriptor(BigBadObject.class);
         DatabaseMapping m;
 
-        Vector v = d.getMappings();
+        Vector<DatabaseMapping> v = d.getMappings();
         int mappings = v.size();
         int i = 0;
         while (i < mappings) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/InsertWeakIdentityMapTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/InsertWeakIdentityMapTest.java
index ad591e0..68dec72 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/InsertWeakIdentityMapTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/InsertWeakIdentityMapTest.java
@@ -92,8 +92,8 @@
         }
         // Check that all the CacheReferences (WeakCacheReferences) are null, since
         // they all should have been garbage collected.
-        Map cache = getIdentityMap().getCacheKeys();
-        for (Iterator iterator = cache.values().iterator(); iterator.hasNext(); ) {
+        Map<Object, CacheKey> cache = getIdentityMap().getCacheKeys();
+        for (Iterator<CacheKey> iterator = cache.values().iterator(); iterator.hasNext(); ) {
             CacheKey key = (CacheKey)iterator.next();
             if (key.getObject() != null) {
                 throw new TestErrorException("A WeakCacheKey with a non-empty WeakReference was found. The garbage collection did not clear the cache as expected.");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadSoftCacheWeakIdentityMapTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadSoftCacheWeakIdentityMapTest.java
index a464669..6567bfb 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadSoftCacheWeakIdentityMapTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadSoftCacheWeakIdentityMapTest.java
@@ -62,9 +62,9 @@
     public void verify() {
         // Ensure that some ref have garbage collected,
         // if not all through warning as different VM have different gc behavior.
-        Map cache = getIdentityMap().getCacheKeys();
+        Map<Object, CacheKey> cache = getIdentityMap().getCacheKeys();
         int numObjects = 0;
-        for (Iterator iterator = cache.values().iterator(); iterator.hasNext();) {
+        for (Iterator<CacheKey> iterator = cache.values().iterator(); iterator.hasNext();) {
             CacheKey key = (CacheKey)iterator.next();
             if (key.getObject() != null) {
                 numObjects++;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadWeakIdentityMapTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadWeakIdentityMapTest.java
index a958852..e3b43bb 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadWeakIdentityMapTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/ReadWeakIdentityMapTest.java
@@ -79,9 +79,9 @@
 
             // Ensure that some ref have garbage collected,
             // if not all through warning as different VM have different gc behavior.
-            Map cache = getIdentityMap().getCacheKeys();
+            Map<Object, CacheKey> cache = getIdentityMap().getCacheKeys();
             numObjects = 0;
-            for (Iterator iterator = cache.values().iterator(); iterator.hasNext();) {
+            for (Iterator<CacheKey> iterator = cache.values().iterator(); iterator.hasNext();) {
                 CacheKey key = (CacheKey)iterator.next();
                 if (key.getObject() != null) {
                     numObjects++;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cache/ConcurrentReadBigBadObjectTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cache/ConcurrentReadBigBadObjectTest.java
index 26a0865..58f8564 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cache/ConcurrentReadBigBadObjectTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cache/ConcurrentReadBigBadObjectTest.java
@@ -56,7 +56,7 @@
         ClassDescriptor d = (server.serverSession).getClassDescriptor(BigBadObject.class);
         DatabaseMapping m;
 
-        Vector v = d.getMappings();
+        Vector<DatabaseMapping> v = d.getMappings();
         int mappings = v.size();
         int i =0;
         while (i<mappings){
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/CacheExpiryReadAllQueryTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/CacheExpiryReadAllQueryTest.java
index fe52136..831b59a 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/CacheExpiryReadAllQueryTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/CacheExpiryReadAllQueryTest.java
@@ -56,7 +56,7 @@
         }
 
         // Changed the names of all the employees in the cache
-        Enumeration employeeMap = ((AbstractSession)getSession()).getIdentityMapAccessorInstance().getIdentityMap(Employee.class).keys();
+        Enumeration<CacheKey> employeeMap = ((AbstractSession)getSession()).getIdentityMapAccessorInstance().getIdentityMap(Employee.class).keys();
         while (employeeMap.hasMoreElements()) {
             Employee employee = (Employee)((CacheKey)employeeMap.nextElement()).getObject();
             employee.setFirstName(employee.getFirstName() + "-mutated");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/UnitOfWorkRefreshAfterInvalidationTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/UnitOfWorkRefreshAfterInvalidationTest.java
index 4d80b61..669755a 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/UnitOfWorkRefreshAfterInvalidationTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/identitymaps/cacheinvalidation/UnitOfWorkRefreshAfterInvalidationTest.java
@@ -76,7 +76,7 @@
     @Override
     public void verify() {
         // check for duplicates
-        List statements = this.sqlTracker.getSqlStatements();
+        List<String> statements = this.sqlTracker.getSqlStatements();
         Vector errors = new Vector();
         for (int i = 0; i < statements.size(); i++) {
             String statement = (String)statements.get(i);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/InheritanceTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/InheritanceTestModel.java
index b2f91f1..437d887 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/InheritanceTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/InheritanceTestModel.java
@@ -375,8 +375,8 @@
         suite.setName("InheritanceUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the inheritance model.");
 
-        Class companyClass = Company.class;
-        Class personClass = Person.class;
+        Class<Company> companyClass = Company.class;
+        Class<Person> personClass = Person.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(Cat.class, "catExample1")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/STI_JoinedAttributeTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/STI_JoinedAttributeTest.java
index 44d8302..db7a7c9 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/STI_JoinedAttributeTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/inheritance/STI_JoinedAttributeTest.java
@@ -79,7 +79,7 @@
     private static boolean isTestMethod(Method m) {
         String name= m.getName();
         Class[] parameters= m.getParameterTypes();
-        Class returnType= m.getReturnType();
+        Class<?> returnType= m.getReturnType();
         return parameters.length == 0 && name.startsWith("test") && returnType.equals(Void.TYPE);
      }
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/insurance/InsuranceBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/insurance/InsuranceBasicTestModel.java
index a570888..d7e80ea 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/insurance/InsuranceBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/insurance/InsuranceBasicTestModel.java
@@ -78,7 +78,7 @@
         suite.setName("InsuranceDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the insurance demo.");
 
-        Class holderClass = PolicyHolder.class;
+        Class<PolicyHolder> holderClass = PolicyHolder.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(holderClass, "example1")));
@@ -130,7 +130,7 @@
         suite.setName("InsuranceReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the insurance demo.");
 
-        Class holderClass = PolicyHolder.class;
+        Class<PolicyHolder> holderClass = PolicyHolder.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(holderClass, "example1")));
@@ -146,7 +146,7 @@
         suite.setName("InsuranceUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the insurance demo.");
 
-        Class holderClass = PolicyHolder.class;
+        Class<PolicyHolder> holderClass = PolicyHolder.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(holderClass, "example1")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/interfaces/DescriptorInitTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/interfaces/DescriptorInitTest.java
index d4a8087..6c488f2 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/interfaces/DescriptorInitTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/interfaces/DescriptorInitTest.java
@@ -19,6 +19,8 @@
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.testing.models.interfaces.*;
 
+import java.util.Iterator;
+
 public class DescriptorInitTest extends TestCase {
     public Project project;
     public DatabaseSession dbsession;
@@ -48,7 +50,7 @@
 
     @Override
     public void test() {
-        for (java.util.Iterator iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
             String className = descriptor.getJavaClass().toString();
 
@@ -81,7 +83,7 @@
     @Override
     public void verify() {
         //Make sure all Descriptors have been initialized.
-        for (java.util.Iterator iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
             if (!descriptor.isFullyInitialized()) {
                 throw new TestErrorException("Descriptor \"" + descriptor + "\" is NOT INITIALIZED");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ClientServerTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ClientServerTest.java
index 40084fe..2d821f8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ClientServerTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ClientServerTest.java
@@ -57,7 +57,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             ClassDescriptor desc = (ClassDescriptor)iterator.next();
             descriptors.addElement(desc);
             // it's an isolated descriptor, but the test requires no isolation.
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExceptionOnIsolatedReference.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExceptionOnIsolatedReference.java
index 52e03e3..cdd9da8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExceptionOnIsolatedReference.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExceptionOnIsolatedReference.java
@@ -32,7 +32,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExclusiveConnectionClosedExceptionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExclusiveConnectionClosedExceptionTest.java
index 6519485..3333a7f 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExclusiveConnectionClosedExceptionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/ExclusiveConnectionClosedExceptionTest.java
@@ -16,6 +16,7 @@
 
 import java.util.*;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.queries.*;
 import org.eclipse.persistence.sessions.*;
@@ -58,7 +59,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedEmployee.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedEmployee.java
index d11ce53..d4cd001 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedEmployee.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedEmployee.java
@@ -178,8 +178,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time)session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time)session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         return hours;
     }
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedQueryTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedQueryTest.java
index 33734f6..24ef0d0 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedQueryTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/IsolatedQueryTest.java
@@ -16,6 +16,7 @@
 
 import java.util.*;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.queries.*;
 import org.eclipse.persistence.sessions.*;
@@ -37,7 +38,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/NoRowsUpdatedTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/NoRowsUpdatedTest.java
index ef9f82d..70e1bb6 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/NoRowsUpdatedTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/NoRowsUpdatedTest.java
@@ -16,6 +16,7 @@
 
 import java.util.*;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.queries.SQLCall;
 import org.eclipse.persistence.sessions.*;
@@ -37,7 +38,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/VPDSupportTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/VPDSupportTest.java
index 34191ad..9155c7b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/VPDSupportTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/isolatedsession/VPDSupportTest.java
@@ -16,6 +16,7 @@
 
 import java.util.*;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.queries.SQLCall;
 import org.eclipse.persistence.sessions.*;
@@ -36,7 +37,7 @@
     public void copyDescriptors(Session session) {
         Vector descriptors = new Vector();
 
-        for (Iterator iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = session.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptors.addElement(iterator.next());
         }
         this.server.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexReverseSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexReverseSqrtTest.java
index 2753fc7..e4a5131 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexReverseSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexReverseSqrtTest.java
@@ -24,8 +24,8 @@
         Employee emp2 = (Employee)getTestEmployees().lastElement();
 
         String ejbqlString;
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + salarySquareRoot1;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexSqrtTest.java
index 2c8f94a..ba4284c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/ComplexSqrtTest.java
@@ -24,8 +24,8 @@
         Employee emp2 = (Employee)getTestEmployees().lastElement();
 
         String ejbqlString;
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + "(SQRT(emp.salary) = ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexReverseSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexReverseSqrtTest.java
index 9427935..43669ce 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexReverseSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexReverseSqrtTest.java
@@ -24,8 +24,8 @@
         Employee emp2 = (Employee)getTestEmployees().lastElement();
 
         String ejbqlString;
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + salarySquareRoot1;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexSqrtTest.java
index a3396ee..d221a55 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectComplexSqrtTest.java
@@ -24,8 +24,8 @@
         Employee emp2 = (Employee)getTestEmployees().lastElement();
 
         String ejbqlString;
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + "(SQRT(emp.salary) = ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleReverseSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleReverseSqrtTest.java
index a0009d8..0b9b9c4 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleReverseSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleReverseSqrtTest.java
@@ -22,7 +22,7 @@
         setTestEmployees(getExtraEmployees());
         Employee emp = (Employee)getTestEmployees().firstElement();
 
-        double salarySquareRoot = Math.sqrt(((double) emp.getSalary()));
+        double salarySquareRoot = Math.sqrt(emp.getSalary());
         String ejbqlString;
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleSqrtTest.java
index 35c7271..1e8ac82 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SelectSimpleSqrtTest.java
@@ -22,7 +22,7 @@
         setTestEmployees(getExtraEmployees());
         Employee emp = (Employee)getTestEmployees().firstElement();
 
-        double salarySquareRoot = Math.sqrt(((double) emp.getSalary()));
+        double salarySquareRoot = Math.sqrt(emp.getSalary());
         String ejbqlString;
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleReverseSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleReverseSqrtTest.java
index d49b922..e142ce7 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleReverseSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleReverseSqrtTest.java
@@ -22,7 +22,7 @@
         setTestEmployees(getExtraEmployees());
         Employee emp = (Employee)getTestEmployees().firstElement();
 
-        double salarySquareRoot = Math.sqrt(((double) emp.getSalary()));
+        double salarySquareRoot = Math.sqrt(emp.getSalary());
         String ejbqlString;
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleSqrtTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleSqrtTest.java
index fa492bf..b5f5769 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleSqrtTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/jpql/SimpleSqrtTest.java
@@ -22,7 +22,7 @@
         setTestEmployees(getExtraEmployees());
         Employee emp = (Employee)getTestEmployees().firstElement();
 
-        double salarySquareRoot = Math.sqrt(((double) emp.getSalary()));
+        double salarySquareRoot = Math.sqrt(emp.getSalary());
         String ejbqlString;
 
         ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/legacy/LegacyTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/legacy/LegacyTestModel.java
index c5ddb4b..d7f75ad 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/legacy/LegacyTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/legacy/LegacyTestModel.java
@@ -59,7 +59,7 @@
         suite.setName("LegacyDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the mapping model.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "example1")));
@@ -96,7 +96,7 @@
         suite.setName("LegacyReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the mapping model.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "example1")));
@@ -111,7 +111,7 @@
         suite.setName("LegacyUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the mapping model.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "example1")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployee.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployee.java
index f543640..9c8c63e 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployee.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployee.java
@@ -131,8 +131,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time)session.getPlatform().convertObject(row.get("\u3066\u3068\u3042\u3064\u3068_\u3068\u3051\u3059\u304a"), java.sql.Time.class);
-        hours[1] = (Time)session.getPlatform().convertObject(row.get("\u304a\u305b\u3048_\u3068\u3051\u3059\u304a"), java.sql.Time.class);
+        hours[0] = session.getPlatform().convertObject(row.get("\u3066\u3068\u3042\u3064\u3068_\u3068\u3051\u3059\u304a"), Time.class);
+        hours[1] = session.getPlatform().convertObject(row.get("\u304a\u305b\u3048_\u3068\u3051\u3059\u304a"), Time.class);
         return hours;
     }
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployeeBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployeeBasicTestModel.java
index f821e9a..0bba589 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployeeBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/nls/japanese/NLSEmployeeBasicTestModel.java
@@ -26,7 +26,6 @@
 import org.eclipse.persistence.testing.framework.WriteObjectTest;
 import org.eclipse.persistence.testing.models.employee.domain.*;
 import org.eclipse.persistence.testing.models.employee.relational.EmployeeSystem;
-import org.eclipse.persistence.testing.tests.nls.japanese.NLSEmployee;
 
 /**
  * This model tests reading/writing/deleting through using the employee demo.
@@ -55,10 +54,10 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("[NLS_Japanese] This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = NLSEmployee.class;
+        Class<NLSEmployee> employeeClass = NLSEmployee.class;
 
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new NLSEmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -122,9 +121,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("[NLS_Japanese] This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = NLSEmployee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<NLSEmployee> employeeClass = NLSEmployee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -161,9 +160,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("[NLS_Japanese] This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = NLSEmployee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<NLSEmployee> employeeClass = NLSEmployee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/onetoonejointable/OneToOneJoinTableEmployeeBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/onetoonejointable/OneToOneJoinTableEmployeeBasicTestModel.java
index ece665c..2b5803b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/onetoonejointable/OneToOneJoinTableEmployeeBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/onetoonejointable/OneToOneJoinTableEmployeeBasicTestModel.java
@@ -86,9 +86,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -185,9 +185,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -234,9 +234,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
@@ -764,7 +764,7 @@
         @Override
         protected void testBatchAttributes() {
             Vector result = (Vector) this.objectsFromDatabase;
-            List children = ((Employee) result.elementAt(0)).getChildren();
+            List<Child> children = ((Employee) result.elementAt(0)).getChildren();
             ((Employee) result.elementAt(0)).getResponsibilitiesList().size();
             ((Employee) result.elementAt(0)).getProjects().size();
             if ((children == null) || (children.size() == 0)) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/orderedlist/OrderListTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/orderedlist/OrderListTestModel.java
index 6496885..317fd05 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/orderedlist/OrderListTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/orderedlist/OrderListTestModel.java
@@ -25,6 +25,7 @@
 import org.eclipse.persistence.annotations.OrderCorrectionType;
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.descriptors.changetracking.AttributeChangeTrackingPolicy;
+import org.eclipse.persistence.descriptors.changetracking.ObjectChangePolicy;
 import org.eclipse.persistence.descriptors.changetracking.ObjectChangeTrackingPolicy;
 import org.eclipse.persistence.exceptions.QueryException;
 import org.eclipse.persistence.expressions.Expression;
@@ -358,7 +359,7 @@
         if(!isTopLevel) {
             if(changeTracking == ChangeTracking.ATTRIBUTE) {
                 // Save change policies for the all employee demo class in order to restore them at reset time.
-                Map originalChangeTrackingPolicies = new HashMap<Class, ObjectChangeTrackingPolicy>();
+                Map<Class, ObjectChangePolicy> originalChangeTrackingPolicies = new HashMap<>();
 
                 originalChangeTrackingPolicies.put(Employee.class, getSession().getDescriptor(Employee.class).getObjectChangePolicy());
                 getSession().getDescriptor(Employee.class).setObjectChangePolicy(new AttributeChangeTrackingPolicy());
@@ -1598,7 +1599,7 @@
                     addTo(managerClone, create("temp", 2));
                 }
             }
-            List list = createList();
+            List<List> list = createList();
             addTo(list, create("new", 0));
             addTo(list, create("new", 1));
             setListInto(managerClone, list);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/ownership/OwnershipTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/ownership/OwnershipTestModel.java
index 3c080ff..e4b742c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/ownership/OwnershipTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/ownership/OwnershipTestModel.java
@@ -46,7 +46,7 @@
         suite.setName("OwnershipDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the ownership model.");
 
-        Class objectAClass = ObjectA.class;
+        Class<ObjectA> objectAClass = ObjectA.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(objectAClass, "example1")));
@@ -87,7 +87,7 @@
         suite.setName("OwnershipReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the ownership model.");
 
-        Class objectAClass = ObjectA.class;
+        Class<ObjectA> objectAClass = ObjectA.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(objectAClass, "example1")));
@@ -102,7 +102,7 @@
         suite.setName("OwnershipUnitOfWorkTestSuite");
         suite.setDescription("This suite verifies that UOW works in the ownership model");
 
-        Class objectAClass = ObjectA.class;
+        Class<ObjectA> objectAClass = ObjectA.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new UnitOfWorkTest(manager.getObject(objectAClass, "example1")));
@@ -117,7 +117,7 @@
         suite.setName("OwnershipUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the ownership model.");
 
-        Class objectAClass = ObjectA.class;
+        Class<ObjectA> objectAClass = ObjectA.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(objectAClass, "example1")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentRegressionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentRegressionTest.java
index 229e4d0..2119fc3 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentRegressionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentRegressionTest.java
@@ -33,8 +33,8 @@
     @Override
     public void setup() {
         super.setup();
-        for (Iterator descriptors = getServerSession().getDescriptors().values().iterator();
-                 descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getServerSession().getDescriptors().values().iterator();
+             descriptors.hasNext();) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.ISOLATED);
         }
@@ -47,8 +47,8 @@
     @Override
     public void reset() {
         super.reset();
-        for (Iterator descriptors = getServerSession().getDescriptors().values().iterator();
-                 descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getServerSession().getDescriptors().values().iterator();
+             descriptors.hasNext();) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.SHARED);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentTest.java
index be3e569..efe760d 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/concurrent/IsolatedConcurrentTest.java
@@ -33,8 +33,8 @@
     @Override
     public void setup() {
         super.setup();
-        for (Iterator descriptors = getServerSession().getDescriptors().values().iterator();
-                 descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getServerSession().getDescriptors().values().iterator();
+             descriptors.hasNext();) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.ISOLATED);
         }
@@ -47,8 +47,8 @@
     @Override
     public void reset() {
         super.reset();
-        for (Iterator descriptors = getServerSession().getDescriptors().values().iterator();
-                 descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getServerSession().getDescriptors().values().iterator();
+             descriptors.hasNext();) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.SHARED);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/ClassForNameTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/ClassForNameTest.java
index 7c1a133..a25c08f 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/ClassForNameTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/ClassForNameTest.java
@@ -14,13 +14,14 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.tests.performance.java;
 
+import org.eclipse.persistence.Version;
 import org.eclipse.persistence.testing.framework.*;
 
 /**
  * This test compares the performance between .class and a static variable.
  */
 public class ClassForNameTest extends PerformanceComparisonTestCase {
-    public static Class TOPLINK = org.eclipse.persistence.Version.class;
+    public static Class<Version> TOPLINK = org.eclipse.persistence.Version.class;
 
     public ClassForNameTest() {
         setName("static vs class forName PerformanceComparisonTest");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/DoPrivilegedTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/DoPrivilegedTest.java
index 5271c5c..5befd09 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/DoPrivilegedTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/DoPrivilegedTest.java
@@ -145,16 +145,16 @@
         String fieldValue = "TopLink Blah";
         String methodName = "setProduct";
 
-        Class clazz = null;
+        Class<?> clazz = null;
         Version version = null;
         Method method = null;
         try {
-            clazz = AccessController.doPrivileged(new PrivilegedClassForName(className));
-            Class[] methodParameterTypes = { AccessController.doPrivileged(new PrivilegedClassForName("java.lang.String")) };
+            clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(className));
+            Class<?>[] methodParameterTypes = { AccessController.doPrivileged(new PrivilegedClassForName<>("java.lang.String")) };
             ClassLoader clazzloader = AccessController.doPrivileged(new PrivilegedGetClassLoaderForClass(clazz));
             ClassLoader classloader = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-            AccessController.doPrivileged(new PrivilegedClassForName(className, true, clazzloader));
-            version = (Version)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(clazz));
+            AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, clazzloader));
+            version = (Version)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(clazz));
 
             Field[] fields = AccessController.doPrivileged(new PrivilegedGetFields(clazz));
             Field field = AccessController.doPrivileged(new PrivilegedGetDeclaredField(clazz, fieldName, true));
@@ -176,7 +176,7 @@
             Object[] parameters = { "TopLink Blah." };
             AccessController.doPrivileged(new PrivilegedMethodInvoker(method, version, parameters));
 
-            Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(clazz, null, true));
+            Constructor<?> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(clazz, null, true));
             Constructor declaredConstructor = AccessController.doPrivileged(new PrivilegedGetDeclaredConstructorFor(clazz, null, true));
             AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, null));
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/FieldTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/FieldTest.java
index 4e941f9..267921b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/FieldTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/performance/java/FieldTest.java
@@ -72,7 +72,7 @@
         PerformanceComparisonTestCase test = new PerformanceComparisonTestCase() {
             protected Object variable;
 
-            public Class object = Object.class;
+            public Class<Object> object = Object.class;
 
             @Override
             public void test() {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/plsql/PLSQLTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/plsql/PLSQLTest.java
index 02ebf23..df60c66 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/plsql/PLSQLTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/plsql/PLSQLTest.java
@@ -78,7 +78,7 @@
         if (this.result instanceof DatabaseRecord) {
             DatabaseRecord record = (DatabaseRecord)this.result;
             DatabaseRecord queryRecord = (DatabaseRecord)queryResult;
-            for (Iterator iterator = record.getFields().iterator(); iterator.hasNext(); ) {
+            for (Iterator<DatabaseField> iterator = record.getFields().iterator(); iterator.hasNext(); ) {
                 DatabaseField field = (DatabaseField)iterator.next();
                 Object value = record.get(field);
                 Object queryValue = queryRecord.get(field);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/ObjectLevelReadQueryTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/ObjectLevelReadQueryTest.java
index 6d64137..0fb01a3 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/ObjectLevelReadQueryTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/ObjectLevelReadQueryTest.java
@@ -50,7 +50,7 @@
     protected Session session;
 
     /** Some entity to be used in query. */
-    protected final Class entity = Employee.class;
+    protected final Class<Employee> entity = Employee.class;
 
     /** Some SQL call to be used in query. */
     protected final SQLCall call = new SQLCall("SELECT t0.EMP_ID FROM EMPLOYEE t0");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/QueryFrameworkTestSuite.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/QueryFrameworkTestSuite.java
index e15d557..95581d7 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/QueryFrameworkTestSuite.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/QueryFrameworkTestSuite.java
@@ -15,11 +15,12 @@
 package org.eclipse.persistence.testing.tests.queries;
 
 import java.util.*;
+
+import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.testing.models.employee.domain.*;
 import org.eclipse.persistence.testing.models.employee.domain.Project;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.expressions.*;
-import org.eclipse.persistence.internal.sessions.*;
 import org.eclipse.persistence.queries.*;
 import org.eclipse.persistence.sessions.Record;
 import org.eclipse.persistence.testing.framework.*;
@@ -689,7 +690,7 @@
                 ComplexQueryResult result = (ComplexQueryResult) getSession().executeQuery(query);
                 DatabaseRecord record = (DatabaseRecord)((List)result.getData()).get(0);
                 Iterator keySetKeys = record.keySet().iterator();
-                Iterator keys = record.getFields().iterator();
+                Iterator<DatabaseField> keys = record.getFields().iterator();
                 while (keys.hasNext() || keySetKeys.hasNext()) {
                     if (keys.next() != keySetKeys.next()) {
                         throwError("KeySet is incorrect.");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/CountReportQueryTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/CountReportQueryTest.java
index b6bd55f..3e9240a 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/CountReportQueryTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/CountReportQueryTest.java
@@ -57,8 +57,8 @@
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
         BigDecimal result =
-            (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0),
-                                                                            BigDecimal.class);
+                ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0),
+                                                                                BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " +
                                          result + ")");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/ParameterizedSubqueryTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/ParameterizedSubqueryTest.java
index 8f78c02..a929db1 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/ParameterizedSubqueryTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/ParameterizedSubqueryTest.java
@@ -96,7 +96,7 @@
     @Override
     public void test() {
         try {
-            List arguments = new ArrayList<Object>();
+            List<Object> arguments = new ArrayList<>();
             arguments.add(employeeId);
             arguments.add(projectName);
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9a.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9a.java
index b6adaf5..299830b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9a.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9a.java
@@ -51,7 +51,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9b.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9b.java
index 7cd068e..74f287c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9b.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9b.java
@@ -55,7 +55,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9c.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9c.java
index 15056cb..879d5a6 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9c.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9c.java
@@ -56,7 +56,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9d.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9d.java
index c9df6c2..e0c9565 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9d.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9d.java
@@ -58,7 +58,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9e.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9e.java
index 98ebe3d..a8e1398 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9e.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9e.java
@@ -58,7 +58,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9j.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9j.java
index 3b4c8f8..07f053b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9j.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/queries/report/Scenario1_9j.java
@@ -51,7 +51,7 @@
             throw new TestErrorException("ReportQuery test failed: The result size are different");
         }
         BigDecimal expected = (BigDecimal)((ReportQueryResult)expectedResults.firstElement()).getByIndex(0);
-        BigDecimal result = (BigDecimal)ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
+        BigDecimal result = ConversionManager.getDefaultManager().convertObject(((ReportQueryResult)results.firstElement()).getByIndex(0), BigDecimal.class);
         if (!Helper.compareBigDecimals(expected, result)) {
             throw new TestErrorException("ReportQuery test failed: The results did not match (" + expected + ", " + result + ")");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RMIServerManagerController.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RMIServerManagerController.java
index b31ddcd..a9593dc 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RMIServerManagerController.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RMIServerManagerController.java
@@ -54,9 +54,9 @@
             }
         } else {
             try {
-                Class cls = Class.forName(controllerClassName);
+                Class<?> cls = Class.forName(controllerClassName);
                 Class[] parameterTypes = { org.eclipse.persistence.sessions.Session.class };
-                Constructor constructor = cls.getConstructor(parameterTypes);
+                Constructor<?> constructor = cls.getConstructor(parameterTypes);
                 Object[] params = { getSession() };
                 controller = (RMIRemoteSessionController)constructor.newInstance(params);
             } catch (Exception exception) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RemoteConnectionExceptionsTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RemoteConnectionExceptionsTest.java
index fb00680..5d9e5bf 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RemoteConnectionExceptionsTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/remote/RemoteConnectionExceptionsTest.java
@@ -51,7 +51,7 @@
     protected Vector args;
 
     protected void setRemoteConnection(RemoteConnection remoteConnection) {
-        Class cls = remoteConnection.getClass();
+        Class<? extends RemoteConnection> cls = remoteConnection.getClass();
         if (!remoteConnectionClass.equals(cls)) {
             throw new TestProblemException("remoteConnection's type is different from the type used to create the test");
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/InsertUpdateStoredProcedureAdapter.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/InsertUpdateStoredProcedureAdapter.java
index 014cc85..190f6c8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/InsertUpdateStoredProcedureAdapter.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/InsertUpdateStoredProcedureAdapter.java
@@ -70,7 +70,7 @@
 
     protected int removeOptimisticLocking(Project project) {
         int removed = 0;
-        Iterator descriptors = project.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = project.getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor desc = (ClassDescriptor)descriptors.next();
             if (desc.getOptimisticLockingPolicy() != null) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/StoredProcedureGeneratorForAdapter.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/StoredProcedureGeneratorForAdapter.java
index 6da1deb..2f5a42c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/StoredProcedureGeneratorForAdapter.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/StoredProcedureGeneratorForAdapter.java
@@ -58,8 +58,8 @@
      */
     public void generateInsertStoredProceduresDefinitionsForProject(Project project) {
         verifyProject(project);
-        Map descrpts = project.getDescriptors();
-        Iterator iterator = descrpts.keySet().iterator();
+        Map<Class<?>, ClassDescriptor> descrpts = project.getDescriptors();
+        Iterator<Class<?>> iterator = descrpts.keySet().iterator();
         ClassDescriptor desc;
         while (iterator.hasNext()) {
             desc = (ClassDescriptor)descrpts.get(iterator.next());
@@ -78,8 +78,8 @@
 
     public void generateUpdateStoredProceduresDefinitionsForProject(Project project) {
         verifyProject(project);
-        Map descrpts = project.getDescriptors();
-        Iterator iterator = descrpts.keySet().iterator();
+        Map<Class<?>, ClassDescriptor> descrpts = project.getDescriptors();
+        Iterator<Class<?>> iterator = descrpts.keySet().iterator();
         ClassDescriptor desc;
         while (iterator.hasNext()) {
             desc = (ClassDescriptor)descrpts.get(iterator.next());
@@ -101,7 +101,7 @@
     }
 
     protected StoredProcedureDefinition generateStoredProcedureDefinition(ClassDescriptor desc, DatabaseQuery query, String namePrefix) {
-        Vector fields = desc.getFields();
+        Vector<DatabaseField> fields = desc.getFields();
         Hashtable namesNewToNames = null;
         if (shouldCapitalizeNames()) {
             namesNewToNames = new Hashtable();
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/SubstituteSequencingWithReturningPolicyAdapter.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/SubstituteSequencingWithReturningPolicyAdapter.java
index ccf7a29..4893340 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/SubstituteSequencingWithReturningPolicyAdapter.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/SubstituteSequencingWithReturningPolicyAdapter.java
@@ -74,7 +74,7 @@
 
     @Override
     public void updateProject(Project project, Session session) {
-        Iterator it = project.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> it = project.getDescriptors().values().iterator();
         while (it.hasNext()) {
             ClassDescriptor desc = (ClassDescriptor)it.next();
             if (desc.isAggregateDescriptor()) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/AdapterWithReturnObjectControl.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/AdapterWithReturnObjectControl.java
index 35b5f3b..4aabca2 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/AdapterWithReturnObjectControl.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/AdapterWithReturnObjectControl.java
@@ -73,7 +73,7 @@
     }
 
     public void getChange(org.eclipse.persistence.sessions.Record row, Session session, Object object1, Object object2, ClassDescriptor desc, boolean useUOW, WriteType writeType) {
-        for (Enumeration mappings = desc.getMappings().elements(); mappings.hasMoreElements(); ) {
+        for (Enumeration<DatabaseMapping> mappings = desc.getMappings().elements(); mappings.hasMoreElements(); ) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (!mapping.isReadOnly()) {
                 getChange(row, mapping, session, object1, object2, useUOW, writeType);
@@ -126,7 +126,7 @@
         Object object = desc.getObjectBuilder().buildNewInstance();
         ReadObjectQuery query = new ReadObjectQuery();
         query.setSession((AbstractSession)session);
-        for (Enumeration mappings = desc.getMappings().elements(); mappings.hasMoreElements(); ) {
+        for (Enumeration<DatabaseMapping> mappings = desc.getMappings().elements(); mappings.hasMoreElements(); ) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             mapping.readFromRowIntoObject((DatabaseRecord)row, query.getJoinedAttributeManager(), object, null, query, query.getSession(), true);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/BaseClass.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/BaseClass.java
index a7c02c7..aa5b87d 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/BaseClass.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/returning/model/BaseClass.java
@@ -80,8 +80,8 @@
 
     public BigDecimal[] build_a_plus_minus_b_BigDecimal(org.eclipse.persistence.sessions.Record row, Session session) {
         BigDecimal[] a_plus_minus_b_BigDecimal = new BigDecimal[2];
-        BigDecimal a = (BigDecimal)session.getDatasourcePlatform().convertObject(row.get(getFieldAName()), BigDecimal.class);
-        BigDecimal b = (BigDecimal)session.getDatasourcePlatform().convertObject(row.get(getFieldBName()), BigDecimal.class);
+        BigDecimal a = session.getDatasourcePlatform().convertObject(row.get(getFieldAName()), BigDecimal.class);
+        BigDecimal b = session.getDatasourcePlatform().convertObject(row.get(getFieldBName()), BigDecimal.class);
         if (a == null || b == null) {
             a_plus_minus_b_BigDecimal[0] = null;
             a_plus_minus_b_BigDecimal[1] = null;
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionbroker/VerifyClientBrokerCreationTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionbroker/VerifyClientBrokerCreationTest.java
index e165bda..41f1fdf 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionbroker/VerifyClientBrokerCreationTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionbroker/VerifyClientBrokerCreationTest.java
@@ -102,7 +102,7 @@
             throw new TestErrorException("Incorrect number of sessions in client broker");
 
         }
-        Iterator i = serverBroker.getSessionsByName().keySet().iterator();
+        Iterator<String> i = serverBroker.getSessionsByName().keySet().iterator();
         while (i.hasNext()){
             String key = (String)i.next();
             if (clientBroker.getSessionForName(key) == null) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLBasicTestModel.java
index 5be0553..6f7cfd8 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLBasicTestModel.java
@@ -80,9 +80,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -144,9 +144,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -177,9 +177,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
@@ -215,9 +215,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -283,9 +283,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -318,9 +318,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLTestModel.java
index a5599de..2758de3 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/sessionsxml/SessionsXMLTestModel.java
@@ -116,7 +116,7 @@
     public void addSessionsXMLSchemaWriteTest(TestSuite suite){
 
         try{
-            Class testCaseClass = Class.forName("org.eclipse.persistence.testing.tests.sessionsxml.SessionsXMLSchemaWriteTest");
+            Class<?> testCaseClass = Class.forName("org.eclipse.persistence.testing.tests.sessionsxml.SessionsXMLSchemaWriteTest");
             junit.framework.Test testCase = (junit.framework.Test)testCaseClass.getConstructor().newInstance();
             suite.addTest(testCase);
         } catch (Exception e){
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/DescriptorQueryManagerMultithreadedTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/DescriptorQueryManagerMultithreadedTest.java
index 46e6cc4..958b229 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/DescriptorQueryManagerMultithreadedTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/DescriptorQueryManagerMultithreadedTest.java
@@ -100,7 +100,7 @@
         super.setup();
         // save the current queries
         ClassDescriptor descriptor = getSession().getClassDescriptor(Employee.class);
-        Map queryTable = descriptor.getQueryManager().getQueries();
+        Map<String, List<DatabaseQuery>> queryTable = descriptor.getQueryManager().getQueries();
         if (queryTable != null) {
             queries = (Vector)queryTable.get(QUERY_STRING);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/MultithreadTestCase.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/MultithreadTestCase.java
index dd8c472..c2b5bd7 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/MultithreadTestCase.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/MultithreadTestCase.java
@@ -16,6 +16,8 @@
 
 import java.io.*;
 import java.util.*;
+
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.internal.helper.*;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.sessions.server.*;
@@ -238,8 +240,8 @@
             serverSession.login();
 
             Vector descriptors = new Vector();
-            for (Iterator iterator = databaseSession.getDescriptors().values().iterator();
-                     iterator.hasNext();) {
+            for (Iterator<ClassDescriptor> iterator = databaseSession.getDescriptors().values().iterator();
+                 iterator.hasNext();) {
                 descriptors.addElement(iterator.next());
             }
             serverSession.addDescriptors(descriptors);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/SimultaneousTestsModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/SimultaneousTestsModel.java
index 051e446..0ce90de 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/SimultaneousTestsModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/simultaneous/SimultaneousTestsModel.java
@@ -16,6 +16,9 @@
 
 import java.util.Vector;
 import org.eclipse.persistence.sessions.*;
+import org.eclipse.persistence.testing.models.employee.domain.Employee;
+import org.eclipse.persistence.testing.models.employee.domain.LargeProject;
+import org.eclipse.persistence.testing.models.employee.domain.SmallProject;
 import org.eclipse.persistence.tools.schemaframework.PopulationManager;
 import org.eclipse.persistence.testing.framework.*;
 import org.eclipse.persistence.testing.models.employee.relational.EmployeeSystem;
@@ -81,9 +84,9 @@
         suite.setDescription("This suite tests the reading of all the objects of each class in the employee demo.");
 
         Vector tests = new Vector();
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         tests.add(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/tableswithspacesmodel/EmployeeWithSpacesTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/tableswithspacesmodel/EmployeeWithSpacesTestModel.java
index 133af20..cfbd46c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/tableswithspacesmodel/EmployeeWithSpacesTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/tableswithspacesmodel/EmployeeWithSpacesTestModel.java
@@ -70,9 +70,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeWithSpacesDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -162,9 +162,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -203,9 +203,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/transactions/ReadingThroughWriteConnectionInTransactionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/transactions/ReadingThroughWriteConnectionInTransactionTest.java
index 906c408..698e787 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/transactions/ReadingThroughWriteConnectionInTransactionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/transactions/ReadingThroughWriteConnectionInTransactionTest.java
@@ -282,7 +282,7 @@
         if (getBackupReadConnections() != null) {
             return;
         }
-        List readConnections = getServerSession().getReadConnectionPool().getConnectionsAvailable();
+        List<Accessor> readConnections = getServerSession().getReadConnectionPool().getConnectionsAvailable();
         setBackupReadConnections(new Vector(readConnections));
         readConnections.clear();
         readConnections.add(null);
@@ -312,7 +312,7 @@
             // as the result the write connection pool is not shutdown and the connections are leaked.
             // Let's close these connections here.
             try {
-                for (Iterator poolsEnum = ((ServerSession)getServerSession()).getConnectionPools().values().iterator(); poolsEnum.hasNext();) {
+                for (Iterator<ConnectionPool> poolsEnum = ((ServerSession)getServerSession()).getConnectionPools().values().iterator(); poolsEnum.hasNext();) {
                     ((ConnectionPool)poolsEnum.next()).shutDown();
                 }
             } catch (Exception ex) {
@@ -340,7 +340,7 @@
      */
     private void restoreServerReadConnections() {
         if (getBackupReadConnections() != null) {
-            List readConnections = getServerSession().getReadConnectionPool().getConnectionsAvailable();
+            List<Accessor> readConnections = getServerSession().getReadConnectionPool().getConnectionsAvailable();
             readConnections.clear();
             readConnections.addAll(getBackupReadConnections());
             setBackupReadConnections(null);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unidirectional/UnidirectionalEmployeeBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unidirectional/UnidirectionalEmployeeBasicTestModel.java
index 0e35776..fb0039c 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unidirectional/UnidirectionalEmployeeBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unidirectional/UnidirectionalEmployeeBasicTestModel.java
@@ -67,7 +67,7 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.unidirectional.Employee.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.unidirectional.Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "0001")));
@@ -124,7 +124,7 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -148,7 +148,7 @@
         suite.setName("EmployeeComplexUpdateTestSuite");
         suite.setDescription("This suite tests the updating of each an employee by adding and/or removing managed employees and/or phones.");
 
-        Class employeeClass = Employee.class;
+        Class<Employee> employeeClass = Employee.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
         Employee originalEmployee = (Employee)manager.getObject(employeeClass, "0001");
         Employee otherEmployee = (Employee)manager.getObject(employeeClass, "0002");
@@ -378,7 +378,7 @@
             uow.registerObject(employee);
             uow.commit();
 
-            version[0] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[0] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             // test1 - add managed employee, manager's version should increment.
             uow = getSession().acquireUnitOfWork();
@@ -386,14 +386,14 @@
             Employee employeeClone = (Employee)uow.registerObject(employee);
             managerClone.addManagedEmployee(employeeClone);
             uow.commit();
-            version[1] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[1] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             // test2 - alter managed employee, manager's version should NOT increment.
             uow = getSession().acquireUnitOfWork();
             employeeClone = (Employee)uow.registerObject(employee);
             employeeClone.setFirstName("Altered");
             uow.commit();
-            version[2] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[2] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             // test3- remove managed employee, manager's version should increment.
             uow = getSession().acquireUnitOfWork();
@@ -401,7 +401,7 @@
             employeeClone = (Employee)uow.registerObject(employee);
             managerClone.removeManagedEmployee(employeeClone);
             uow.commit();
-            version[3] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[3] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             PhoneNumber phone = new PhoneNumber("home", "613", "1111111");
 
@@ -411,14 +411,14 @@
             PhoneNumber phoneClone = (PhoneNumber)uow.registerObject(phone);
             managerClone.addPhoneNumber(phoneClone);
             uow.commit();
-            version[4] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[4] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             // test5- alter phone, manager's version should increment.
             uow = getSession().acquireUnitOfWork();
             phoneClone = (PhoneNumber)uow.registerObject(phone);
             phoneClone.setType("work");
             uow.commit();
-            version[5] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[5] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
 
             // test6- remove phone, manager's version should increment.
             uow = getSession().acquireUnitOfWork();
@@ -426,7 +426,7 @@
             phoneClone = (PhoneNumber)uow.registerObject(phone);
             managerClone.removePhoneNumber(phoneClone);
             uow.commit();
-            version[6] = (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
+            version[6] = getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(manager, manager.getId(), getAbstractSession());
         }
         @Override
         public void verify() {
@@ -598,7 +598,7 @@
             super();
         }
         long getVersion(Employee emp) {
-            return (Long) getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, emp.getId(), getAbstractSession());
+            return getSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, emp.getId(), getAbstractSession());
         }
         @Override
         public void reset() {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/MutableAttributeObject.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/MutableAttributeObject.java
index 845d75b..18de696 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/MutableAttributeObject.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/MutableAttributeObject.java
@@ -17,6 +17,7 @@
 import java.util.Vector;
 
 import org.eclipse.persistence.descriptors.*;
+import org.eclipse.persistence.mappings.DatabaseMapping;
 import org.eclipse.persistence.mappings.foundation.*;
 import org.eclipse.persistence.tools.schemaframework.TableDefinition;
 
@@ -154,7 +155,7 @@
         descriptor.addDirectMapping("utilDate", "UTIL_DATE");
 
         /* Configure all of the mappings as mutable, except the id mapping */
-        Vector mappings = descriptor.getMappings();
+        Vector<DatabaseMapping> mappings = descriptor.getMappings();
         for (int i = 0; i < mappings.size(); i++) {
             AbstractDirectMapping mapping = (AbstractDirectMapping)mappings.get(i);
             if (!mapping.getAttributeName().equalsIgnoreCase("id")) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/NoIdentityMergeCloneTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/NoIdentityMergeCloneTest.java
index 0e75bcd..524e011 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/NoIdentityMergeCloneTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/NoIdentityMergeCloneTest.java
@@ -66,7 +66,7 @@
         // because it may not be the same for all descriptors.
         this.checkCacheState = new Hashtable(10);
         this.identityMapTypes = new Hashtable(10);
-        Iterator iterator = getSession().getProject().getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> iterator = getSession().getProject().getDescriptors().values().iterator();
         while (iterator.hasNext()) {
             ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
             checkCacheState.put(descriptor,
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedAlwaysTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedAlwaysTestModel.java
index 6109986..407a9a2 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedAlwaysTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedAlwaysTestModel.java
@@ -34,7 +34,7 @@
 
     @Override
     public void setup() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setUnitOfWorkCacheIsolationLevel(ClassDescriptor.ISOLATE_CACHE_ALWAYS);
         }
@@ -43,7 +43,7 @@
 
     @Override
     public void reset() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setUnitOfWorkCacheIsolationLevel(ClassDescriptor.ISOLATE_NEW_DATA_AFTER_TRANSACTION);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedClientSessionTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedClientSessionTestModel.java
index 58ff443..60a6a66 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedClientSessionTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkIsolatedClientSessionTestModel.java
@@ -35,7 +35,7 @@
 
     @Override
     public void setup() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.ISOLATED);
         }
@@ -45,7 +45,7 @@
 
     @Override
     public void reset() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheIsolation(CacheIsolationType.SHARED);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkSynchNewObjectsClientSessionTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkSynchNewObjectsClientSessionTestModel.java
index 618cb33..e1fe75f 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkSynchNewObjectsClientSessionTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/UnitOfWorkSynchNewObjectsClientSessionTestModel.java
@@ -27,7 +27,7 @@
 
     @Override
     public void setup() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheSynchronizationType(ClassDescriptor.SEND_NEW_OBJECTS_WITH_CHANGES);
         }
@@ -36,7 +36,7 @@
 
     @Override
     public void reset() {
-        for (Iterator descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
+        for (Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator(); descriptors.hasNext(); ) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             descriptor.setCacheSynchronizationType(ClassDescriptor.SEND_OBJECT_CHANGES);
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/changeflag/EmployeeChangeFlagBasicTestModel.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/changeflag/EmployeeChangeFlagBasicTestModel.java
index d7e073e..fe797b2 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/changeflag/EmployeeChangeFlagBasicTestModel.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/changeflag/EmployeeChangeFlagBasicTestModel.java
@@ -102,9 +102,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new EmployeeDeleteTest(manager.getObject(employeeClass, "0001")));
@@ -169,9 +169,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -221,9 +221,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
-        Class largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
-        Class smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
+        Class<Employee> employeeClass = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+        Class<LargeProject> largeProjectClass = org.eclipse.persistence.testing.models.employee.domain.LargeProject.class;
+        Class<SmallProject> smallProjectClass = org.eclipse.persistence.testing.models.employee.domain.SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/transactionisolation/TransactionIsolationBuildObjectCacheHitTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/transactionisolation/TransactionIsolationBuildObjectCacheHitTest.java
index 2dc05aa..7114c1d 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/transactionisolation/TransactionIsolationBuildObjectCacheHitTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/unitofwork/transactionisolation/TransactionIsolationBuildObjectCacheHitTest.java
@@ -77,7 +77,7 @@
     @Override
     public void verify() {
         // check for duplicates
-        List statements = sqlTracker.getSqlStatements();
+        List<String> statements = sqlTracker.getSqlStatements();
         Vector errors = new Vector();
         for (int i = 0; i < statements.size(); i++) {
             String statement = (String)statements.get(i);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ClientServerTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ClientServerTest.java
index 310cb63..0251df6 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ClientServerTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ClientServerTest.java
@@ -18,6 +18,7 @@
 import java.util.List;
 
 import org.eclipse.persistence.exceptions.ValidationException;
+import org.eclipse.persistence.internal.databaseaccess.Accessor;
 import org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor;
 import org.eclipse.persistence.sessions.DatabaseLogin;
 import org.eclipse.persistence.sessions.DatabaseSession;
@@ -117,8 +118,8 @@
         try {
             int counter = 0;
             ConnectionPool pool = server.serverSession.getConnectionPools().get("default");
-            List connections = pool.getConnectionsAvailable();
-            for (Iterator iterator = connections.iterator(); iterator.hasNext(); ) {
+            List<Accessor> connections = pool.getConnectionsAvailable();
+            for (Iterator<Accessor> iterator = connections.iterator(); iterator.hasNext(); ) {
                 if (((DatabaseAccessor)iterator.next()).isConnected()) {
                     counter = counter + 1;
                 }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ConstructingDescriptorExceptionTests.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ConstructingDescriptorExceptionTests.java
index 75e30ed..5f16c84 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ConstructingDescriptorExceptionTests.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ConstructingDescriptorExceptionTests.java
@@ -50,7 +50,7 @@
     @Override
     public void test() throws NoSuchMethodException {
         try {
-            Class javaClass = ConstructingDescriptorExceptionTests.class;
+            Class<ConstructingDescriptorExceptionTests> javaClass = ConstructingDescriptorExceptionTests.class;
             RelationalDescriptor descriptor = new RelationalDescriptor();
             descriptor.setJavaClass(javaClass);
             TestErrorException dummyException = new TestErrorException("no ERROR");
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/EmployeeWithProblems.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/EmployeeWithProblems.java
index d5fef5c..e36d3ed 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/EmployeeWithProblems.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/EmployeeWithProblems.java
@@ -80,8 +80,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time)session.getPlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time)session.getPlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getPlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getPlatform().convertObject(row.get("END_TIME"), Time.class);
         //    return hours;
     }
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/GetTableNameTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/GetTableNameTest.java
index bedd208..423a845 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/GetTableNameTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/GetTableNameTest.java
@@ -18,6 +18,8 @@
 import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.testing.framework.TestErrorException;
 
+import java.util.Iterator;
+
 
 public class GetTableNameTest extends ExceptionTest {
     public GetTableNameTest() {
@@ -34,7 +36,7 @@
     public void test() {
         try { //test if getTableName() throws casting exception
             org.eclipse.persistence.testing.models.employee.relational.EmployeeProject project = new org.eclipse.persistence.testing.models.employee.relational.EmployeeProject();
-            java.util.Iterator iterator = project.getDescriptors().values().iterator();
+            Iterator<ClassDescriptor> iterator = project.getDescriptors().values().iterator();
             while (iterator.hasNext()) {
                 ((ClassDescriptor)iterator.next()).getTableName();
             }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidAttributeTypeForProxyIndirectionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidAttributeTypeForProxyIndirectionTest.java
index a8f6487..fcc8e9e 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidAttributeTypeForProxyIndirectionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidAttributeTypeForProxyIndirectionTest.java
@@ -20,6 +20,7 @@
 import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.internal.indirection.ProxyIndirectionPolicy;
 import org.eclipse.persistence.mappings.OneToManyMapping;
+import org.eclipse.persistence.testing.models.employee.domain.Employee;
 
 
 //Created by Ian Reid
@@ -32,7 +33,7 @@
     }
 
     IntegrityChecker orgIntegrityChecker;
-    Class attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+    Class<Employee> attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
     Class[] targetInterfaces = { InvalidAttributeTypeForProxyIndirectionTest.class };
     OneToManyMapping mapping = new OneToManyMapping();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidGetMethodReturnTypeForProxyIndirectionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidGetMethodReturnTypeForProxyIndirectionTest.java
index 5e08243..9c5504b 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidGetMethodReturnTypeForProxyIndirectionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidGetMethodReturnTypeForProxyIndirectionTest.java
@@ -20,6 +20,7 @@
 import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.internal.indirection.ProxyIndirectionPolicy;
 import org.eclipse.persistence.mappings.OneToManyMapping;
+import org.eclipse.persistence.testing.models.employee.domain.Employee;
 
 
 //Created by Ian Reid
@@ -32,7 +33,7 @@
     }
 
     IntegrityChecker orgIntegrityChecker;
-    Class attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+    Class<Employee> attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
     Class[] targetInterfaces = { InvalidAttributeTypeForProxyIndirectionTest.class };
     OneToManyMapping mapping = new OneToManyMapping();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidSetMethodParameterTypeForProxyIndirectionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidSetMethodParameterTypeForProxyIndirectionTest.java
index 347d456..0485e20 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidSetMethodParameterTypeForProxyIndirectionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/InvalidSetMethodParameterTypeForProxyIndirectionTest.java
@@ -20,6 +20,7 @@
 import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.internal.indirection.ProxyIndirectionPolicy;
 import org.eclipse.persistence.mappings.OneToManyMapping;
+import org.eclipse.persistence.testing.models.employee.domain.Employee;
 
 
 //Created by Ian Reid
@@ -31,7 +32,7 @@
     }
 
     IntegrityChecker orgIntegrityChecker;
-    Class attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
+    Class<Employee> attributeType = org.eclipse.persistence.testing.models.employee.domain.Employee.class;
     Class[] targetInterfaces = { InvalidAttributeTypeForProxyIndirectionTest.class };
     OneToManyMapping mapping = new OneToManyMapping();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ServerSessionReadPoolTypeTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ServerSessionReadPoolTypeTest.java
index 5a2cdb9..61376b0 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ServerSessionReadPoolTypeTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/validation/ServerSessionReadPoolTypeTest.java
@@ -41,7 +41,7 @@
 
     @Override
     public void verify() {
-        Class readPoolClass = serverSession.getReadConnectionPool().getClass();
+        Class<? extends ConnectionPool> readPoolClass = serverSession.getReadConnectionPool().getClass();
         String readPoolClassName = Helper.getShortClassName(readPoolClass);
         if (serverSession.getLogin().shouldUseExternalConnectionPooling()) {
             if (!readPoolClass.equals(ExternalConnectionPool.class)) {
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/CollectionMappingIsMapPolicyTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/CollectionMappingIsMapPolicyTest.java
index 6b7a748..f20d802 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/CollectionMappingIsMapPolicyTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/CollectionMappingIsMapPolicyTest.java
@@ -21,7 +21,6 @@
 import org.eclipse.persistence.internal.queries.MapContainerPolicy;
 import org.eclipse.persistence.mappings.CollectionMapping;
 import org.eclipse.persistence.mappings.DatabaseMapping;
-import org.eclipse.persistence.mappings.ForeignReferenceMapping;
 import org.eclipse.persistence.testing.models.employee.domain.Employee;
 
 
@@ -46,7 +45,7 @@
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
         policy = new MapContainerPolicy();
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/EmployeeWorkbenchIntegrationSystem.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/EmployeeWorkbenchIntegrationSystem.java
index b2465c3..b011853 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/EmployeeWorkbenchIntegrationSystem.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/EmployeeWorkbenchIntegrationSystem.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -78,7 +78,7 @@
 
     protected void buildInitialProject() {
         initialProject = new EmployeeProject();
-        Map<Class, ClassDescriptor> descriptors = initialProject.getDescriptors();
+        Map<Class<?>, ClassDescriptor> descriptors = initialProject.getDescriptors();
 
         // Amend the employee descriptor
         ClassDescriptor employeeDescriptor = descriptors.get(Employee.class);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/GetRelationshipPartnerAttributeNameIsNotNullTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/GetRelationshipPartnerAttributeNameIsNotNullTest.java
index 0a944e3..227d570 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/GetRelationshipPartnerAttributeNameIsNotNullTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/GetRelationshipPartnerAttributeNameIsNotNullTest.java
@@ -41,7 +41,7 @@
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/InheritanceWorkbenchIntegrationSystem.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/InheritanceWorkbenchIntegrationSystem.java
index e71fc5f..c9892b3 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/InheritanceWorkbenchIntegrationSystem.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/InheritanceWorkbenchIntegrationSystem.java
@@ -32,7 +32,7 @@
 
         // Must clear 1-way transformation added in amendment, otherwise will be added twice.
         ClassDescriptor descriptor = project.getDescriptor(Animal.class);
-        for (Iterator mappings = descriptor.getMappings().iterator(); mappings.hasNext(); ) {
+        for (Iterator<DatabaseMapping> mappings = descriptor.getMappings().iterator(); mappings.hasNext(); ) {
             DatabaseMapping mapping = (DatabaseMapping) mappings.next();
             if (mapping.isWriteOnly()) {
                 descriptor.getMappings().remove(mapping);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/MappingIsReadOnlyTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/MappingIsReadOnlyTest.java
index 3c9f94b..bb76ef0 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/MappingIsReadOnlyTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/MappingIsReadOnlyTest.java
@@ -38,7 +38,7 @@
     protected void setup() {
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
             mappingToModify.readOnly();
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldUseJoiningTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldUseJoiningTest.java
index bc02d06..c93c970 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldUseJoiningTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldUseJoiningTest.java
@@ -39,7 +39,7 @@
     protected void setup() {
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldVerifyDeleteTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldVerifyDeleteTest.java
index ed8c1ab..131d22e 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldVerifyDeleteTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/OneToOneMappingShouldVerifyDeleteTest.java
@@ -41,7 +41,7 @@
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorUnicodeTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorUnicodeTest.java
index ec55c9c..4a5de02 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorUnicodeTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorUnicodeTest.java
@@ -48,7 +48,7 @@
                throw new TestErrorException("Project class generation compile failed. This could either be a legitimate compile " +
                         "failure, or could result if you do not have the tools.jar from your JDK on the classpath.");
             }
-            Class projectClass = Class.forName(PROJECT_FILE);
+            Class<?> projectClass = Class.forName(PROJECT_FILE);
             unicodeProject = (org.eclipse.persistence.sessions.Project)projectClass.getConstructor().newInstance();
         } catch (Exception exception) {
             throw new RuntimeException("Project class generation failed.It may be possible to solve this issue by adding the tools.jar from your JDK to the classpath.", exception);
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorWithCMPDescriptorTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorWithCMPDescriptorTest.java
index e8e2b62..5119d01 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorWithCMPDescriptorTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ProjectClassGeneratorWithCMPDescriptorTest.java
@@ -89,7 +89,7 @@
                          "failure, or could result if you do not have the tools.jar from your JDK on the classpath.");
             }
             //Class projectClass = (Class) getSession().getPlatform().getConversionManager().convertObject(projectShortClassName, ClassConstants.CLASS);
-            Class projectClass = Class.forName(projectShortClassName);
+            Class<?> projectClass = Class.forName(projectShortClassName);
             generatedProject = (org.eclipse.persistence.sessions.Project)projectClass.getConstructor().newInstance();
         } catch (Exception exception) {
             throw new TestErrorException("Failed obtain new project instance from the generated and compiled project. " +
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseBatchReadingOnMappingTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseBatchReadingOnMappingTest.java
index d434728..32331f6 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseBatchReadingOnMappingTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseBatchReadingOnMappingTest.java
@@ -40,7 +40,7 @@
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseCacheIdentityMapTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseCacheIdentityMapTest.java
index 6bff8b2..e710be1 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseCacheIdentityMapTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/ShouldUseCacheIdentityMapTest.java
@@ -36,7 +36,7 @@
     protected void setup() {
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
-        for (Iterator iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
+        for (Iterator<ClassDescriptor> iterator = project.getDescriptors().values().iterator(); iterator.hasNext(); ) {
             descriptorToModify = (ClassDescriptor)iterator.next();
             descriptorToModify.useCacheIdentityMap();
         }
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransformationMappingUsesBasicIndirectionTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransformationMappingUsesBasicIndirectionTest.java
index 2064bdb..41fa1e7 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransformationMappingUsesBasicIndirectionTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransformationMappingUsesBasicIndirectionTest.java
@@ -40,7 +40,7 @@
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransparentIndirectionPolicyInstanceTest.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransparentIndirectionPolicyInstanceTest.java
index 42250d3..4da49af 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransparentIndirectionPolicyInstanceTest.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/TransparentIndirectionPolicyInstanceTest.java
@@ -42,7 +42,7 @@
         getSession().getIdentityMapAccessor().initializeAllIdentityMaps();
 
         descriptorToModify = project.getDescriptors().get(Employee.class);
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/UseTransparentMapOnCollectionMapping.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/UseTransparentMapOnCollectionMapping.java
index ce65335..316dd60 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/UseTransparentMapOnCollectionMapping.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/UseTransparentMapOnCollectionMapping.java
@@ -49,7 +49,7 @@
         descriptorToModify = project.getDescriptors().get(Employee.class);
         policy = new TransparentIndirectionPolicy();
         mapPolicy = new MapContainerPolicy();
-        for (Enumeration mappingsEnum = (descriptorToModify.getMappings()).elements();
+        for (Enumeration<DatabaseMapping> mappingsEnum = (descriptorToModify.getMappings()).elements();
              mappingsEnum.hasMoreElements(); ) {
             mappingToModify = (DatabaseMapping)mappingsEnum.nextElement();
 
diff --git a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/WorkbenchIntegrationSystemHelper.java b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/WorkbenchIntegrationSystemHelper.java
index de8a088..99d04d5 100644
--- a/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/WorkbenchIntegrationSystemHelper.java
+++ b/foundation/eclipselink.core.test/src/it/java/org/eclipse/persistence/testing/tests/workbenchintegration/WorkbenchIntegrationSystemHelper.java
@@ -41,7 +41,7 @@
                 throw new TestErrorException("Project class generation compile failed. This could either be a legitimate compile " +
                          "failure, or could result if you do not have the tools.jar from your JDK on the classpath.");
             }
-            Class projectClass = Class.forName(filename);
+            Class<?> projectClass = Class.forName(filename);
             return (Project) projectClass.getConstructor().newInstance();
         } catch (Exception exception) {
             throw new RuntimeException("Project class generation failed.It may be possible to solve this issue by adding the tools.jar from your JDK to the classpath.", exception);
diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/platform/server/wls/WebLogic_12_PlatformTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/platform/server/wls/WebLogic_12_PlatformTest.java
index 234183b..baefacc 100644
--- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/platform/server/wls/WebLogic_12_PlatformTest.java
+++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/platform/server/wls/WebLogic_12_PlatformTest.java
@@ -142,7 +142,7 @@
         Field instanceField = null;
         Object ctxHelperInstance = null;
         try {
-            Class ctxHelperClass = Class.forName("org.eclipse.persistence.platform.server.wls.WebLogic_12_Platform$ContextHelper");
+            Class<?> ctxHelperClass = Class.forName("org.eclipse.persistence.platform.server.wls.WebLogic_12_Platform$ContextHelper");
             c = ctxHelperClass.getDeclaredConstructors()[0];
             c.setAccessible(true);
             ctxHelperInstance = c.newInstance(imgr.getClass(), ICtx.class.getName());
diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/security/JCEEncryptionTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/security/JCEEncryptionTest.java
index 5bf2dc5..a916f28 100644
--- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/security/JCEEncryptionTest.java
+++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/security/JCEEncryptionTest.java
@@ -46,7 +46,7 @@
     private Securable convertToEncryptionObject(String encryptionClassName) {
         try {
             ConversionManager cm = ConversionManager.getDefaultManager();
-            Class securableClass = (Class)cm.convertObject(encryptionClassName, Class.class);
+            Class securableClass = cm.convertObject(encryptionClassName, Class.class);
             return (Securable)securableClass.getConstructor().newInstance();
         } catch (Throwable e) {
             return null;
diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectListTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectListTest.java
index 362fc90..d9240d3 100644
--- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectListTest.java
+++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectListTest.java
@@ -275,7 +275,7 @@
     public void testIterator() {
         int i = 0;
 
-        for (Iterator stream = testList.iterator(); stream.hasNext(); i++) {
+        for (Iterator<String> stream = testList.iterator(); stream.hasNext(); i++) {
             stream.next();
         }
         assertEquals(list.size(), i);
@@ -306,7 +306,7 @@
     public void testListIterator1() {
         int i = 0;
 
-        for (ListIterator stream = testList.listIterator(); stream.hasNext(); i++) {
+        for (ListIterator<String> stream = testList.listIterator(); stream.hasNext(); i++) {
             stream.next();
         }
         assertEquals(list.size(), i);
@@ -317,7 +317,7 @@
     public void testListIterator2() {
         int i = 0;
 
-        for (ListIterator stream = testList.listIterator(2); stream.hasNext(); i++) {
+        for (ListIterator<String> stream = testList.listIterator(2); stream.hasNext(); i++) {
             stream.next();
         }
         assertEquals(list.size(), i + 2);
diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectMapTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectMapTest.java
index f852fa6..6fd9c0d 100644
--- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectMapTest.java
+++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectMapTest.java
@@ -533,10 +533,10 @@
         map.putAll(temp);
         testMap.putAll(temp);
         assertEquals(map, testMap);
-        for (Enumeration stream = temp.keys(); stream.hasMoreElements();) {
+        for (Enumeration<String> stream = temp.keys(); stream.hasMoreElements();) {
             assertTrue(testMap.containsKey(stream.nextElement()));
         }
-        for (Enumeration stream = temp.elements(); stream.hasMoreElements();) {
+        for (Enumeration<String> stream = temp.elements(); stream.hasMoreElements();) {
             assertTrue(testMap.contains(stream.nextElement()));
         }
         assertAddEvents(2);
@@ -564,7 +564,7 @@
     public void testValues() {
         assertEquals(map.size(), testMap.values().size());
 
-        for (Iterator stream = testMap.values().iterator(); stream.hasNext();) {
+        for (Iterator<String> stream = testMap.values().iterator(); stream.hasNext();) {
             assertTrue(map.contains(stream.next()));
         }
         map.values().removeAll(testMap.values());
diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectSetTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectSetTest.java
index b408cf5..1e71623 100644
--- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectSetTest.java
+++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/transparentindirection/IndirectSetTest.java
@@ -182,7 +182,7 @@
     @Test
     public void testIterator() {
         int i = 0;
-        for (Iterator stream = testList.iterator(); stream.hasNext(); i++) {
+        for (Iterator<String> stream = testList.iterator(); stream.hasNext(); i++) {
             stream.next();
         }
         assertEquals(list.size(), i);
diff --git a/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/rmi/IIOP/RMIServerManagerController.java b/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/rmi/IIOP/RMIServerManagerController.java
index c8eb254..b26aa60 100644
--- a/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/rmi/IIOP/RMIServerManagerController.java
+++ b/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/rmi/IIOP/RMIServerManagerController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -54,7 +54,7 @@
             }
         } else {
             try {
-                Class cls = Class.forName(controllerClassName);
+                Class<?> cls = Class.forName(controllerClassName);
                 Class[] parameterTypes = { org.eclipse.persistence.sessions.Session.class };
                 Constructor constructor = cls.getConstructor(parameterTypes);
                 Object[] params = { getSession() };
diff --git a/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/suncorba/CORBAServerManagerController.java b/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/suncorba/CORBAServerManagerController.java
index 5b70904..ec833f8 100644
--- a/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/suncorba/CORBAServerManagerController.java
+++ b/foundation/org.eclipse.persistence.corba/src/it/java/org/eclipse/persistence/testing/tests/remote/suncorba/CORBAServerManagerController.java
@@ -47,7 +47,7 @@
             controller = new CORBARemoteSessionControllerDispatcher((getSession()));
         } else {
             try {
-                Class cls = Class.forName(controllerClassName);
+                Class<?> cls = Class.forName(controllerClassName);
                 Class[] parameterTypes = { org.eclipse.persistence.sessions.Session.class };
                 Constructor constructor = cls.getConstructor(parameterTypes);
                 java.lang.Object[] params = { getSession() };
diff --git a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/internal/sessions/coordination/corba/sun/_SunCORBAConnectionImplBase.java b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/internal/sessions/coordination/corba/sun/_SunCORBAConnectionImplBase.java
index 2d0278a..c65b2da 100644
--- a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/internal/sessions/coordination/corba/sun/_SunCORBAConnectionImplBase.java
+++ b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/internal/sessions/coordination/corba/sun/_SunCORBAConnectionImplBase.java
@@ -35,7 +35,7 @@
     public _SunCORBAConnectionImplBase() {
     }
 
-    private static Hashtable _methods = new Hashtable();
+    private static Hashtable<String, Integer> _methods = new Hashtable<>();
 
     static {
         _methods.put("executeCommand", 0);
diff --git a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
index ba61cb5..c2d6674 100644
--- a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
+++ b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/corba/sun/CORBAConnection.java
@@ -142,15 +142,16 @@
             throw transporter.getException();
         }
 
-        Vector serverNextPageObjects = (Vector)transporter.getObject();
+        @SuppressWarnings({"unchecked"})
+        Vector<Object> serverNextPageObjects = (Vector<Object>)transporter.getObject();
         if (serverNextPageObjects == null) {
             cursoredStreamClose(remoteCursoredStream.getID());
             return null;
         }
-        Vector clientNextPageObjects = serverNextPageObjects;
+        Vector<Object> clientNextPageObjects = serverNextPageObjects;
         if (query.isReadAllQuery() && (!query.isReportQuery())) {// could be DataReadQuery
-            clientNextPageObjects = new Vector(serverNextPageObjects.size());
-            for (Enumeration objEnum = serverNextPageObjects.elements(); objEnum.hasMoreElements();) {
+            clientNextPageObjects = new Vector<>(serverNextPageObjects.size());
+            for (Enumeration<Object> objEnum = serverNextPageObjects.elements(); objEnum.hasMoreElements();) {
                 // 2612538 - the default size of Map (32) is appropriate
                 Object clientObject = session.getObjectCorrespondingTo(objEnum.nextElement(), transporter.getObjectDescriptors(), new IdentityHashMap(), (ObjectLevelReadQuery)query);
                 clientNextPageObjects.addElement(clientObject);
diff --git a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
index 1eddea8..4249ad4 100644
--- a/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
+++ b/foundation/org.eclipse.persistence.corba/src/main/java/org/eclipse/persistence/sessions/remote/rmi/iiop/RMIConnection.java
@@ -191,15 +191,16 @@
             throw transporter.getException();
         }
 
-        Vector serverNextPageObjects = (Vector)transporter.getObject();
+        @SuppressWarnings({"unchecked"})
+        Vector<Object> serverNextPageObjects = (Vector<Object>)transporter.getObject();
         if (serverNextPageObjects == null) {
             cursoredStreamClose(remoteCursoredStream.getID());
             return null;
         }
-        Vector clientNextPageObjects = serverNextPageObjects;
+        Vector<Object> clientNextPageObjects = serverNextPageObjects;
         if (query.isReadAllQuery() && (!query.isReportQuery())) {// could be DataReadQuery
-            clientNextPageObjects = new Vector(serverNextPageObjects.size());
-            for (Enumeration objEnum = serverNextPageObjects.elements(); objEnum.hasMoreElements();) {
+            clientNextPageObjects = new Vector<>(serverNextPageObjects.size());
+            for (Enumeration<Object> objEnum = serverNextPageObjects.elements(); objEnum.hasMoreElements();) {
                 // 2612538 - the default size of Map (32) is appropriate
                 Object clientObject = session.getObjectCorrespondingTo(objEnum.nextElement(), transporter.getObjectDescriptors(), new IdentityHashMap(), (ObjectLevelReadQuery)query);
                 clientNextPageObjects.addElement(clientObject);
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/DeleteAllQueryTestHelper.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/DeleteAllQueryTestHelper.java
index a2be2a0..28d36d8 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/DeleteAllQueryTestHelper.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/DeleteAllQueryTestHelper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -167,7 +167,7 @@
 
         if(handleChildren) {
             if(descriptor.hasInheritance() && descriptor.getInheritancePolicy().hasChildren()) {
-                Iterator it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
+                Iterator<ClassDescriptor> it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
                 while(it.hasNext()) {
                     ClassDescriptor childDescriptor = (ClassDescriptor)it.next();
                     Class childReferenceClass = childDescriptor.getJavaClass();
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JUnitTestCase.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JUnitTestCase.java
index fcb84e6..2498ddf 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JUnitTestCase.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JUnitTestCase.java
@@ -14,6 +14,8 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.framework;
 
+import junit.framework.Test;
+
 import java.lang.reflect.*;
 import java.util.Enumeration;
 import java.util.Vector;
@@ -124,7 +126,7 @@
             throw new TestProblemException("suite method failed on class " + junitTestCaseClass.getName() + " with: " + exception.toString(), exception);
         }
         Vector testsOut = new Vector(suite.countTestCases());
-        Enumeration tests = suite.tests();
+        Enumeration<Test> tests = suite.tests();
         while (tests.hasMoreElements()) {
             junit.framework.TestCase testCaseToAdd = (junit.framework.TestCase)tests.nextElement();
             testsOut.addElement(new JUnitTestCase(testCaseToAdd));
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JoinedAttributeTestHelper.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JoinedAttributeTestHelper.java
index 8d019cb..5060f02 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JoinedAttributeTestHelper.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/JoinedAttributeTestHelper.java
@@ -31,7 +31,6 @@
 import java.util.*;
 import org.eclipse.persistence.internal.identitymaps.CacheKey;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
-import org.eclipse.persistence.mappings.CollectionMapping;
 import org.eclipse.persistence.mappings.ForeignReferenceMapping;
 import org.eclipse.persistence.queries.ObjectLevelReadQuery;
 import org.eclipse.persistence.queries.InMemoryQueryIndirectionPolicy;
@@ -99,7 +98,7 @@
         for (Iterator iterator = collectionResult.iterator(); iterator.hasNext(); ) {
             Object object = iterator.next();
             boolean remove = false;
-            for (Iterator joinsIterator = queryWithJoins.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinsIterator.hasNext(); ) {
+            for (Iterator<Expression> joinsIterator = queryWithJoins.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinsIterator.hasNext(); ) {
                 Expression joinExpression = (Expression)joinsIterator.next();
                 joinExpression.getBuilder().setSession(session);
                 joinExpression.getBuilder().setQueryClass(queryWithJoins.getReferenceClass());
@@ -156,7 +155,7 @@
             if (excluded.contains(new CacheKey(session.getId(object)))) {
                 iterator.remove();
             } else {
-                for (Iterator joinsIterator = queryWithJoins.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinsIterator.hasNext(); ) {
+                for (Iterator<Expression> joinsIterator = queryWithJoins.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinsIterator.hasNext(); ) {
                     Expression joinExpression = (Expression)joinsIterator.next();
                     // Instantiate value holders that should be instantiated.
                     joinExpression.valueFromObject(object, session, null, valueHolderPolicy, false);
@@ -344,7 +343,7 @@
             return errorMsg;
         }
 
-        Vector mappings = desc.getMappings();
+        Vector<DatabaseMapping> mappings = desc.getMappings();
         for (int index = 0; index < mappings.size(); index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
             String mappingErrorMsg = compareAttributes(obj1, obj2, mapping, session, processed);
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/LoadBuildSystem.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/LoadBuildSystem.java
index d996466..3826da5 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/LoadBuildSystem.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/LoadBuildSystem.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -173,7 +173,7 @@
         UnitOfWork uow = session.acquireUnitOfWork();
         while (summaries.hasNext()) {
             LoadBuildSummary summary = (LoadBuildSummary)summaries.next();
-            for (Iterator iterator = summary.getSummaries().iterator(); iterator.hasNext(); ) {
+            for (Iterator<TestResultsSummary> iterator = summary.getSummaries().iterator(); iterator.hasNext(); ) {
                 ((TestResultsSummary)iterator.next()).getResults();
             }
             //for (int index = 0; index < 10; index++) {
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestExecutor.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestExecutor.java
index 30c0f7a..a4fc796 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestExecutor.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestExecutor.java
@@ -18,6 +18,7 @@
 import java.util.*;
 import jakarta.persistence.*;
 
+import junit.framework.TestFailure;
 import org.eclipse.persistence.config.PersistenceUnitProperties;
 import org.eclipse.persistence.sessions.*;
 import org.eclipse.persistence.sessions.server.*;
@@ -555,7 +556,7 @@
                 log.write(CR);
                 log.write(indent + "Failures:");
                 log.write(CR);
-                for (Enumeration failures = result.failures(); failures.hasMoreElements();) {
+                for (Enumeration<TestFailure> failures = result.failures(); failures.hasMoreElements();) {
                     junit.framework.TestFailure failure = (junit.framework.TestFailure)failures.nextElement();
                     String testString = failure.failedTest().toString();
                     int startIndex = testString.indexOf("(");
@@ -576,7 +577,7 @@
                 log.write(CR);
                 log.write(indent + "Errors:");
                 log.write(CR);
-                for (Enumeration errors = result.errors(); errors.hasMoreElements();) {
+                for (Enumeration<TestFailure> errors = result.errors(); errors.hasMoreElements();) {
                     junit.framework.TestFailure error = (junit.framework.TestFailure)errors.nextElement();
                     String testString = error.failedTest().toString();
                     int startIndex = testString.indexOf("(");
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestSystem.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestSystem.java
index 4d6f772..414bad6 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestSystem.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestSystem.java
@@ -495,7 +495,7 @@
     public void useOracleThin(String databaseURL, String userName, String password) {
         DatabasePlatform platform = null;
         try{
-            Class platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
+            Class<?> platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
             platform = (DatabasePlatform)platformClass.getConstructor().newInstance();
         } catch (Exception e){
             platform = new org.eclipse.persistence.platform.database.OraclePlatform();
@@ -519,7 +519,7 @@
     public void useOracle8Thin(String databaseURL, String userName, String password) {
         DatabasePlatform platform = null;
         try{
-            Class platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle8Platform");
+            Class<?> platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle8Platform");
             platform = (DatabasePlatform)platformClass.getConstructor().newInstance();
         } catch (Exception e){
             platform = new org.eclipse.persistence.platform.database.OraclePlatform();
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestVariation.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestVariation.java
index 1fdf031..969cf9a 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestVariation.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/TestVariation.java
@@ -150,7 +150,7 @@
         Vector candidateFieldsNames = new Vector();
 
         for (int i = 0; i < allMethods.length; i++) {
-            Class returnType = allMethods[i].getReturnType();
+            Class<?> returnType = allMethods[i].getReturnType();
             Class[] parameterTypes = allMethods[i].getParameterTypes();
             if (returnType.equals(boolean.class) && (parameterTypes.length == 0)) {
                 candidateGetters.addElement(allMethods[i]);
@@ -163,7 +163,7 @@
             }
         }
         for (int i = 0; i < allFields.length; i++) {
-            Class type = allFields[i].getType();
+            Class<?> type = allFields[i].getType();
             if (type.equals(boolean.class)) {
                 candidateFields.addElement(allFields[i]);
                 candidateFieldsNames.addElement(allFields[i].getName().toLowerCase());
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/UpdateAllQueryTestHelper.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/UpdateAllQueryTestHelper.java
index fe3e49c..dfa43c6 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/UpdateAllQueryTestHelper.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/UpdateAllQueryTestHelper.java
@@ -217,7 +217,7 @@
 
         if(handleChildren) {
             if(descriptor.hasInheritance() && descriptor.getInheritancePolicy().hasChildren()) {
-                Iterator it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
+                Iterator<ClassDescriptor> it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
                 while(it.hasNext()) {
                     ClassDescriptor childDescriptor = (ClassDescriptor)it.next();
                     Class childReferenceClass = childDescriptor.getJavaClass();
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/WriteObjectTest.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/WriteObjectTest.java
index 9b15d5c..ceab547 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/WriteObjectTest.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/WriteObjectTest.java
@@ -20,6 +20,8 @@
 import org.eclipse.persistence.mappings.*;
 import org.eclipse.persistence.mappings.foundation.*;
 
+import java.util.Vector;
+
 /**
  * <p>
  * <b>Purpose</b>: Define a generic test for writing an object to the database.
@@ -103,9 +105,9 @@
          * descriptor, which is then used to find the mappings and determine if
          * one exists that can be mutated
          */
-        Class objectClass = objectToBeMutated.getClass();
+        Class<? extends Object> objectClass = objectToBeMutated.getClass();
         ClassDescriptor descriptor = getSession().getProject().getClassDescriptor(objectClass);
-        java.util.Vector mappings = descriptor.getMappings();
+        Vector<DatabaseMapping> mappings = descriptor.getMappings();
 
         if (isInUOW) {
             mutationString += "U";
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/junit/JUnitTestCaseHelper.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/junit/JUnitTestCaseHelper.java
index a3f8337..8148596 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/junit/JUnitTestCaseHelper.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/junit/JUnitTestCaseHelper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -200,7 +200,7 @@
 
         Map compositeMap = new HashMap();
         properties.put(PersistenceUnitProperties.COMPOSITE_UNIT_PROPERTIES, compositeMap);
-        Map defaultProperties = getDatabaseProperties();
+        Map<String, String> defaultProperties = getDatabaseProperties();
         String logLevel = (String)defaultProperties.get(PersistenceUnitProperties.LOGGING_LEVEL);
         if (logLevel != null) {
             properties.put(PersistenceUnitProperties.LOGGING_LEVEL, logLevel);
@@ -210,7 +210,7 @@
         for (int i = 1; i < sessions.length; i++) {
             String dbIndex = Integer.toString(i + 1);
             // the second session uses db2.user, db2.pwd ...
-            Map sessionProperties = getDatabasePropertiesForIndex(dbIndex);
+            Map<String, String> sessionProperties = getDatabasePropertiesForIndex(dbIndex);
             if (sessionProperties.isEmpty() && shouldUseSingleDb()) {
                 // if non of these properties defined, then use firstSessionProperties
                 sessionProperties = defaultProperties;
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/LoadBuildDisplayPanel.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/LoadBuildDisplayPanel.java
index 4b51c05..d20ee1c 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/LoadBuildDisplayPanel.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/LoadBuildDisplayPanel.java
@@ -131,8 +131,8 @@
             }
         } else {
             Vector summariesHasResult = new Vector();
-            for (Enumeration enumtr = selectedSummary.getLoadBuildSummary().getSummaries().elements();
-                     enumtr.hasMoreElements();) {
+            for (Enumeration<TestResultsSummary> enumtr = selectedSummary.getLoadBuildSummary().getSummaries().elements();
+                 enumtr.hasMoreElements();) {
                 TestResultsSummary summary = (TestResultsSummary)enumtr.nextElement();
                 if ((summary.getResults() != null) && (summary.getResults().size() != 0)) {
                     summariesHasResult.addElement(summary);
@@ -760,7 +760,7 @@
     public void initilaizeTestSummaryCache(LoadBuildSummary loadBuild) {
         Vector rootSummaries = new Vector();
 
-        for (Enumeration enumtr = loadBuild.getSummaries().elements(); enumtr.hasMoreElements();) {
+        for (Enumeration<TestResultsSummary> enumtr = loadBuild.getSummaries().elements(); enumtr.hasMoreElements();) {
             TestResultsSummary summary = (TestResultsSummary)enumtr.nextElement();
             if (summary.getParent() == null) {
                 rootSummaries.addElement(summary);
@@ -778,8 +778,8 @@
 
         Vector children = new Vector();
 
-        for (Enumeration enumtr = theSummary.getLoadBuildSummary().getSummaries().elements();
-                 enumtr.hasMoreElements();) {
+        for (Enumeration<TestResultsSummary> enumtr = theSummary.getLoadBuildSummary().getSummaries().elements();
+             enumtr.hasMoreElements();) {
             TestResultsSummary summary = (TestResultsSummary)enumtr.nextElement();
             if ((summary.getParent() != null) && summary.getParent().getName().equals(theSummary.getName())) {
                 children.addElement(summary);
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestEntityTreeModel.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestEntityTreeModel.java
index 8c99ca7..2884e45 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestEntityTreeModel.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestEntityTreeModel.java
@@ -17,6 +17,8 @@
 import java.util.*;
 import javax.swing.tree.*;
 import javax.swing.event.*;
+
+import junit.framework.Test;
 import org.eclipse.persistence.testing.framework.*;
 
 /**
@@ -63,7 +65,7 @@
         if (parent instanceof TestCollection) {
             return ((TestCollection)parent).getTests().indexOf(child);
         } else if (parent instanceof junit.framework.TestSuite) {
-            Enumeration tests = ((junit.framework.TestSuite)parent).tests();
+            Enumeration<Test> tests = ((junit.framework.TestSuite)parent).tests();
             int index = 0;
             while (tests.hasMoreElements()) {
                 if (tests.nextElement() == child) {
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestingBrowserPanel.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestingBrowserPanel.java
index ca04600..d475ec4 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestingBrowserPanel.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/testing/framework/ui/TestingBrowserPanel.java
@@ -1216,7 +1216,7 @@
             // Ignore, but can't check first because need to support running 9.0.4.
         }
         // Configure the JPA tests login and logging.
-        Map properties = org.eclipse.persistence.testing.framework.junit.JUnitTestCaseHelper.getDatabaseProperties();
+        Map<String, String> properties = org.eclipse.persistence.testing.framework.junit.JUnitTestCaseHelper.getDatabaseProperties();
         if(getExecutor().getSession().getDatasourceLogin() instanceof DatabaseLogin && getExecutor().getSession().getLogin().getConnector() instanceof DefaultConnector) {
             properties.put(PersistenceUnitProperties.JDBC_DRIVER, getExecutor().getSession().getLogin().getDriverClassName());
             properties.put(PersistenceUnitProperties.JDBC_URL, getExecutor().getSession().getLogin().getConnectionString());
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/beans/ExpressionPanel.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/beans/ExpressionPanel.java
index 10d2847..5e82a40 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/beans/ExpressionPanel.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/beans/ExpressionPanel.java
@@ -701,7 +701,7 @@
             getAttributeCombo().removeAllItems();
         }
         if (getDescriptor() != null) {
-            for (Enumeration mappingsEnum =
+            for (Enumeration<DatabaseMapping> mappingsEnum =
                  getDescriptor().getMappings().elements();
                  mappingsEnum.hasMoreElements(); ) {
                 DatabaseMapping mapping =
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/history/HistoryFacade.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/history/HistoryFacade.java
index 4117833..a88a031 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/history/HistoryFacade.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/history/HistoryFacade.java
@@ -216,7 +216,7 @@
             }
             descriptor.setHistoryPolicy(policy);
 
-            for (Enumeration mappings = descriptor.getMappings().elements();
+            for (Enumeration<DatabaseMapping> mappings = descriptor.getMappings().elements();
                  mappings.hasMoreElements(); ) {
                 DatabaseMapping mapping =
                     (DatabaseMapping)mappings.nextElement();
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsole.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsole.java
index 3bcdc1e..1e4c9c0 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsole.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsole.java
@@ -2097,7 +2097,7 @@
             SessionConsole aSessionInspectorFrame;
             aSessionInspectorFrame = new SessionConsole();
             try {
-                Class aCloserClass =
+                Class<?> aCloserClass =
                     Class.forName("com.ibm.uvm.abt.edit.WindowCloser");
                 Class[] parmTypes = { java.awt.Window.class };
                 Object[] parms = { aSessionInspectorFrame };
diff --git a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsolePanel.java b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsolePanel.java
index 73915a3..ec99171 100644
--- a/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsolePanel.java
+++ b/foundation/org.eclipse.persistence.core.test.framework/src/main/java/org/eclipse/persistence/tools/sessionconsole/SessionConsolePanel.java
@@ -770,7 +770,7 @@
                 // done reflectively to remove dependency on tools jar
                 Object[] params = new Object[1];
                 params[0] = source;
-                Class mainClass = Class.forName("com.sun.tools.javac.Main");
+                Class<?> mainClass = Class.forName("com.sun.tools.javac.Main");
                 Class[] parameterTypes = new Class[1];
                 parameterTypes[0] = String[].class;
                 Method method = mainClass.getMethod("compile", parameterTypes);
@@ -780,7 +780,7 @@
                             "Java code compile failed. This could either be a legitimate compile "
                                     + "failure, or could result if you do not have the tools.jar from your JDK on the classpath.");
                 }
-                Class newClass = Class.forName(className);
+                Class<?> newClass = Class.forName(className);
                 Object newInstance = newClass.getConstructor().newInstance();
                 newClass.getField("session").set(newInstance, getSession());
                 Object value;
@@ -3240,7 +3240,7 @@
                 getSession().getSessionLog().setShouldPrintThread(true);
             }
             // Also update all sessions in session manager.
-            Iterator iterator = SessionManager.getManager().getSessions().values().iterator();
+            Iterator<Session> iterator = SessionManager.getManager().getSessions().values().iterator();
             while (iterator.hasNext()) {
                 ((Session)iterator.next()).setSessionLog(getSession().getSessionLog());
             }
@@ -3409,7 +3409,7 @@
         IdentityMap map = ((AbstractSession) getSession())
                 .getIdentityMapAccessorInstance().getIdentityMap(
                         info.descriptor.getJavaClass());
-        for (Enumeration cacheEnum = map.keys(); cacheEnum.hasMoreElements();) {
+        for (Enumeration<CacheKey> cacheEnum = map.keys(); cacheEnum.hasMoreElements();) {
             CacheKey key = (CacheKey) cacheEnum.nextElement();
             if (info.descriptor.getJavaClass().isInstance(key.getObject())) {
                 cacheResults.addElement(key);
@@ -3447,7 +3447,7 @@
         ClassInfo[] classes = new ClassInfo[(getSession()).getDescriptors()
                 .size()];
         int index = 0;
-        for (Iterator iterator = (getSession()).getDescriptors().values()
+        for (Iterator<ClassDescriptor> iterator = (getSession()).getDescriptors().values()
                 .iterator(); iterator.hasNext();) {
             classes[index] = new ClassInfo((ClassDescriptor) iterator.next(),
                     useFullNames);
@@ -3755,7 +3755,7 @@
         if (shouldUseJndiConnector
                 && getLoginEditorPanel().getLogin().getPlatform().isOracle()) {
             try {
-                Class connectionPoolHelperClass = Class
+                Class<?> connectionPoolHelperClass = Class
                         .forName("org.eclipse.persistence.tools.sessionconsole.OracleConnectionPoolHelper");
                 Class[] params = new Class[] { java.lang.String.class };
                 java.lang.reflect.Method method = connectionPoolHelperClass
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/config/ProfilerType.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/config/ProfilerType.java
index a858550..480fd90 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/config/ProfilerType.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/config/ProfilerType.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -24,8 +24,8 @@
  * <p><code>properties.add(PersistenceUnitProperties.PROFILER, ProfilerType.PerformanceProfiler);</code>
  * <p>Property values are case-insensitive.
  *
- * @see QueryMonitor
- * @see PerformanceProfiler
+ * @see org.eclipse.persistence.tools.profiler.QueryMonitor
+ * @see org.eclipse.persistence.tools.profiler.PerformanceProfiler
  */
 public class ProfilerType {
     //A tool used to provide high level performance profiling information
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/descriptors/CoreDescriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/descriptors/CoreDescriptor.java
index 66f6b88..c98aa0a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/descriptors/CoreDescriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/descriptors/CoreDescriptor.java
@@ -113,7 +113,7 @@
      * PUBLIC:
      * Return the java class.
      */
-    public abstract Class getJavaClass();
+    public abstract <T> Class<T> getJavaClass();
 
     /**
      * INTERNAL:
@@ -178,7 +178,7 @@
     * Set the Java class that this descriptor maps.
     * Every descriptor maps one and only one class.
     */
-    public abstract void setJavaClass(Class javaClass);
+    public abstract void setJavaClass(Class<?> javaClass);
 
     /**
      * INTERNAL:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/queries/CoreAttributeGroup.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/queries/CoreAttributeGroup.java
index 606a071..e35c277 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/queries/CoreAttributeGroup.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/queries/CoreAttributeGroup.java
@@ -225,7 +225,7 @@
      *    This method is used internally in the clone processing.
      */
     public CoreAttributeGroup clone(Map<CoreAttributeGroup<ATTRIBUTE_ITEM, DESCRIPTOR>, CoreAttributeGroup<ATTRIBUTE_ITEM, DESCRIPTOR>> cloneMap){
-        CoreAttributeGroup clone = cloneMap.get(this);
+        CoreAttributeGroup<ATTRIBUTE_ITEM, DESCRIPTOR> clone = cloneMap.get(this);
         if (clone != null) {
             return clone;
         }
@@ -248,7 +248,7 @@
             clone.superClassGroup = this.superClassGroup.clone(cloneMap);
         }
         if (this.subClasses != null){
-            clone.subClasses = new HashSet<CoreAttributeGroup>();
+            clone.subClasses = new HashSet<>();
             for (CoreAttributeGroup group : this.subClasses){
                 clone.subClasses.add(group.clone(cloneMap));
             }
@@ -256,9 +256,9 @@
         // all attributes and nested groups should be cloned, too
         clone.items = null;
         if (hasItems()) {
-            clone.items = new HashMap<String, ATTRIBUTE_ITEM>();
+            clone.items = new HashMap<>();
             for (ATTRIBUTE_ITEM item : this.items.values()){
-                clone.items.put(item.getAttributeName(), item.clone(cloneMap, clone));
+                clone.items.put(item.getAttributeName(), (ATTRIBUTE_ITEM) item.clone((Map<CoreAttributeGroup<ATTRIBUTE_ITEM, DESCRIPTOR>, CoreAttributeGroup<ATTRIBUTE_ITEM, DESCRIPTOR>>)cloneMap, clone));
             }
         }
         return clone;
@@ -316,7 +316,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        this.type = AccessController.doPrivileged(new PrivilegedClassForName(this.typeName, true, classLoader));
+                        this.type = AccessController.doPrivileged(new PrivilegedClassForName<>(this.typeName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(this.typeName, exception.getException());
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreProject.java
index f908ccc..f6638d0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreProject.java
@@ -63,7 +63,7 @@
      * PUBLIC:
      * Return the descriptor specified for the class.
      */
-    public abstract DESCRIPTOR getDescriptor(Class theClass);
+    public abstract DESCRIPTOR getDescriptor(Class<?> theClass);
 
     /**
      * INTERNAL:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreSession.java
index 7fd0fe4..1b7ba78 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/core/sessions/CoreSession.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -50,7 +50,7 @@
      * by one of the classes stored in the map, that descriptor will be stored under the
      * new class.
      */
-    DESCRIPTOR getDescriptor(Class theClass);
+    DESCRIPTOR getDescriptor(Class<?> theClass);
 
     /**
      * ADVANCED:
@@ -62,7 +62,7 @@
      * ADVANCED:
      * Return all registered descriptors.
      */
-    Map<Class, DESCRIPTOR> getDescriptors();
+    Map<Class<?>, DESCRIPTOR> getDescriptors();
 
     /**
      * PUBLIC:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CMPPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CMPPolicy.java
index 6b1622b..6c9051b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CMPPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CMPPolicy.java
@@ -524,7 +524,7 @@
     /**
      * INTERNAL:
      */
-    public Object getPKClassInstance() {
+    public <T> T getPKClassInstance() {
         // TODO fix this exception so that it is more descriptive
         // This method only works in CMP3Policy but was added here for separation
         // of components
@@ -534,7 +534,7 @@
     /**
      * INTERNAL:
      */
-    public Class getPKClass() {
+    public <T> Class<T> getPKClass() {
         // TODO fix this exception so that it is more descriptive
         // This method only works in CMP3Policy but was added here for separation
         // of components
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CacheIndex.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CacheIndex.java
index 09c6de8..dd3262f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CacheIndex.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CacheIndex.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -20,6 +20,7 @@
 
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.helper.DatabaseField;
+import org.eclipse.persistence.internal.identitymaps.WeakIdentityMap;
 
 /**
  * <p><b>Purpose</b>:
@@ -36,7 +37,7 @@
     protected int cacheSize;
 
     /** Allows the identity map class type to be set. */
-    protected Class cacheType = ClassConstants.WeakIdentityMap_Class;
+    protected Class<? extends WeakIdentityMap> cacheType = ClassConstants.WeakIdentityMap_Class;
 
     public CacheIndex() {
         this.fields = new ArrayList<>();
@@ -111,7 +112,7 @@
      * This default to a weak cache, and should normally not be changed.
      * For a weak cache, the index will remain until the object gcs from the main cache.
      */
-    public void setCacheType(Class cacheType) {
+    public void setCacheType(Class<? extends WeakIdentityMap> cacheType) {
         this.cacheType = cacheType;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CachePolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CachePolicy.java
index 9e89c0f..6d37522 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CachePolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/CachePolicy.java
@@ -25,6 +25,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import jakarta.persistence.Cache;
 import org.eclipse.persistence.annotations.CacheCoordinationType;
 import org.eclipse.persistence.annotations.CacheKeyType;
 import org.eclipse.persistence.annotations.DatabaseChangeNotificationType;
@@ -36,6 +37,7 @@
 import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.internal.identitymaps.CacheId;
 import org.eclipse.persistence.internal.identitymaps.CacheKey;
+import org.eclipse.persistence.internal.identitymaps.IdentityMap;
 import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
 import org.eclipse.persistence.internal.security.PrivilegedClassForName;
 import org.eclipse.persistence.internal.sessions.AbstractRecord;
@@ -44,6 +46,8 @@
 import org.eclipse.persistence.logging.SessionLog;
 import org.eclipse.persistence.mappings.DatabaseMapping;
 import org.eclipse.persistence.sessions.DatabaseSession;
+import org.eclipse.persistence.sessions.interceptors.CacheInterceptor;
+import org.eclipse.persistence.sessions.interceptors.CacheKeyInterceptor;
 
 /**
  * <p><b>Purpose</b>:
@@ -56,13 +60,13 @@
  * @see ClassDescriptor
  */
 public class CachePolicy implements Cloneable, Serializable {
-    protected Class identityMapClass;
+    protected Class<? extends IdentityMap> identityMapClass;
     protected int identityMapSize;
     protected boolean shouldAlwaysRefreshCache;
     protected boolean shouldOnlyRefreshCacheIfNewerVersion;
     protected boolean shouldDisableCacheHits;
 
-    protected Class remoteIdentityMapClass;
+    protected Class<? extends IdentityMap> remoteIdentityMapClass;
     protected int remoteIdentityMapSize;
     protected boolean shouldAlwaysRefreshCacheOnRemote;
     protected boolean shouldDisableCacheHitsOnRemote;
@@ -105,7 +109,7 @@
     protected CacheKeyType cacheKeyType;
 
     //Added for interceptor support.
-    protected Class cacheInterceptorClass;
+    protected Class<? extends CacheInterceptor> cacheInterceptorClass;
     //Added for interceptor support.
     protected String cacheInterceptorClassName;
 
@@ -161,7 +165,7 @@
         // If the parent is isolated, then the child must also be isolated.
         if (!parentPolicy.isSharedIsolation()) {
             // Do not override cache isolation when explicitly enabled by @Cacheable(true) annotation in current class.
-            boolean copyParrent = cacheable == null || cacheable == false;
+            boolean copyParrent = cacheable == null || !cacheable;
             if (!isIsolated() && (getCacheIsolation() != parentPolicy.getCacheIsolation()) && copyParrent) {
                 session.log(SessionLog.WARNING, SessionLog.METADATA, "overriding_cache_isolation",
                         new Object[]{descriptorDescriptor.getAlias(),
@@ -302,7 +306,7 @@
      * The primary key is always indexed in the cache.
      * Cache indexes are defined by their database column names.
      */
-    public void addCacheIndex(DatabaseField fields[]) {
+    public void addCacheIndex(DatabaseField[] fields) {
         addCacheIndex(new CacheIndex(fields));
     }
 
@@ -325,8 +329,8 @@
     public CachePolicy clone() {
         try {
             return (CachePolicy)super.clone();
-        } catch (CloneNotSupportedException ignore) {
-            throw new InternalError(ignore.getMessage());
+        } catch (CloneNotSupportedException cnse) {
+            throw new InternalError(cnse.getMessage());
         }
     }
 
@@ -358,7 +362,7 @@
             if (this.cacheInterceptorClass == null && this.cacheInterceptorClassName != null){
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        this.cacheInterceptorClass = AccessController.doPrivileged(new PrivilegedClassForName(this.cacheInterceptorClassName, true, classLoader));
+                        this.cacheInterceptorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(this.cacheInterceptorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(this.cacheInterceptorClassName, exception.getException());
                    }
@@ -404,8 +408,9 @@
      * As with IdentityMaps an entire class inheritance hierarchy will share the same interceptor.
      * @see org.eclipse.persistence.sessions.interceptors.CacheInterceptor
      */
-    public Class getCacheInterceptorClass(){
-        return this.cacheInterceptorClass;
+    @SuppressWarnings({"unchecked"})
+    public <T extends CacheInterceptor> Class<T> getCacheInterceptorClass(){
+        return (Class<T>) this.cacheInterceptorClass;
     }
 
     /**
@@ -442,8 +447,9 @@
      * Return the class of identity map to be used by this descriptor.
      * The default is the "SoftCacheWeakIdentityMap".
      */
-    public Class getIdentityMapClass() {
-        return identityMapClass;
+    @SuppressWarnings({"unchecked"})
+    public <T extends IdentityMap> Class<T> getIdentityMapClass() {
+        return (Class<T>) identityMapClass;
     }
 
     /**
@@ -459,12 +465,12 @@
      * Return the class of identity map to be used by this descriptor.
      * The default is the "SoftCacheWeakIdentityMap".
      */
-    public Class getRemoteIdentityMapClass() {
+    @SuppressWarnings({"unchecked"})
+    public <T extends IdentityMap> Class<T> getRemoteIdentityMapClass() {
         if (remoteIdentityMapClass == null) {
             remoteIdentityMapClass = getIdentityMapClass();
         }
-
-        return remoteIdentityMapClass;
+        return (Class<T>) remoteIdentityMapClass;
     }
 
     /**
@@ -644,7 +650,7 @@
      * Set the class of identity map to be used by this descriptor.
      * The default is the "FullIdentityMap".
      */
-    public void setRemoteIdentityMapClass(Class theIdentityMapClass) {
+    public void setRemoteIdentityMapClass(Class<? extends IdentityMap> theIdentityMapClass) {
         remoteIdentityMapClass = theIdentityMapClass;
     }
 
@@ -776,7 +782,7 @@
      * Set the class of identity map to be used by this descriptor.
      * The default is the "FullIdentityMap".
      */
-    public void setIdentityMapClass(Class theIdentityMapClass) {
+    public void setIdentityMapClass(Class<? extends IdentityMap> theIdentityMapClass) {
         identityMapClass = theIdentityMapClass;
     }
 
@@ -840,7 +846,7 @@
      * As with IdentityMaps an entire class inheritance hierarchy will share the same interceptor.
      * @see org.eclipse.persistence.sessions.interceptors.CacheInterceptor
      */
-    public void setCacheInterceptorClass(Class cacheInterceptorClass){
+    public void setCacheInterceptorClass(Class<? extends CacheInterceptor> cacheInterceptorClass){
         this.cacheInterceptorClass = cacheInterceptorClass;
     }
 
@@ -1005,7 +1011,7 @@
         for (CacheIndex index : this.cacheIndexes.values()) {
             List<DatabaseField> searchFields = index.getFields();
             int size = searchFields.size();
-            Set<DatabaseField> foundFields = new HashSet(size);
+            Set<DatabaseField> foundFields = new HashSet<>(size);
             boolean isValid = expression.extractFields(true, false, descriptor, searchFields, foundFields);
             if (isValid && (foundFields.size() == size)) {
                 return true;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
index 34afb9b..22d8757 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
@@ -101,6 +101,7 @@
 import org.eclipse.persistence.internal.helper.Helper;
 import org.eclipse.persistence.internal.helper.MappingCompare;
 import org.eclipse.persistence.internal.helper.NonSynchronizedVector;
+import org.eclipse.persistence.internal.identitymaps.IdentityMap;
 import org.eclipse.persistence.internal.indirection.ProxyIndirectionPolicy;
 import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
 import org.eclipse.persistence.internal.security.PrivilegedClassForName;
@@ -140,6 +141,7 @@
 import org.eclipse.persistence.sequencing.Sequence;
 import org.eclipse.persistence.sessions.DatabaseRecord;
 import org.eclipse.persistence.sessions.Project;
+import org.eclipse.persistence.sessions.interceptors.CacheInterceptor;
 import org.eclipse.persistence.sessions.remote.DistributedSession;
 
 /**
@@ -1007,7 +1009,7 @@
      */
     protected void checkDatabase(AbstractSession session) {
         if (session.getIntegrityChecker().shouldCheckDatabase()) {
-            for (Iterator iterator = getTables().iterator(); iterator.hasNext();) {
+            for (Iterator<DatabaseTable> iterator = getTables().iterator(); iterator.hasNext();) {
                 DatabaseTable table = (DatabaseTable)iterator.next();
                 if (session.getIntegrityChecker().checkTable(table, session)) {
                     // To load the fields of database into a vector
@@ -1336,7 +1338,7 @@
         Vector mappingsVector = NonSynchronizedVector.newInstance();
 
         // All the mappings
-        for (Enumeration mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
             DatabaseMapping mapping;
 
             mapping = (DatabaseMapping)((DatabaseMapping)mappingsEnum.nextElement()).clone();
@@ -1357,7 +1359,7 @@
 
         // PrimaryKeyFields
         List primaryKeyVector = new ArrayList(getPrimaryKeyFields().size());
-        List primaryKeyFields = getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = getPrimaryKeyFields();
         for (int index = 0; index < primaryKeyFields.size(); index++) {
             DatabaseField primaryKey = ((DatabaseField)primaryKeyFields.get(index)).clone();
             primaryKeyVector.add(primaryKey);
@@ -1487,7 +1489,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        descriptorClass = AccessController.doPrivileged(new PrivilegedClassForName(getJavaClassName(), true, classLoader));
+                        descriptorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getJavaClassName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getJavaClassName(), exception.getException());
                     }
@@ -1505,7 +1507,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        amendmentClass = AccessController.doPrivileged(new PrivilegedClassForName(getAmendmentClassName(), true, classLoader));
+                        amendmentClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getAmendmentClassName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getAmendmentClassName(), exception.getException());
                     }
@@ -1524,7 +1526,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        copyPolicyClass = AccessController.doPrivileged(new PrivilegedClassForName(getCopyPolicyClassName(), true, classLoader));
+                        copyPolicyClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getCopyPolicyClassName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getCopyPolicyClassName(), exception.getException());
                     }
@@ -1554,7 +1556,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        serializedObjectPolicyClass = AccessController.doPrivileged(new PrivilegedClassForName(serializedObjectPolicyClassName, true, classLoader));
+                        serializedObjectPolicyClass = AccessController.doPrivileged(new PrivilegedClassForName<>(serializedObjectPolicyClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(serializedObjectPolicyClassName, exception.getException());
                     }
@@ -1583,7 +1585,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultQueryRedirectorClassName, exception.getException());
                     }
@@ -1608,7 +1610,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultReadObjectQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultReadObjectQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultReadObjectQueryRedirectorClassName, exception.getException());
                     }
@@ -1632,7 +1634,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultReadAllQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultReadAllQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultReadAllQueryRedirectorClassName, exception.getException());
                     }
@@ -1656,7 +1658,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultReportQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultReportQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultReportQueryRedirectorClassName, exception.getException());
                     }
@@ -1680,7 +1682,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultInsertObjectQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultInsertObjectQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultInsertObjectQueryRedirectorClassName, exception.getException());
                     }
@@ -1704,7 +1706,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultUpdateObjectQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultUpdateObjectQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultUpdateObjectQueryRedirectorClassName, exception.getException());
                     }
@@ -1728,7 +1730,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName(defaultDeleteObjectQueryRedirectorClassName, true, classLoader));
+                        redirectorClass = AccessController.doPrivileged(new PrivilegedClassForName<>(defaultDeleteObjectQueryRedirectorClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(defaultDeleteObjectQueryRedirectorClassName, exception.getException());
                     }
@@ -1748,7 +1750,7 @@
                 throw ValidationException.classNotFoundWhileConvertingClassNames(defaultDeleteObjectQueryRedirectorClassName, e);
             }
         }
-        Iterator mappings = getMappings().iterator();
+        Iterator<DatabaseMapping> mappings = getMappings().iterator();
         while (mappings.hasNext()){
             ((DatabaseMapping)mappings.next()).convertClassNamesToClasses(classLoader);
         }
@@ -1776,14 +1778,14 @@
                 List<String> valuePair = getUnconvertedProperties().get(propertyName);
                 String value = valuePair.get(0);
                 String valueTypeName = valuePair.get(1);
-                Class valueType = String.class;
+                Class<String> valueType = String.class;
 
                 if (valueTypeName != null) {
                     // Have to initialize the valueType now
                     try {
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                             try {
-                                valueType = AccessController.doPrivileged(new PrivilegedClassForName(valueTypeName, true, classLoader));
+                                valueType = AccessController.doPrivileged(new PrivilegedClassForName<>(valueTypeName, true, classLoader));
                             } catch (PrivilegedActionException exception) {
                                 throw ValidationException.classNotFoundWhileConvertingClassNames(valueTypeName, exception.getException());
                             }
@@ -2221,7 +2223,7 @@
      * As with IdentityMaps an entire class inheritance hierarchy will share the same interceptor.
      * @see org.eclipse.persistence.sessions.interceptors.CacheInterceptor
      */
-    public Class getCacheInterceptorClass() {
+    public Class<? extends CacheInterceptor> getCacheInterceptorClass() {
         return getCachePolicy().getCacheInterceptorClass();
     }
 
@@ -2547,7 +2549,7 @@
      */
     public DatabaseMapping getMappingForAttributeName(String attributeName) {
         // ** Don't use this internally, just for amendments, see getMappingForAttributeName on ObjectBuilder.
-        for (Enumeration mappingsNum = mappings.elements(); mappingsNum.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappingsNum = mappings.elements(); mappingsNum.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappingsNum.nextElement();
             if ((mapping.getAttributeName() != null) && mapping.getAttributeName().equals(attributeName)) {
                 return mapping;
@@ -2584,7 +2586,7 @@
      */
     public Vector getMultipleTableForeignKeyAssociations() {
         Vector associations = new Vector(getAdditionalTablePrimaryKeyFields().size() * 2);
-        Iterator tablesHashtable = getAdditionalTablePrimaryKeyFields().values().iterator();
+        Iterator<Map<DatabaseField, DatabaseField>> tablesHashtable = getAdditionalTablePrimaryKeyFields().values().iterator();
         while (tablesHashtable.hasNext()) {
             Map tableHash = (Map)tablesHashtable.next();
             Iterator fieldEnumeration = tableHash.keySet().iterator();
@@ -2634,7 +2636,7 @@
      */
     public Vector getMultipleTablePrimaryKeyAssociations() {
         Vector associations = new Vector(getAdditionalTablePrimaryKeyFields().size() * 2);
-        Iterator tablesHashtable = getAdditionalTablePrimaryKeyFields().values().iterator();
+        Iterator<Map<DatabaseField, DatabaseField>> tablesHashtable = getAdditionalTablePrimaryKeyFields().values().iterator();
         while (tablesHashtable.hasNext()) {
             Map tableHash = (Map)tablesHashtable.next();
             Iterator fieldEnumeration = tableHash.keySet().iterator();
@@ -2704,7 +2706,7 @@
     @Override
     public Vector<String> getPrimaryKeyFieldNames() {
         Vector<String> result = new Vector(getPrimaryKeyFields().size());
-        List primaryKeyFields = getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = getPrimaryKeyFields();
         for (int index = 0; index < primaryKeyFields.size(); index++) {
             result.addElement(((DatabaseField)primaryKeyFields.get(index)).getQualifiedName());
         }
@@ -2878,7 +2880,7 @@
             return null;// Assume aggregate descriptor.
         }
 
-        for (Enumeration tables = getTables().elements(); tables.hasMoreElements();) {
+        for (Enumeration<DatabaseTable> tables = getTables().elements(); tables.hasMoreElements();) {
             DatabaseTable table = (DatabaseTable)tables.nextElement();
 
             if(tableName.indexOf(' ') != -1) {
@@ -2919,7 +2921,7 @@
      */
     public Vector getTableNames() {
         Vector tableNames = new Vector(getTables().size());
-        for (Enumeration fieldsEnum = getTables().elements(); fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseTable> fieldsEnum = getTables().elements(); fieldsEnum.hasMoreElements();) {
             tableNames.addElement(((DatabaseTable)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -3094,7 +3096,7 @@
      * Checks if the class has any private owned parts are not
      */
     public boolean hasPrivatelyOwnedParts() {
-        for (Enumeration mappings = getMappings().elements(); mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = getMappings().elements(); mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (mapping.isPrivateOwned()) {
                 return true;
@@ -3232,8 +3234,8 @@
         // Sorting the mappings to ensure that all DirectToFields get merged before all other mappings
         // This prevents null key errors when merging maps
         if (shouldOrderMappings()) {
-            Vector mappings = getMappings();
-            Object[] mappingsArray = new Object[mappings.size()];
+            Vector<DatabaseMapping> mappings = getMappings();
+            DatabaseMapping[] mappingsArray = new DatabaseMapping[mappings.size()];
             for (int index = 0; index < mappings.size(); index++) {
                 mappingsArray[index] = mappings.get(index);
             }
@@ -3307,7 +3309,7 @@
         }
 
         // All the query keys should be initialized.
-        for (Iterator queryKeys = getQueryKeys().values().iterator(); queryKeys.hasNext();) {
+        for (Iterator<QueryKey> queryKeys = getQueryKeys().values().iterator(); queryKeys.hasNext();) {
             QueryKey queryKey = (QueryKey)queryKeys.next();
             queryKey.initialize(this);
         }
@@ -3352,8 +3354,8 @@
         // This prevents null key errors when merging maps
         // This resort will change the previous sort order, only do it if has inheritance.
         if (hasInheritance() && shouldOrderMappings()) {
-            Vector mappings = getMappings();
-            Object[] mappingsArray = new Object[mappings.size()];
+            Vector<DatabaseMapping> mappings = getMappings();
+            DatabaseMapping[] mappingsArray = new DatabaseMapping[mappings.size()];
             for (int index = 0; index < mappings.size(); index++) {
                 mappingsArray[index] = mappings.get(index);
             }
@@ -3642,9 +3644,9 @@
         setInterfaceInitializationStage(INITIALIZED);
 
         if (isInterfaceChildDescriptor()) {
-            for (Iterator<Class> interfaces = getInterfacePolicy().getParentInterfaces().iterator();
+            for (Iterator<Class<?>> interfaces = getInterfacePolicy().getParentInterfaces().iterator();
                      interfaces.hasNext();) {
-                Class parentInterface = interfaces.next();
+                Class<?> parentInterface = interfaces.next();
                 ClassDescriptor parentDescriptor = session.getDescriptor(parentInterface);
                 parentDescriptor.interfaceInitialization(session);
 
@@ -3652,8 +3654,8 @@
                     setQueryKeys(Helper.concatenateMaps(getQueryKeys(), parentDescriptor.getQueryKeys()));
                 } else {
                     //ClassDescriptor is a class, not an interface
-                    for (Iterator parentKeys = parentDescriptor.getQueryKeys().keySet().iterator();
-                             parentKeys.hasNext();) {
+                    for (Iterator<String> parentKeys = parentDescriptor.getQueryKeys().keySet().iterator();
+                         parentKeys.hasNext();) {
                         String queryKeyName = (String)parentKeys.next();
                         if (!hasQueryKeyOrMapping(queryKeyName)) {
                             //the parent descriptor has a query key not defined in the child
@@ -4156,7 +4158,7 @@
             // Cloning is only auto set for field access, as method access
             // may not have simple fields, same with empty new and reflection get/set.
             boolean isMethodAccess = false;
-            for (Iterator iterator = getMappings().iterator(); iterator.hasNext(); ) {
+            for (Iterator<DatabaseMapping> iterator = getMappings().iterator(); iterator.hasNext(); ) {
                 DatabaseMapping mapping = (DatabaseMapping)iterator.next();
                 if (mapping.isUsingMethodAccess()) {
                     // Ok for lazy 1-1s
@@ -4183,7 +4185,7 @@
         }
 
         // 4924665 Check for spaces in table names, and add the appropriate quote character
-        Iterator tables = this.getTables().iterator();
+        Iterator<DatabaseTable> tables = this.getTables().iterator();
         while(tables.hasNext()) {
             DatabaseTable next = (DatabaseTable)tables.next();
             if(next.getName().indexOf(' ') != -1) {
@@ -4290,9 +4292,9 @@
         assignDefaultValues(session);
 
         if (isInterfaceChildDescriptor()) {
-            for (Iterator<Class> interfaces = getInterfacePolicy().getParentInterfaces().iterator();
+            for (Iterator<Class<?>> interfaces = getInterfacePolicy().getParentInterfaces().iterator();
                      interfaces.hasNext();) {
-                Class parentInterface = interfaces.next();
+                Class<?> parentInterface = interfaces.next();
                 ClassDescriptor parentDescriptor = session.getDescriptor(parentInterface);
                 if ((parentDescriptor == null) || (parentDescriptor.getJavaClass() == getJavaClass()) || parentDescriptor.getInterfacePolicy().usesImplementorDescriptor()) {
                     session.getProject().getDescriptors().put(parentInterface, this);
@@ -4317,7 +4319,7 @@
     public void rehashFieldDependancies(AbstractSession session) {
         getObjectBuilder().rehashFieldDependancies(session);
 
-        for (Enumeration enumtr = getMappings().elements(); enumtr.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> enumtr = getMappings().elements(); enumtr.hasMoreElements();) {
             ((DatabaseMapping)enumtr.nextElement()).rehashFieldDependancies(session);
         }
     }
@@ -4466,7 +4468,7 @@
      * descriptor.
      */
     protected void setAdditionalTablePrimaryKeyFields(DatabaseTable table, DatabaseField field1, DatabaseField field2) {
-        Map tableAdditionalPKFields = getAdditionalTablePrimaryKeyFields().get(table);
+        Map<DatabaseField, DatabaseField> tableAdditionalPKFields = getAdditionalTablePrimaryKeyFields().get(table);
 
         if (tableAdditionalPKFields == null) {
             tableAdditionalPKFields = new HashMap(2);
@@ -4809,7 +4811,7 @@
      * Set the class of identity map to be used by this descriptor.
      * The default is the "FullIdentityMap".
      */
-    public void setIdentityMapClass(Class theIdentityMapClass) {
+    public void setIdentityMapClass(Class<? extends IdentityMap> theIdentityMapClass) {
         getCachePolicy().setIdentityMapClass(theIdentityMapClass);
     }
 
@@ -5090,7 +5092,7 @@
      */
     public void setMappings(Vector<DatabaseMapping> mappings) {
         // This is used from XML reader so must ensure that all mapping's descriptor has been set.
-        for (Enumeration mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappingsEnum = mappings.elements(); mappingsEnum.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
 
             // For CR#2646, if the mapping already points to the parent descriptor then leave it.
@@ -5511,7 +5513,7 @@
      * all tables in this descriptor
      */
     public void setTableQualifier(String tableQualifier) {
-        for (Enumeration enumtr = getTables().elements(); enumtr.hasMoreElements();) {
+        for (Enumeration<DatabaseTable> enumtr = getTables().elements(); enumtr.hasMoreElements();) {
             DatabaseTable table = (DatabaseTable)enumtr.nextElement();
             table.setTableQualifier(tableQualifier);
         }
@@ -5822,8 +5824,8 @@
         if (lockingPolicy != null && (lockingPolicy instanceof FieldsLockingPolicy)) {
             return false;
         }
-        Vector mappings = getMappings();
-        for (Iterator iterator = mappings.iterator(); iterator.hasNext();) {
+        Vector<DatabaseMapping> mappings = getMappings();
+        for (Iterator<DatabaseMapping> iterator = mappings.iterator(); iterator.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)iterator.next();
             if (!mapping.isChangeTrackingSupported(project) ) {
                 return false;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassExtractor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassExtractor.java
index 136f4a2..7809104 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassExtractor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassExtractor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -32,7 +32,7 @@
      * Map is used as the public interface to database row, the key is the field name,
      * the value is the database value.
      */
-    public abstract Class extractClassFromRow(org.eclipse.persistence.sessions.Record databaseRow, Session session);
+    public abstract <T> Class<T> extractClassFromRow(org.eclipse.persistence.sessions.Record databaseRow, Session session);
 
     /**
      * Allow for any initialization.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorEventManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorEventManager.java
index ff68440..1eac3bd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorEventManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorEventManager.java
@@ -664,7 +664,7 @@
 
         // Step 2 - Notify the Entity Listener's first, top -> down.
         for (int index = entityListenerEventManagers.size() - 1; index >= 0; index--) {
-            List entityListenerEventListeners = entityListenerEventManagers.get(index).getEntityListenerEventListeners();
+            List<DescriptorEventListener> entityListenerEventListeners = entityListenerEventManagers.get(index).getEntityListenerEventListeners();
 
             for (int i = 0; i < entityListenerEventListeners.size(); i++) {
                 DescriptorEventListener listener = (DescriptorEventListener) entityListenerEventListeners.get(i);
@@ -1055,7 +1055,7 @@
      * @return initialized instance of {@link java.util.concurrent.atomic.AtomicIntegerArray}
      */
     private static <T> AtomicReferenceArray<T> newAtomicReferenceArray(final int length) {
-        final AtomicReferenceArray array = new AtomicReferenceArray<>(length);
+        final AtomicReferenceArray<T> array = new AtomicReferenceArray<>(length);
         for (int index = 0; index < length; array.set(index++, null));
         return array;
     }
@@ -1068,7 +1068,7 @@
      */
     private static <T> AtomicReferenceArray<T> newAtomicReferenceArray(final AtomicReferenceArray<T> src) {
         final int length = src.length();
-        final AtomicReferenceArray array = new AtomicReferenceArray<>(length);
+        final AtomicReferenceArray<T> array = new AtomicReferenceArray<>(length);
         for (int index = 0; index < length; array.set(index, src.get(index++)));
         return array;
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorQueryManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorQueryManager.java
index 86ee179..df31775 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorQueryManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/DescriptorQueryManager.java
@@ -282,7 +282,7 @@
 
         // Bug 3037701 - clone the queries
         manager.setQueries(new LinkedHashMap(getQueries().size()));//bug5677655
-        Iterator iterator = queries.values().iterator();
+        Iterator<List<DatabaseQuery>> iterator = queries.values().iterator();
         while (iterator.hasNext()) {
             Iterator queriesForKey = ((Vector)iterator.next()).iterator();
             while (queriesForKey.hasNext()) {
@@ -327,7 +327,7 @@
      * This method is implemented by subclasses as necessary.
      */
     public void convertClassNamesToClasses(ClassLoader classLoader){
-        Iterator queryVectors = getQueries().values().iterator();
+        Iterator<List<DatabaseQuery>> queryVectors = getQueries().values().iterator();
         while (queryVectors.hasNext()){
             Iterator queries = ((Vector)queryVectors.next()).iterator();
             while (queries.hasNext()){
@@ -498,7 +498,7 @@
      */
     public Vector getAllQueries() {
         Vector allQueries = new Vector();
-        for (Iterator vectors = getQueries().values().iterator(); vectors.hasNext();) {
+        for (Iterator<List<DatabaseQuery>> vectors = getQueries().values().iterator(); vectors.hasNext();) {
             allQueries.addAll((Vector)vectors.next());
         }
         return allQueries;
@@ -1029,7 +1029,7 @@
             // PERF: Only process changed mappings.
             ObjectChangeSet changeSet = query.getObjectChangeSet();
             if ((changeSet != null) && (!changeSet.isNew())) {
-                List changeRecords = changeSet.getChanges();
+                List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changeRecords = changeSet.getChanges();
                 int size = changeRecords.size();
                 for (int index = 0; index < size; index++) {
                     ChangeRecord record = (ChangeRecord)changeRecords.get(index);
@@ -1123,7 +1123,7 @@
             // PERF: Only process changed mappings.
             ObjectChangeSet changeSet = query.getObjectChangeSet();
             if ((changeSet != null) && (!changeSet.isNew())) {
-                List changeRecords = changeSet.getChanges();
+                List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changeRecords = changeSet.getChanges();
                 int size = changeRecords.size();
                 for (int index = 0; index < size; index++) {
                     ChangeRecord record = (ChangeRecord)changeRecords.get(index);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FetchGroupManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FetchGroupManager.java
index a3fb6d0..8080751 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FetchGroupManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FetchGroupManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -537,7 +537,7 @@
      */
     // TODO-244124-dclarke: Needs to be updated to reflect new FetchGroup behaviour
     private void refreshFetchGroupIntoClones(Object cachedObject, Object workingClone, Object backupClone, FetchGroup fetchGroupInObject, FetchGroup fetchGroupInClone, UnitOfWorkImpl uow) {
-        Vector mappings = descriptor.getMappings();
+        Vector<DatabaseMapping> mappings = descriptor.getMappings();
         boolean isObjectPartial = (fetchGroupInObject != null);
         Set fetchedAttributes = isObjectPartial ? fetchGroupInObject.getAttributeNames() : null;
         int size = mappings.size();
@@ -568,7 +568,7 @@
      */
     private void revertDataIntoUnfetchedAttributesOfClones(Object cachedObject, Object workingClone, Object backupClone, FetchGroup fetchGroupInObject, FetchGroup fetchGroupInClone, UnitOfWorkImpl uow) {
         // Fetched attributes set in working clone.
-        Set fetchedAttributesClone = fetchGroupInClone.getAttributeNames();
+        Set<String> fetchedAttributesClone = fetchGroupInClone.getAttributeNames();
         // Fetched attributes set in cached object.
         Set fetchedAttributesCached = null;
         if (fetchGroupInObject != null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FieldsLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FieldsLockingPolicy.java
index a6fdd40..aaa7880 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FieldsLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/FieldsLockingPolicy.java
@@ -77,8 +77,8 @@
      * and class indicator fields.
      * This is called during lazy initialization.
      */
-    protected List buildAllNonPrimaryKeyFields() {
-        List fields = new ArrayList();
+    protected List<DatabaseField> buildAllNonPrimaryKeyFields() {
+        List<DatabaseField> fields = new ArrayList<>();
         for (DatabaseField dbField : descriptor.getSelectionFields()) {
             if (!isPrimaryKey(dbField)) {
                 if (descriptor.hasInheritance()) {
@@ -231,7 +231,7 @@
      * null in some situations.
      */
     @Override
-    public Object getBaseValue(){
+    public <T> T getBaseValue(){
         return null; // this locking type does not store values in the cache
     }
 
@@ -279,7 +279,7 @@
      * is stored in the object, then return a null.
      */
     @Override
-    public Object getValueToPutInCache(AbstractRecord row, AbstractSession session) {
+    public <T> T getValueToPutInCache(AbstractRecord row, AbstractSession session) {
         return null;
     }
 
@@ -299,7 +299,7 @@
      * This method will return the optimistic lock value for the object
      */
     @Override
-    public Object getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
+    public <T> T getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
         //There is no way of knowing if this value is newer or not, so always return true.
         return null;
     }
@@ -378,9 +378,9 @@
             return true;
         } else {
             if (descriptor.isMultipleTableDescriptor()) {
-                for (Iterator enumtr = descriptor.getAdditionalTablePrimaryKeyFields().values().iterator();
+                for (Iterator<Map<DatabaseField, DatabaseField>> enumtr = descriptor.getAdditionalTablePrimaryKeyFields().values().iterator();
                          enumtr.hasNext();) {
-                    if (((Map)enumtr.next()).containsKey(dbField)) {
+                    if (enumtr.next().containsKey(dbField)) {
                         return true;
                     }
                 }
@@ -412,7 +412,7 @@
     /**
      * INTERNAL: Set method for all the primary keys
      */
-    protected void setAllNonPrimaryKeyFields(List allNonPrimaryKeyFields) {
+    protected void setAllNonPrimaryKeyFields(List<DatabaseField> allNonPrimaryKeyFields) {
         this.allNonPrimaryKeyFields = allNonPrimaryKeyFields;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InheritancePolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InheritancePolicy.java
index 3bc1912..e3b637f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InheritancePolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InheritancePolicy.java
@@ -73,7 +73,7 @@
     protected transient Expression onlyInstancesExpression;
     protected transient Expression withAllSubclassesExpression;
     // null if there are no childrenTables, otherwise all tables for reference class plus childrenTables
-    protected transient Vector allTables;
+    protected transient Vector<DatabaseTable> allTables;
     // all tables for all subclasses (subclasses of subclasses included), should be in sync with childrenTablesJoinExpressions.
     protected transient List<DatabaseTable> childrenTables;
     // join expression for each child table, keyed by the table, should be in sync with childrenTables.
@@ -108,11 +108,11 @@
      * Only descriptors involved in inheritance should have a policy.
      */
     public InheritancePolicy() {
-        this.classIndicatorMapping = new HashMap(10);
-        this.classNameIndicatorMapping = new HashMap(10);
+        this.classIndicatorMapping = new HashMap<>(10);
+        this.classNameIndicatorMapping = new HashMap<>(10);
         this.shouldUseClassNameAsIndicator = false;
-        this.allChildClassIndicators = new ArrayList(4);
-        this.childDescriptors = new ArrayList(4);
+        this.allChildClassIndicators = new ArrayList<>(4);
+        this.childDescriptors = new ArrayList<>(4);
         this.setJoinedStrategy();
     }
 
@@ -141,11 +141,11 @@
      */
     protected void addChildTableJoinExpression(DatabaseTable table, Expression expression) {
         if (this.childrenTablesJoinExpressions == null) {
-            this.childrenTablesJoinExpressions = new HashMap();
+            this.childrenTablesJoinExpressions = new HashMap<>();
            // childrenTables should've been null, too
-            this.childrenTables = new ArrayList();
+            this.childrenTables = new ArrayList<>();
            // allTables should've been null, too
-            this.allTables = new Vector(getDescriptor().getTables());
+            this.allTables = new Vector<>(getDescriptor().getTables());
         }
         // Avoid duplicates as two independent subclasses may have the same table.
         if (!this.childrenTables.contains(table)) {
@@ -316,7 +316,7 @@
 
         // CR#3166555 - Have the mechanism build the statement to avoid duplicating code and ensure that lock-mode, hints, hierarchical, etc. are set.
         SQLSelectStatement selectStatement = mechanism.buildBaseSelectStatement(false, clonedExpressions);
-        selectStatement.setTables(org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(1));
+        selectStatement.setTables(new ArrayList<>(1));
         selectStatement.addTable(getReadAllSubclassesView());
 
         // Case, normal read for branch inheritance class that reads subclasses all in its own table(s).
@@ -423,7 +423,7 @@
             Object key = keysEnum.next();
             Object value = valuesEnum.next();
 
-            Class theClass = convertClassNameToClass((String) key, classLoader);
+            Class<?> theClass = convertClassNameToClass((String) key, classLoader);
             classIndicatorMapping.put(theClass, value);
             classIndicatorMapping.put(value, theClass);
         }
@@ -435,22 +435,20 @@
 
         // Initialize the class extractor name.
         if (classExtractorName != null) {
-            Class classExtractorClass = convertClassNameToClass(classExtractorName, classLoader);
+            Class<ClassExtractor> classExtractorClass = convertClassNameToClass(classExtractorName, classLoader);
 
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        setClassExtractor((ClassExtractor) AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(classExtractorClass)));
+                        setClassExtractor( AccessController.<ClassExtractor>doPrivileged(new PrivilegedNewInstanceFromClass<>(classExtractorClass)));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(classExtractorName, exception.getException());
                     }
                 } else {
-                    setClassExtractor((ClassExtractor) PrivilegedAccessHelper.newInstanceFromClass(classExtractorClass));
+                    setClassExtractor(PrivilegedAccessHelper.<ClassExtractor>newInstanceFromClass(classExtractorClass));
                 }
-            } catch (IllegalAccessException ex) {
+            } catch (ReflectiveOperationException ex) {
                 throw ValidationException.reflectiveExceptionWhileCreatingClassInstance(classExtractorName, ex);
-            } catch (InstantiationException e) {
-                throw ValidationException.reflectiveExceptionWhileCreatingClassInstance(classExtractorName, e);
             }
         }
     }
@@ -459,16 +457,16 @@
      * INTERNAL:
      * Convert the given className to an actual class.
      */
-    protected Class convertClassNameToClass(String className, ClassLoader classLoader) {
+    protected <T> Class<T> convertClassNameToClass(String className, ClassLoader classLoader) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    return AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                    return AccessController.<Class<T>>doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(className, (Exception)exception.getCause());
                 }
             } else {
-                return PrivilegedAccessHelper.getClassForName(className, true, classLoader);
+                return PrivilegedAccessHelper.<T>getClassForName(className, true, classLoader);
             }
         } catch (ClassNotFoundException exc){
             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exc);
@@ -503,7 +501,7 @@
      */
     protected List<Object> getAllChildClassIndicators() {
         if (allChildClassIndicators == null) {
-            allChildClassIndicators = new ArrayList(4);
+            allChildClassIndicators = new ArrayList<>(4);
         }
         return allChildClassIndicators;
     }
@@ -517,7 +515,7 @@
     @Override
     public List<ClassDescriptor> getAllChildDescriptors() {
         // Guess the number of child descriptors...
-        List<ClassDescriptor> allChildDescriptors = new ArrayList(this.getAllChildClassIndicators().size());
+        List<ClassDescriptor> allChildDescriptors = new ArrayList<>(this.getAllChildClassIndicators().size());
         return getAllChildDescriptors(allChildDescriptors);
     }
 
@@ -561,7 +559,7 @@
      * INTERNAL:
      * all tables for reference class plus childrenTables
      */
-    public Vector getAllTables() {
+    public Vector<DatabaseTable> getAllTables() {
         if (allTables == null) {
             return this.getDescriptor().getTables();
         } else {
@@ -669,8 +667,8 @@
      * Return the class indicator associations for XML.
      * List of class-name/value associations.
      */
-    public Vector getClassIndicatorAssociations() {
-        Vector associations = new Vector(getClassNameIndicatorMapping().size() / 2);
+    public Vector<Association> getClassIndicatorAssociations() {
+        Vector<Association> associations = new Vector<>(getClassNameIndicatorMapping().size() / 2);
         Iterator classesEnum = getClassNameIndicatorMapping().keySet().iterator();
         Iterator valuesEnum = getClassNameIndicatorMapping().values().iterator();
         while (classesEnum.hasNext()) {
@@ -678,7 +676,7 @@
 
             // If the project was built in runtime is a class, MW is a string.
             if (className instanceof Class) {
-                className = ((Class)className).getName();
+                className = ((Class<?>)className).getName();
             }
             Object value = valuesEnum.next();
             associations.addElement(new TypedAssociation(className, value));
@@ -869,7 +867,7 @@
      */
     public ClassDescriptor getSubclassDescriptor(Class theClass) {
         if (hasChildren()) {
-            for (Iterator enumtr = getChildDescriptors().iterator(); enumtr.hasNext();) {
+            for (Iterator<ClassDescriptor> enumtr = getChildDescriptors().iterator(); enumtr.hasNext();) {
                 ClassDescriptor childDescriptor = (ClassDescriptor)enumtr.next();
                 if (childDescriptor.getJavaClass().equals(theClass)) {
                     return childDescriptor;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InterfacePolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InterfacePolicy.java
index 760e380..4ba73f8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InterfacePolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/InterfacePolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -44,12 +44,12 @@
  * @since TopLink for Java 2.0
  */
 public class InterfacePolicy implements Serializable, Cloneable {
-    protected List<Class> parentInterfaces;
+    protected List<Class<?>> parentInterfaces;
     protected List<String> parentInterfaceNames;
     protected List<ClassDescriptor> parentDescriptors;
     protected List<ClassDescriptor> childDescriptors;
     protected ClassDescriptor descriptor;
-    protected Class implementorDescriptor;
+    protected Class<?> implementorDescriptor;
     protected String implementorDescriptorClassName;
 
     /**
@@ -58,10 +58,10 @@
      * Only descriptor involved in interface should have a policy.
      */
     public InterfacePolicy() {
-        this.childDescriptors = new ArrayList();
-        this.parentInterfaces = new ArrayList(2);
-        this.parentInterfaceNames = new ArrayList(2);
-        this.parentDescriptors = new ArrayList(2);
+        this.childDescriptors = new ArrayList<>();
+        this.parentInterfaces = new ArrayList<>(2);
+        this.parentInterfaceNames = new ArrayList<>(2);
+        this.parentDescriptors = new ArrayList<>(2);
     }
 
     /**
@@ -96,7 +96,7 @@
      *
      * This method should be called once for each parent Interface of the Descriptor.
      */
-    public void addParentInterface(Class parentInterface) {
+    public void addParentInterface(Class<?> parentInterface) {
         getParentInterfaces().add(parentInterface);
     }
 
@@ -128,8 +128,9 @@
      * INTERNAL:
      * Returns the implementor descriptor class.
      */
-    public Class getImplementorDescriptor() {
-        return implementorDescriptor;
+    @SuppressWarnings({"unchecked"})
+    public <T> Class<T> getImplementorDescriptor() {
+        return (Class<T>) implementorDescriptor;
     }
 
     /**
@@ -155,7 +156,7 @@
      * INTERNAL:
      * Return the list of parent interfaces.
      */
-    public List<Class> getParentInterfaces() {
+    public List<Class<?>> getParentInterfaces() {
         return parentInterfaces;
     }
 
@@ -175,14 +176,14 @@
      * It will also convert referenced classes to the versions of the classes from the classLoader.
      */
     public void convertClassNamesToClasses(ClassLoader classLoader) {
-        List<Class> newParentInterfaces = new ArrayList(2);
-        for (Iterator iterator = getParentInterfaceNames().iterator(); iterator.hasNext(); ) {
-            String interfaceName = (String)iterator.next();
-            Class interfaceClass = null;
+        List<Class<?>> newParentInterfaces = new ArrayList<>(2);
+        for (Iterator<String> iterator = getParentInterfaceNames().iterator(); iterator.hasNext(); ) {
+            String interfaceName = iterator.next();
+            Class<?> interfaceClass = null;
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        interfaceClass = AccessController.doPrivileged(new PrivilegedClassForName(interfaceName, true, classLoader));
+                        interfaceClass = AccessController.doPrivileged(new PrivilegedClassForName<>(interfaceName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(interfaceName, exception.getException());
                     }
@@ -235,7 +236,7 @@
      */
     protected ObjectLevelReadQuery prepareQuery(ObjectLevelReadQuery query) {
         ObjectLevelReadQuery concreteQuery = null;
-        Class javaClass = this.descriptor.getJavaClass();
+        Class<?> javaClass = this.descriptor.getJavaClass();
         // PERF: First check the subclass query cache for the prepared query.
         boolean shouldPrepare = query.shouldPrepare();
         if (shouldPrepare) {
@@ -258,7 +259,7 @@
                 concreteQuery.setSelectionCriteria(concreteQuery.getQueryMechanism().getSelectionCriteria().rebuildOn(concreteQuery.getExpressionBuilder()));
             }
             if (concreteQuery.hasAdditionalFields()) {
-                List rebuiltFields = new ArrayList(concreteQuery.getAdditionalFields().size());
+                List<Object> rebuiltFields = new ArrayList<>(concreteQuery.getAdditionalFields().size());
                 for (Object field : concreteQuery.getAdditionalFields()) {
                     if (field instanceof Expression) {
                         rebuiltFields.add(((Expression)field).rebuildOn(concreteQuery.getExpressionBuilder()));
@@ -350,7 +351,7 @@
      * INTERNAL:
      * Sets the implementor descriptor class.
      */
-    public void setImplementorDescriptor(Class implementorDescriptor) {
+    public void setImplementorDescriptor(Class<?> implementorDescriptor) {
         this.implementorDescriptor = implementorDescriptor;
     }
 
@@ -365,7 +366,7 @@
     /**
      * Set the Vector to store parent interfaces.
      */
-    public void setParentInterfaces(List<Class> parentInterfaces) {
+    public void setParentInterfaces(List<Class<?>> parentInterfaces) {
         this.parentInterfaces = parentInterfaces;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/MethodClassExtractor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/MethodClassExtractor.java
index b6ce2d5..6cb0992 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/MethodClassExtractor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/MethodClassExtractor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -92,7 +92,7 @@
     @Override
     public void initialize(ClassDescriptor descriptor, Session session) throws DescriptorException {
         setDescriptor(descriptor);
-        Class[] declarationParameters = new Class[1];
+        Class<?>[] declarationParameters = new Class[1];
         declarationParameters[0] = ClassConstants.DatabaseRow_Class;
 
         try {
@@ -123,15 +123,15 @@
      * the value is the database value.
      */
     @Override
-    public Class extractClassFromRow(Record row, org.eclipse.persistence.sessions.Session session) {
-        Class classForRow;
-
+    @SuppressWarnings({"unchecked"})
+    public <T> Class<T> extractClassFromRow(Record row, org.eclipse.persistence.sessions.Session session) {
+        Class<?> classForRow;
         try {
             Object[] arguments = new Object[1];
             arguments[0] = row;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    classForRow = (Class)AccessController.doPrivileged(new PrivilegedMethodInvoker(getClassExtractionMethod(), null, arguments));
+                    classForRow = AccessController.doPrivileged(new PrivilegedMethodInvoker<>(getClassExtractionMethod(), null, arguments));
                 } catch (PrivilegedActionException exception) {
                     Exception throwableException = exception.getException();
                     if (throwableException instanceof IllegalAccessException) {
@@ -141,7 +141,7 @@
                     }
                 }
             } else {
-                classForRow = (Class)PrivilegedAccessHelper.invokeMethod(getClassExtractionMethod(), null, arguments);
+                classForRow = PrivilegedAccessHelper.invokeMethod(getClassExtractionMethod(), null, arguments);
             }
         } catch (IllegalAccessException exception) {
             throw DescriptorException.illegalAccessWhileInvokingRowExtractionMethod((AbstractRecord)row, getClassExtractionMethod(), getDescriptor(), exception);
@@ -149,7 +149,7 @@
             throw DescriptorException.targetInvocationWhileInvokingRowExtractionMethod((AbstractRecord)row, getClassExtractionMethod(), getDescriptor(), exception);
         }
 
-        return classForRow;
+        return (Class<T>) classForRow;
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ReturningPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ReturningPolicy.java
index 0cb76ea..4b88232 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ReturningPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ReturningPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -56,7 +56,7 @@
      * Should be filled out before initialize() is called:
      * fields added after initialization are ignored.
      */
-    protected List<Info> infos = new ArrayList();
+    protected List<Info> infos = new ArrayList<>();
 
     /**
      * The following attributes are initialized by initialize() method.
@@ -80,7 +80,7 @@
      * maps ClassDescriptor's tables into Vectors of fields to be used for call generation.
      * Lazily initialized array [NUM_OPERATIONS]
      */
-    protected Map<DatabaseTable, Vector<DatabaseField>>[] tableToFieldsForGenerationMap;
+    protected Map<DatabaseTable, List<DatabaseField>>[] tableToFieldsForGenerationMap;
 
     /** indicates whether ReturningPolicy is used for generation of the PK. */
     protected boolean isUsedToSetPrimaryKey;
@@ -109,12 +109,12 @@
     protected void fieldIsNotFromDescriptor(DatabaseField field) {
         if (field.getTable().equals(getDescriptor().getDefaultTable())) {
             if (this.fieldsNotFromDescriptor_DefaultTable == null) {
-                this.fieldsNotFromDescriptor_DefaultTable = new HashMap();
+                this.fieldsNotFromDescriptor_DefaultTable = new HashMap<>();
             }
             this.fieldsNotFromDescriptor_DefaultTable.put(field, field);
         } else {
             if (this.fieldsNotFromDescriptor_OtherTables == null) {
-                this.fieldsNotFromDescriptor_OtherTables = new HashMap();
+                this.fieldsNotFromDescriptor_OtherTables = new HashMap<>();
             }
             this.fieldsNotFromDescriptor_OtherTables.put(field, field);
         }
@@ -123,14 +123,14 @@
     /**
      * INTERNAL:
      */
-    public Vector getFieldsToGenerateInsert(DatabaseTable table) {
+    public List<? extends DatabaseField> getFieldsToGenerateInsert(DatabaseTable table) {
         return getVectorOfFieldsToGenerate(INSERT, table);
     }
 
     /**
      * INTERNAL:
      */
-    public Vector getFieldsToGenerateUpdate(DatabaseTable table) {
+    public List<? extends DatabaseField> getFieldsToGenerateUpdate(DatabaseTable table) {
         return getVectorOfFieldsToGenerate(UPDATE, table);
     }
 
@@ -170,17 +170,17 @@
      * Note that the passed Collections are cloned.
      * Used for testing only.
      */
-    public static boolean areCollectionsEqualAsSets(Collection col1, Collection col2) {
+    public static boolean areCollectionsEqualAsSets(Collection<? extends Info> col1, Collection<? extends Info> col2) {
         if (col1 == col2) {
             return true;
         }
         if (col1.size() != col2.size()) {
             return false;
         }
-        Collection c1 = new ArrayList(col1);
-        Collection c2 = new ArrayList(col2);
-        for (Iterator i = c1.iterator(); i.hasNext();) {
-            Object o = i.next();
+        Collection<Info> c1 = new ArrayList<Info>(col1);
+        Collection<Info> c2 = new ArrayList<>(col2);
+        for (Iterator<Info> i = c1.iterator(); i.hasNext();) {
+            Info o = i.next();
             c2.remove(o);
         }
         return c2.isEmpty();
@@ -189,25 +189,26 @@
     /**
      * INTERNAL:
      */
-    protected Vector<DatabaseField> getVectorOfFieldsToGenerate(int operation, DatabaseTable table) {
+    @SuppressWarnings({"unchecked"})
+    protected List<DatabaseField> getVectorOfFieldsToGenerate(int operation, DatabaseTable table) {
         if (this.main[operation][ALL] == null) {
             return null;
         }
         if (this.tableToFieldsForGenerationMap == null) {
             // the method is called for the first time
-            tableToFieldsForGenerationMap = new HashMap[NUM_OPERATIONS];
+            tableToFieldsForGenerationMap = (Map<DatabaseTable, List<DatabaseField>>[]) new HashMap[NUM_OPERATIONS];
         }
         if (this.tableToFieldsForGenerationMap[operation] == null) {
             // the method is called for the first time for this operation
-            this.tableToFieldsForGenerationMap[operation] = new HashMap();
+            this.tableToFieldsForGenerationMap[operation] = new HashMap<>();
         }
-        Vector<DatabaseField> fieldsForGeneration = this.tableToFieldsForGenerationMap[operation].get(table);
+        List<DatabaseField> fieldsForGeneration = this.tableToFieldsForGenerationMap[operation].get(table);
         if (fieldsForGeneration == null) {
             // the method is called for the first time for this operation and this table
-            fieldsForGeneration = new NonSynchronizedVector();
-            Iterator it = this.main[operation][ALL].iterator();
+            fieldsForGeneration = new ArrayList<>();
+            Iterator<DatabaseField> it = this.main[operation][ALL].iterator();
             while (it.hasNext()) {
-                DatabaseField field = (DatabaseField)it.next();
+                DatabaseField field = it.next();
                 if (field.getTable().equals(table)) {
                     fieldsForGeneration.add(field);
                 }
@@ -265,7 +266,7 @@
      * Define that the field will be returned from an insert operation.
      * The type may be required to bind the output parameter if not known by the mapping.
      */
-    public void addFieldForInsert(String qualifiedName, Class type) {
+    public void addFieldForInsert(String qualifiedName, Class<?> type) {
         addFieldForInsert(createField(qualifiedName, type));
     }
 
@@ -321,7 +322,7 @@
      * Define that the field will be returned from an update operation.
      * The type may be required to bind the output parameter if not known by the mapping.
      */
-    public void addFieldForUpdate(String qualifiedName, Class type) {
+    public void addFieldForUpdate(String qualifiedName, Class<?> type) {
         addFieldForUpdate(createField(qualifiedName, type));
     }
 
@@ -348,7 +349,7 @@
         private boolean isInsert;
         private boolean isInsertModeReturnOnly;
         private boolean isUpdate;
-        private Class referenceClass;
+        private Class<? extends Object> referenceClass;
         private String referenceClassName;
 
         Info() {
@@ -402,11 +403,11 @@
             this.isUpdate = isUpdate;
         }
 
-        public Class getReferenceClass() {
+        public Class<? extends Object> getReferenceClass() {
             return referenceClass;
         }
 
-        public void setReferenceClass(Class referenceClass) {
+        public void setReferenceClass(Class<?> referenceClass) {
             this.referenceClass = referenceClass;
             if (referenceClass != null) {
                 this.referenceClassName = referenceClass.getName();
@@ -497,7 +498,7 @@
         @Override
         public int hashCode() {
             DatabaseField field = getField();
-            Class type = field != null ? field.getType() : null;
+            Class<? extends Object> type = field != null ? field.getType() : null;
             boolean isInsert = isInsert();
             boolean isInsertModeReturnOnly = isInsertModeReturnOnly();
             boolean isUpdate = isUpdate();
@@ -577,8 +578,8 @@
     /**
      * INTERNAL:
      */
-    protected Collection createCollection() {
-        return new HashSet();
+    protected Collection<DatabaseField> createCollection() {
+        return new HashSet<>();
     }
 
     // precondition field != null
@@ -589,7 +590,7 @@
         main[operation][state].add(field);
     }
 
-    protected void addCollectionToMain(int operation, int state, Collection collection) {
+    protected void addCollectionToMain(int operation, int state, Collection<? extends DatabaseField> collection) {
         if ((collection == null) || collection.isEmpty()) {
             return;
         }
@@ -620,8 +621,8 @@
         }
     }
 
-    protected Hashtable removeDuplicateAndValidateInfos(AbstractSession session) {
-        Hashtable infoHashtable = new Hashtable();
+    protected Hashtable<DatabaseField, Info> removeDuplicateAndValidateInfos(AbstractSession session) {
+        Hashtable<DatabaseField, Info> infoHashtable = new Hashtable<DatabaseField, Info>();
         for (int i = 0; i < infos.size(); i++) {
             Info info1 = infos.get(i);
             info1 = (Info)info1.clone();
@@ -633,7 +634,7 @@
                 info1.getField().setName(descField.getName());
                 info1.getField().setTableName(getDescriptor().getDefaultTable().getQualifiedNameDelimited(session.getPlatform()));
             }
-            Info info2 = (Info)infoHashtable.get(info1.getField());
+            Info info2 = infoHashtable.get(info1.getField());
             if (info2 == null) {
                 infoHashtable.put(info1.getField(), info1);
             } else {
@@ -654,9 +655,10 @@
     /**
      * INTERNAL:
      */
+    @SuppressWarnings({"unchecked"})
     public void initialize(AbstractSession session) {
         clearInitialization();
-        main = new Collection[NUM_OPERATIONS][MAIN_SIZE];
+        main = (Collection<DatabaseField>[][]) new Collection[NUM_OPERATIONS][MAIN_SIZE];
 
         // The order of descriptor initialization guarantees initialization of Parent before children.
         // main array is copied from Parent's ReturningPolicy
@@ -668,11 +670,11 @@
         }
 
         if (!infos.isEmpty()) {
-            Hashtable infoHashtable = removeDuplicateAndValidateInfos(session);
+            Hashtable<? extends DatabaseField, ? extends Info> infoHashtable = removeDuplicateAndValidateInfos(session);
             Hashtable infoHashtableUnmapped = (Hashtable)infoHashtable.clone();
-            for (Enumeration fields = getDescriptor().getFields().elements();
-                     fields.hasMoreElements();) {
-                DatabaseField field = (DatabaseField)fields.nextElement();
+            for (Enumeration<DatabaseField> fields = getDescriptor().getFields().elements();
+                 fields.hasMoreElements();) {
+                DatabaseField field = fields.nextElement();
                 Info info = (Info)infoHashtableUnmapped.get(field);
                 if (info != null) {
                     infoHashtableUnmapped.remove(field);
@@ -711,7 +713,7 @@
     }
 
     protected void copyMainFrom(ReturningPolicy policy) {
-        Collection[][] mainToCopy = policy.main;
+        Collection<? extends DatabaseField>[][] mainToCopy = policy.main;
         for (int operation = INSERT; operation <= UPDATE; operation++) {
             for (int state = RETURN_ONLY; state < MAIN_SIZE; state++) {
                 addCollectionToMain(operation, state, mainToCopy[operation][state]);
@@ -743,12 +745,12 @@
         }
 
         // now compare types
-        Hashtable allFields = new Hashtable();
+        Hashtable<DatabaseField, DatabaseField> allFields = new Hashtable<DatabaseField, DatabaseField>();
         for (int operation = INSERT; operation <= UPDATE; operation++) {
             if (main[operation][ALL] != null) {
-                Iterator it = main[operation][ALL].iterator();
+                Iterator<DatabaseField> it = main[operation][ALL].iterator();
                 while (it.hasNext()) {
-                    DatabaseField field = (DatabaseField)it.next();
+                    DatabaseField field = it.next();
                     allFields.put(field, field);
                 }
             }
@@ -758,7 +760,7 @@
                 Iterator it = mainToCompare[operation][ALL].iterator();
                 while (it.hasNext()) {
                     DatabaseField fieldToCompare = (DatabaseField)it.next();
-                    DatabaseField field = (DatabaseField)allFields.get(fieldToCompare);
+                    DatabaseField field = allFields.get(fieldToCompare);
                     if (!field.getType().equals(fieldToCompare.getType())) {
                         return false;
                     }
@@ -780,7 +782,7 @@
         if ((modifyRow == null) || modifyRow.isEmpty()) {
             return;
         }
-        Collection fields = main[operation][RETURN_ONLY];
+        Collection<? extends DatabaseField> fields = main[operation][RETURN_ONLY];
         if ((fields == null) || fields.isEmpty()) {
             return;
         }
@@ -812,7 +814,7 @@
         if ((main[INSERT][MAPPED] == null) || main[INSERT][MAPPED].isEmpty()) {
             return;
         }
-        List primaryKeys = getDescriptor().getPrimaryKeyFields();
+        List<DatabaseField> primaryKeys = getDescriptor().getPrimaryKeyFields();
         for (int index = 0; (index < primaryKeys.size()) && !isUsedToSetPrimaryKey; index++) {
             this.isUsedToSetPrimaryKey = main[INSERT][MAPPED].contains(primaryKeys.get(index));
         }
@@ -822,10 +824,10 @@
         boolean ok = true;
         verifyField(session, field, getDescriptor());
         DatabaseMapping mapping;
-        List readOnlyMappings = getDescriptor().getObjectBuilder().getReadOnlyMappingsForField(field);
+        List<DatabaseMapping> readOnlyMappings = getDescriptor().getObjectBuilder().getReadOnlyMappingsForField(field);
         if (readOnlyMappings != null) {
             for (int j = 0; j < readOnlyMappings.size(); j++) {
-                mapping = (DatabaseMapping)readOnlyMappings.get(j);
+                mapping = readOnlyMappings.get(j);
                 ok &= verifyFieldAndMapping(session, field, getDescriptor(), mapping);
             }
         }
@@ -877,21 +879,21 @@
      * INTERNAL:
      */
     public void validationAfterDescriptorInitialization(AbstractSession session) {
-        Hashtable mapped = new Hashtable();
+        Hashtable<DatabaseField, DatabaseField> mapped = new Hashtable<DatabaseField, DatabaseField>();
         for (int operation = INSERT; operation <= UPDATE; operation++) {
             if ((main[operation][MAPPED] != null) && !main[operation][MAPPED].isEmpty()) {
-                Iterator it = main[operation][MAPPED].iterator();
+                Iterator<DatabaseField> it = main[operation][MAPPED].iterator();
                 while (it.hasNext()) {
-                    DatabaseField field = (DatabaseField)it.next();
+                    DatabaseField field = it.next();
                     mapped.put(field, field);
                 }
             }
         }
         if (!mapped.isEmpty()) {
-            for (Enumeration fields = getDescriptor().getFields().elements();
-                     fields.hasMoreElements();) {
-                DatabaseField fieldInDescriptor = (DatabaseField)fields.nextElement();
-                DatabaseField fieldInMain = (DatabaseField)mapped.get(fieldInDescriptor);
+            for (Enumeration<DatabaseField> fields = getDescriptor().getFields().elements();
+                 fields.hasMoreElements();) {
+                DatabaseField fieldInDescriptor = fields.nextElement();
+                DatabaseField fieldInMain = mapped.get(fieldInDescriptor);
                 if (fieldInMain != null) {
                     if (fieldInMain.getType() == null) {
                         if (getDescriptor().isReturnTypeRequiredForReturningPolicy()) {
@@ -921,15 +923,15 @@
                     // that's why SQLCall can't be verified here.
                     DatabaseCall customCall = (DatabaseCall)query[operation].getDatasourceCall();
                     Enumeration outputRowFields = customCall.getOutputRowFields().elements();
-                    Collection notFoundInOutputRow = createCollection();
+                    Collection<DatabaseField> notFoundInOutputRow = createCollection();
                     notFoundInOutputRow.addAll(main[operation][ALL]);
                     while (outputRowFields.hasMoreElements()) {
                         notFoundInOutputRow.remove(outputRowFields.nextElement());
                     }
                     if (!notFoundInOutputRow.isEmpty()) {
-                        Iterator it = notFoundInOutputRow.iterator();
+                        Iterator<DatabaseField> it = notFoundInOutputRow.iterator();
                         while (it.hasNext()) {
-                            DatabaseField field = (DatabaseField)it.next();
+                            DatabaseField field = it.next();
                             session.getIntegrityChecker().handleError(DescriptorException.customQueryAndReturningPolicyFieldConflict(field.getName(), queryTypeName[operation], getDescriptor()));
                         }
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/SelectedFieldsLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/SelectedFieldsLockingPolicy.java
index de9ddf3..8747ee3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/SelectedFieldsLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/SelectedFieldsLockingPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -54,8 +54,8 @@
      */
     public SelectedFieldsLockingPolicy() {
         super();
-        this.lockFieldsByTable = new HashMap(4);
-        this.lockFields = new ArrayList();
+        this.lockFieldsByTable = new HashMap<>(4);
+        this.lockFields = new ArrayList<>();
     }
 
     /**
@@ -126,7 +126,7 @@
     protected List<DatabaseField> getLockFields(DatabaseTable table) {
         List<DatabaseField> temp = this.lockFieldsByTable.get(table);
         if (temp == null) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
         return temp;
     }
@@ -152,7 +152,7 @@
             lockFields.set(index, field);
             List<DatabaseField> fieldsForTable = getLockFieldsByTable().get(field.getTable());
             if (fieldsForTable == null) {
-                fieldsForTable = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance();
+                fieldsForTable = new ArrayList<>();
                 getLockFieldsByTable().put(field.getTable(), fieldsForTable);
             }
             fieldsForTable.add(field);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/TimestampLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/TimestampLockingPolicy.java
index 00590b4..0328762 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/TimestampLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/TimestampLockingPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -88,8 +88,9 @@
      * Return the default timestamp locking filed java type, default is Timestamp.
      */
     @Override
-    protected Class getDefaultLockingFieldType() {
-        return ClassConstants.TIMESTAMP;
+    @SuppressWarnings({"unchecked"})
+    protected <T> Class<T> getDefaultLockingFieldType() {
+        return (Class<T>) ClassConstants.TIMESTAMP;
     }
 
     /**
@@ -98,8 +99,9 @@
      * null in some situations.
      */
     @Override
-    public Object getBaseValue(){
-        return new Timestamp(0);
+    @SuppressWarnings({"unchecked"})
+    public <T> T getBaseValue(){
+        return (T) new Timestamp(0);
     }
 
     /**
@@ -107,9 +109,10 @@
      * returns the initial locking value
      */
     @Override
-    protected Object getInitialWriteValue(AbstractSession session) {
+    @SuppressWarnings({"unchecked"})
+    protected <T> T getInitialWriteValue(AbstractSession session) {
         if (usesLocalTime()) {
-            return new Timestamp(System.currentTimeMillis());
+            return (T) new Timestamp(System.currentTimeMillis());
         }
         if (usesServerTime()) {
             AbstractSession readSession = session.getSessionForClass(getDescriptor().getJavaClass());
@@ -117,7 +120,7 @@
                 readSession = readSession.getParent().getSessionForClass(getDescriptor().getJavaClass());
             }
 
-            return readSession.getDatasourceLogin().getDatasourcePlatform().getTimestampFromServer(session, readSession.getName());
+            return (T) readSession.getDatasourceLogin().getDatasourcePlatform().getTimestampFromServer(session, readSession.getName());
         }
         return null;
 
@@ -128,7 +131,7 @@
      * Returns the new Timestamp value.
      */
     @Override
-    public Object getNewLockValue(ModifyQuery query) {
+    public <T> T getNewLockValue(ModifyQuery query) {
         return getInitialWriteValue(query.getSession());
     }
 
@@ -138,9 +141,10 @@
      * is stored in the object, then return a null.
      */
     @Override
-    public Object getValueToPutInCache(AbstractRecord row, AbstractSession session) {
+    @SuppressWarnings({"unchecked"})
+    public <T> T getValueToPutInCache(AbstractRecord row, AbstractSession session) {
         if (isStoredInCache()) {
-            return session.getDatasourcePlatform().convertObject(row.get(getWriteLockField()), ClassConstants.TIMESTAMP);
+            return (T) session.getDatasourcePlatform().convertObject(row.get(getWriteLockField()), ClassConstants.TIMESTAMP);
         } else {
             return null;
         }
@@ -177,7 +181,8 @@
      * This method will return the optimistic lock value for the object.
      */
     @Override
-    public Object getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
+    @SuppressWarnings({"unchecked"})
+    public <T> T getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
         java.sql.Timestamp writeLockFieldValue = null;
         if (isStoredInCache()) {
             writeLockFieldValue = (java.sql.Timestamp)session.getIdentityMapAccessorInstance().getWriteLockValue(primaryKey, domainObject.getClass(), getDescriptor());
@@ -192,7 +197,7 @@
                 }
             }
         }
-        return writeLockFieldValue;
+        return (T) writeLockFieldValue;
     }
 
     /**
@@ -239,7 +244,7 @@
     @Override
     public boolean isNewerVersion(AbstractRecord databaseRow, Object domainObject, Object primaryKey, AbstractSession session) {
         java.sql.Timestamp writeLockFieldValue;
-        java.sql.Timestamp newWriteLockFieldValue = (java.sql.Timestamp)session.getDatasourcePlatform().convertObject(databaseRow.get(getWriteLockField()), ClassConstants.TIMESTAMP);
+        java.sql.Timestamp newWriteLockFieldValue = session.getDatasourcePlatform().convertObject(databaseRow.get(getWriteLockField()), ClassConstants.TIMESTAMP);
         if (isStoredInCache()) {
             writeLockFieldValue = (java.sql.Timestamp)session.getIdentityMapAccessorInstance().getWriteLockValue(primaryKey, domainObject.getClass(), getDescriptor());
         } else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/VersionLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/VersionLockingPolicy.java
index 7830450..cab5636 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/VersionLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/VersionLockingPolicy.java
@@ -209,12 +209,11 @@
 
     /**
      * INTERNAL:
-
      * Return the default version locking filed java type, default is BigDecimal
-
      */
-    protected Class getDefaultLockingFieldType() {
-        return ClassConstants.LONG;
+    @SuppressWarnings({"unchecked"})
+    protected <T> Class<T> getDefaultLockingFieldType() {
+        return (Class<T>) ClassConstants.LONG;
 
     }
 
@@ -224,8 +223,9 @@
      * null in some situations.
      */
     @Override
-    public Object getBaseValue() {
-        return 0L;
+    @SuppressWarnings({"unchecked"})
+    public <T> T getBaseValue() {
+        return (T) Long.valueOf(0L);
     }
 
     /**
@@ -239,8 +239,9 @@
      * INTERNAL:
      * returns the initial locking value
      */
-    protected Object getInitialWriteValue(AbstractSession session) {
-        return 1L;
+    @SuppressWarnings({"unchecked"})
+    protected <T> T getInitialWriteValue(AbstractSession session) {
+        return (T) Long.valueOf(1L);
     }
 
     /**
@@ -260,8 +261,9 @@
      * This method gets the write lock value from either the cache or
      * the object stored in the query.  It then returns the new incremented value.
      */
-    public Object getNewLockValue(ModifyQuery query) {
-        Class objectClass = query.getDescriptor().getJavaClass();
+    @SuppressWarnings({"unchecked"})
+    public <T> T getNewLockValue(ModifyQuery query) {
+        Class<?> objectClass = query.getDescriptor().getJavaClass();
         Number value;
         Number newWriteLockValue = null;
         if (isStoredInCache()) {
@@ -275,7 +277,7 @@
 
         // Increment the value, this goes to the database
         newWriteLockValue = incrementWriteLockValue(value);
-        return newWriteLockValue;
+        return (T) newWriteLockValue;
     }
 
     /**
@@ -285,8 +287,8 @@
      * cache, a vector with one value is returned.  In the case
      * of being stored in the object, an empty vector is returned.
      */
-    protected Vector getUnmappedFields() {
-        Vector fields = new Vector(1);
+    protected Vector<DatabaseField> getUnmappedFields() {
+        Vector<DatabaseField> fields = new Vector<>(1);
         if (isStoredInCache()) {
             fields.addElement(getWriteLockField());
         }
@@ -299,9 +301,10 @@
      * If the value is stored in the object, then return a null.
      */
     @Override
-    public Object getValueToPutInCache(AbstractRecord row, AbstractSession session) {
+    @SuppressWarnings({"unchecked"})
+    public <T> T getValueToPutInCache(AbstractRecord row, AbstractSession session) {
         if (isStoredInCache()) {
-            return row.get(getWriteLockField());
+            return (T) row.get(getWriteLockField());
         } else {
             return null;
         }
@@ -367,7 +370,8 @@
      * This method will return the optimistic lock value for the object
      */
     @Override
-    public Object getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
+    @SuppressWarnings({"unchecked"})
+    public <T> T getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session) {
         Number writeLockFieldValue;
         if (isStoredInCache()) {
             if (primaryKey == null) {
@@ -377,7 +381,7 @@
         } else {
             writeLockFieldValue = (Number)lockValueFromObject(domainObject);
         }
-        return writeLockFieldValue;
+        return (T) writeLockFieldValue;
     }
 
     /**
@@ -433,10 +437,10 @@
             // Set the default type, only if un-mapped.
             dbField.setType(getDefaultLockingFieldType());
         }
-        Enumeration enumtr = this.getUnmappedFields().elements();
+        Enumeration<DatabaseField> enumtr = this.getUnmappedFields().elements();
         while (enumtr.hasMoreElements()) {
             DatabaseField lockField;
-            lockField = (DatabaseField)enumtr.nextElement();
+            lockField = enumtr.nextElement();
             descriptor.getFields().addElement(lockField);
         }
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/AttributeChangeTrackingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/AttributeChangeTrackingPolicy.java
index 3f9ad93..9c6de47 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/AttributeChangeTrackingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/AttributeChangeTrackingPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -74,7 +74,7 @@
                 // check for deferred changes
                 if (changes.hasDeferredAttributes()){
                     //need to calculate the changes for these attributes.
-                    for (Iterator iterator = changes.getDeferredSet().iterator(); iterator.hasNext();){
+                    for (Iterator<String> iterator = changes.getDeferredSet().iterator(); iterator.hasNext();){
                         DatabaseMapping mapping = descriptor.getObjectBuilder().getMappingForAttributeName((String)iterator.next());
                         mapping.calculateDeferredChanges((ChangeRecord)changes.getChangesForAttributeNamed(mapping.getAttributeName()), session);
                     }
@@ -91,7 +91,7 @@
                 if(descriptor.hasFetchGroupManager()) {
                     fetchGroup = descriptor.getFetchGroupManager().getObjectFetchGroup(clone);
                 }
-                List mappings = descriptor.getMappings();
+                List<DatabaseMapping> mappings = descriptor.getMappings();
                 int size = mappings.size();
                 for (int index = 0; index < size; index++) {
                     DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/DeferredChangeDetectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/DeferredChangeDetectionPolicy.java
index fcba3e7..2151ee6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/DeferredChangeDetectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/DeferredChangeDetectionPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -186,7 +186,7 @@
         // PERF: Do not create change records for new objects.
         if (!isNew || descriptor.shouldUseFullChangeSetsForNewObjects() || descriptor.isDescriptorTypeAggregate()) {
             // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-            List mappings = descriptor.getMappings();
+            List<DatabaseMapping> mappings = descriptor.getMappings();
             int mappingsSize = mappings.size();
             if(shouldGetFetchGroup && descriptor.hasFetchGroupManager()) {
                 fetchGroup = descriptor.getFetchGroupManager().getObjectFetchGroup(clone);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/ObjectChangeTrackingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/ObjectChangeTrackingPolicy.java
index 42da641..1eb7b83 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/ObjectChangeTrackingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/changetracking/ObjectChangeTrackingPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -147,7 +147,7 @@
             // Must also ensure the listener has been set on collections and aggregates.
             FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager();
             boolean isPartialObject = (fetchGroupManager != null) && fetchGroupManager.isPartialObject(clone);
-            List mappings = builder.getRelationshipMappings();
+            List<DatabaseMapping> mappings = builder.getRelationshipMappings();
             int size = mappings.size();
             // Only cascade fetched mappings.
             for (int index = 0; index < size; index++) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/CustomPartitioningPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/CustomPartitioningPolicy.java
index 4afb55c..d89d351 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/CustomPartitioningPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/CustomPartitioningPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -65,11 +65,11 @@
         }
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                Class partitioningClass = AccessController.doPrivileged(new PrivilegedClassForName(getPartitioningClasName(), true, classLoader));
-                this.policy = (PartitioningPolicy)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(partitioningClass));
+                Class<? extends PartitioningPolicy> partitioningClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getPartitioningClasName(), true, classLoader));
+                this.policy = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(partitioningClass));
             } else {
-                Class partitioningClass = PrivilegedAccessHelper.getClassForName(getPartitioningClasName(), true, classLoader);
-                this.policy = (PartitioningPolicy)PrivilegedAccessHelper.newInstanceFromClass(partitioningClass);
+                Class<? extends PartitioningPolicy> partitioningClass = PrivilegedAccessHelper.getClassForName(getPartitioningClasName(), true, classLoader);
+                this.policy = PrivilegedAccessHelper.newInstanceFromClass(partitioningClass);
             }
         } catch (PrivilegedActionException exception) {
             throw ValidationException.classNotFoundWhileConvertingClassNames(getPartitioningClasName(), exception.getException());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/RangePartition.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/RangePartition.java
index fcabeff..b5ded37 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/RangePartition.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/RangePartition.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -81,7 +81,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        partitionValueType = AccessController.doPrivileged(new PrivilegedClassForName(partitionValueTypeName, true, classLoader));
+                        partitionValueType = AccessController.doPrivileged(new PrivilegedClassForName<>(partitionValueTypeName, true, classLoader));
                     } catch (PrivilegedActionException e) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(partitionValueTypeName, e.getException());
                     }
@@ -117,24 +117,25 @@
      * INTERNAL:
      * TODO: clean up the exception handling.
      */
-    protected Object initObject(Class type, String value) {
+    @SuppressWarnings({"unchecked"})
+    protected <T> T initObject(Class<T> type, String value) {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             try {
-                Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(type, new Class[] {String.class}, false));
-                return AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, new Object[] {value}));
+                Constructor<T> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(type, new Class[] {String.class}, false));
+                return AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(constructor, new Object[] {value}));
             } catch (PrivilegedActionException exception) {
                 //throwInitObjectException(exception, type, value, isData);
             }
         } else {
             try {
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(type, new Class[] {String.class}, false);
+                Constructor<T> constructor = PrivilegedAccessHelper.getConstructorFor(type, new Class[] {String.class}, false);
                 return PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] {value});
             } catch (Exception exception) {
                 //throwInitObjectException(exception, type, value, isData);
             }
         }
 
-        return value;
+        return (T) value;
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/ValuePartitioningPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/ValuePartitioningPolicy.java
index edb056c..7919d3e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/ValuePartitioningPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/partitioning/ValuePartitioningPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -55,7 +55,7 @@
     protected String partitionValueTypeName;
 
     /** The type of the partition values. Initialized from the type name at runtime. */
-    protected Class partitionValueType;
+    protected Class<?> partitionValueType;
 
     /** Use to track order for compute UCP index. */
     protected List<String> orderedPartitions = new ArrayList<>();
@@ -87,7 +87,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        partitionValueType = AccessController.doPrivileged(new PrivilegedClassForName(partitionValueTypeName, true, classLoader));
+                        partitionValueType = AccessController.doPrivileged(new PrivilegedClassForName<>(partitionValueTypeName, true, classLoader));
                     } catch (PrivilegedActionException e) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(partitionValueTypeName, e.getException());
                     }
@@ -115,7 +115,7 @@
      * Convert the string value to the class type.
      * This will handle numbers, string, dates, and most other classes.
      */
-    private Object initObject(Class type, String value) {
+    private <T> T initObject(Class<T> type, String value) {
         return ConversionManager.getDefaultManager().convertObject(value, type);
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISDOMRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISDOMRecord.java
index 8c170f7..293dcbd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISDOMRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISDOMRecord.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -125,7 +125,7 @@
                     throw (Exception)ex.getCause();
                 }
             }else{
-                setDOM((Element)PrivilegedAccessHelper.invokeMethod(domMethod, record, null));
+                setDOM(PrivilegedAccessHelper.invokeMethod(domMethod, record, null));
             }
         } catch (Exception error) {
             throw new EISException(error);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISObjectPersistenceXMLProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISObjectPersistenceXMLProject.java
index 6ceabf9..5565c7e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISObjectPersistenceXMLProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/EISObjectPersistenceXMLProject.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -376,9 +376,9 @@
         sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
                 @Override
                 public Object getAttributeValueFromObject(Object object) {
-                    Map sourceToTargetKeyFields = ((EISOneToOneMapping)object).getSourceToTargetKeyFields();
+                    Map<DatabaseField, DatabaseField> sourceToTargetKeyFields = ((EISOneToOneMapping)object).getSourceToTargetKeyFields();
                     List associations = new ArrayList(sourceToTargetKeyFields.size());
-                    Iterator iterator = sourceToTargetKeyFields.entrySet().iterator();
+                    Iterator<Map.Entry<DatabaseField, DatabaseField>> iterator = sourceToTargetKeyFields.entrySet().iterator();
                     while (iterator.hasNext()) {
                         Map.Entry entry = (Map.Entry)iterator.next();
                         associations.add(new Association(entry.getKey(), entry.getValue()));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/interactions/EISInteraction.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/interactions/EISInteraction.java
index 131bb6b..2ef92b4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/interactions/EISInteraction.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/interactions/EISInteraction.java
@@ -241,8 +241,8 @@
                     recordName = valuesRow.getFields().get(0).getTableName();
                 }
                 MappedRecord record = accessor.getRecordFactory().createMappedRecord(recordName);
-                for (Iterator keysIterator = valuesRow.getFields().iterator();
-                         keysIterator.hasNext();) {
+                for (Iterator<DatabaseField> keysIterator = valuesRow.getFields().iterator();
+                     keysIterator.hasNext();) {
                     DatabaseField field = (DatabaseField)keysIterator.next();
                     Object elementValue = createRecordElement(field.getName(), valuesRow.get(field), accessor);
                     accessor.getEISPlatform().setValueInRecord(field.getName(), elementValue, record, accessor);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToManyMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToManyMapping.java
index 958be9b..5ae81b8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToManyMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToManyMapping.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -342,7 +342,7 @@
 
         Expression criteria;
         Expression builder = new ExpressionBuilder();
-        Iterator keyIterator = getSourceForeignKeysToTargetKeys().keySet().iterator();
+        Iterator<DatabaseField> keyIterator = getSourceForeignKeysToTargetKeys().keySet().iterator();
         while (keyIterator.hasNext()) {
             DatabaseField foreignKey = (DatabaseField)keyIterator.next();
             DatabaseField targetKey = getSourceForeignKeysToTargetKeys().get(foreignKey);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToOneMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToOneMapping.java
index 15eba4a..76e7c14 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToOneMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/eis/mappings/EISOneToOneMapping.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -153,7 +153,7 @@
         clone.setTargetToSourceKeyFields(new HashMap(getTargetToSourceKeyFields().size()));
         Map setOfFields = new HashMap(getTargetToSourceKeyFields().size());
 
-        for (Enumeration enumtr = getForeignKeyFields().elements(); enumtr.hasMoreElements();) {
+        for (Enumeration<DatabaseField> enumtr = getForeignKeyFields().elements(); enumtr.hasMoreElements();) {
             DatabaseField field = (DatabaseField)enumtr.nextElement();
 
             DatabaseField fieldClone = field.clone();
@@ -162,7 +162,7 @@
         }
 
         //get clones from set for source hashtable.  If they do not exist, create a new one.
-        Iterator sourceKeyIterator = getSourceToTargetKeyFields().keySet().iterator();
+        Iterator<DatabaseField> sourceKeyIterator = getSourceToTargetKeyFields().keySet().iterator();
         while (sourceKeyIterator.hasNext()) {
             DatabaseField sourceField = (DatabaseField)sourceKeyIterator.next();
             DatabaseField targetField = getSourceToTargetKeyFields().get(sourceField);
@@ -182,7 +182,7 @@
         }
 
         //get clones from set for target hashtable.  If they do not exist, create a new one.
-        Iterator targetKeyIterator = getTargetToSourceKeyFields().keySet().iterator();
+        Iterator<DatabaseField> targetKeyIterator = getTargetToSourceKeyFields().keySet().iterator();
         while (targetKeyIterator.hasNext()) {
             DatabaseField targetField = (DatabaseField)targetKeyIterator.next();
             DatabaseField sourceField = getTargetToSourceKeyFields().get(targetField);
@@ -212,7 +212,7 @@
      */
     @Override
     public Object extractPrimaryKeysForReferenceObjectFromRow(AbstractRecord row) {
-        List primaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
         Object[] result = new  Object[primaryKeyFields.size()];
         for (int index = 0; index < primaryKeyFields.size(); index++) {
             DatabaseField targetKeyField = (DatabaseField)primaryKeyFields.get(index);
@@ -237,7 +237,7 @@
         super.initialize(session);
 
         // Must build foreign keys fields.
-        List foreignKeyFields = getForeignKeyFields();
+        List<DatabaseField> foreignKeyFields = getForeignKeyFields();
         int size = foreignKeyFields.size();
         for (int index = 0; index < size; index++) {
             DatabaseField foreignKeyField = (DatabaseField)foreignKeyFields.get(index);
@@ -262,7 +262,7 @@
     protected void initializeForeignKeys(AbstractSession session) {
         HashMap newSourceToTargetKeyFields = new HashMap(getSourceToTargetKeyFields().size());
         HashMap newTargetToSourceKeyFields = new HashMap(getTargetToSourceKeyFields().size());
-        Iterator iterator = getSourceToTargetKeyFields().entrySet().iterator();
+        Iterator<Map.Entry<DatabaseField, DatabaseField>> iterator = getSourceToTargetKeyFields().entrySet().iterator();
         while (iterator.hasNext()) {
             Map.Entry entry = (Map.Entry)iterator.next();
             DatabaseField sourceField = (DatabaseField)entry.getKey();
@@ -292,7 +292,7 @@
 
         Expression criteria;
         Expression builder = new ExpressionBuilder();
-        Iterator keyIterator = getSourceToTargetKeyFields().keySet().iterator();
+        Iterator<DatabaseField> keyIterator = getSourceToTargetKeyFields().keySet().iterator();
         while (keyIterator.hasNext()) {
             DatabaseField foreignKey = (DatabaseField)keyIterator.next();
             DatabaseField targetKey = getSourceToTargetKeyFields().get(foreignKey);
@@ -376,7 +376,7 @@
         // If any field in the foreign key is null then it means there are no referenced objects
         // Skip for partial objects as fk may not be present.
         if (!query.hasPartialAttributeExpressions()) {
-            for (Enumeration enumeration = getFields().elements(); enumeration.hasMoreElements();) {
+            for (Enumeration<DatabaseField> enumeration = getFields().elements(); enumeration.hasMoreElements();) {
                 DatabaseField field = (DatabaseField)enumeration.nextElement();
                 if (row.get(field) == null) {
                     return getIndirectionPolicy().nullValueFromRow();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectMap.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectMap.java
index 13088cb..f44bbf8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectMap.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -310,7 +310,7 @@
                 boolean result = false;
                 Iterator<Map.Entry<K, V>> objects = delegateSet.iterator();
                 while (objects.hasNext()) {
-                    Map.Entry object = objects.next();
+                    Map.Entry<K, V> object = objects.next();
                     if (!c.contains(object)) {
                         objects.remove();
                         raiseRemoveChangeEvent(object.getKey(), object.getValue());
@@ -615,7 +615,7 @@
             @Override
             public boolean retainAll(Collection<?> c){
                 boolean result = false;
-                Iterator objects = delegateSet.iterator();
+                Iterator<K> objects = delegateSet.iterator();
                 while (objects.hasNext()) {
                     Object object = objects.next();
                     if (!c.contains(object)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
index e8f5077..ef966c7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/indirection/IndirectSet.java
@@ -343,7 +343,7 @@
                     }
                 }
             } else {
-                return (Set<E>)PrivilegedAccessHelper.invokeMethod(cloneMethod, this.getDelegate(), null);
+                return PrivilegedAccessHelper.invokeMethod(cloneMethod, this.getDelegate(), null);
             }
         } catch (IllegalAccessException ex1) {
             throw QueryException.cloneMethodInaccessible();
@@ -569,7 +569,7 @@
     public boolean removeAll(Collection<?> c) {
         // Must trigger remove events if tracked or uow.
         if (hasBeenRegistered() || hasTrackedPropertyChangeListener()) {
-            Iterator objects = c.iterator();
+            Iterator<?> objects = c.iterator();
             while (objects.hasNext()) {
                 this.remove(objects.next());
             }
@@ -585,7 +585,7 @@
     public boolean retainAll(Collection<?> c) {
         // Must trigger remove events if tracked or uow.
         if (hasBeenRegistered() || hasTrackedPropertyChangeListener()) {
-            Iterator objects = getDelegate().iterator();
+            Iterator<E> objects = getDelegate().iterator();
             while (objects.hasNext()) {
                 Object object = objects.next();
                 if (!c.contains(object)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
index 3dbb3c6..a99a20d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/codegen/InheritanceHierarchyBuilder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -29,7 +29,7 @@
      * Based on a class name either return a pre-existing node from the hierarchyTree or build one and
      * add it to the tree.
      */
-    public static HierarchyNode getNodeForClass(String className, Hashtable hierarchyTree) {
+    public static HierarchyNode getNodeForClass(String className, Hashtable<String, HierarchyNode> hierarchyTree) {
         HierarchyNode node = (HierarchyNode)hierarchyTree.get(className);
         if (node == null) {
             node = new HierarchyNode(className);
@@ -39,9 +39,9 @@
     }
 
     public static Hashtable buildInheritanceHierarchyTree(Project project) {
-        Map descriptors = project.getDescriptors();
-        Hashtable hierarchyTree = new Hashtable(descriptors.size());
-        for (Iterator descriptorIterator = descriptors.values().iterator();
+        Map<Class<?>, ClassDescriptor> descriptors = project.getDescriptors();
+        Hashtable<String, HierarchyNode> hierarchyTree = new Hashtable<>(descriptors.size());
+        for (Iterator<ClassDescriptor> descriptorIterator = descriptors.values().iterator();
                  descriptorIterator.hasNext();) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptorIterator.next();
             String className = descriptor.getJavaClassName();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/databaseaccess/CorePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/databaseaccess/CorePlatform.java
index feec21b..b8c0782 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/databaseaccess/CorePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/databaseaccess/CorePlatform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -27,7 +27,7 @@
      * @exception ConversionException all exceptions will be thrown as this type.
      * @return the newly converted object
      */
-    Object convertObject(Object sourceObject, Class javaClass);
+    <T> T convertObject(Object sourceObject, Class<T> javaClass);
 
     /**
      * The platform hold its own instance of conversion manager to allow customization.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreClassConstants.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreClassConstants.java
index 46d491b..8fdecc0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreClassConstants.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreClassConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,6 +18,7 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.net.URL;
+import java.sql.Date;
 import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.ArrayList;
@@ -34,6 +35,7 @@
 
 import org.w3c.dom.Node;
 
+@SuppressWarnings({"rawtypes"})
 public class CoreClassConstants {
 
     public static final Class ABYTE = Byte[].class;
@@ -41,44 +43,48 @@
     public static final Class APCHAR = char[].class;
     public static final Class ASTRING = String[].class;
     public static final Class ArrayList_class = ArrayList.class;
-    public static final Class BIGDECIMAL = BigDecimal.class;
-    public static final Class BIGINTEGER = BigInteger.class;
-    public static final Class BOOLEAN = Boolean.class;
-    public static final Class BYTE = Byte.class;
-    public static final Class CALENDAR = Calendar.class;
-    public static final Class CHAR = Character.class;
-    public static final Class CLASS = Class.class;
-    public static final Class Collection_Class = Collection.class;
-    public static final Class DOUBLE = Double.class;
-    public static final Class DURATION = Duration.class;
-    public static final Class FLOAT = Float.class;
-    public static final Class GREGORIAN_CALENDAR = GregorianCalendar.class;
-    public static final Class INTEGER = Integer.class;
-    public static final Class List_Class = List.class;
-    public static final Class LONG = Long.class;
-    public static final Class Map_Class = Map.class;
-    public static final Class NODE = Node.class;
-    public static final Class NUMBER = Number.class;
-    public static final Class OBJECT = Object.class;
-    public static final Class PBOOLEAN = boolean.class;
-    public static final Class PBYTE = byte.class;
-    public static final Class PCHAR = char.class;
-    public static final Class PDOUBLE = double.class;
-    public static final Class PFLOAT = float.class;
-    public static final Class PINT = int.class;
-    public static final Class PLONG = long.class;
-    public static final Class PSHORT = short.class;
-    public static final Class QNAME = QName.class;
-    public static final Class Set_Class = Set.class;
-    public static final Class SHORT = Short.class;
-    public static final Class SQLDATE = java.sql.Date.class;
-    public static final Class STRING = String.class;
-    public static final Class TIME = Time.class;
-    public static final Class TIMESTAMP = Timestamp.class;
-    public static final Class URL_Class = URL.class;
-    public static final Class UTILDATE = java.util.Date.class;
-    public static final Class XML_GREGORIAN_CALENDAR = XMLGregorianCalendar.class;
-    public static final Class FILE = File.class;
+    public static final Class<BigDecimal> BIGDECIMAL = BigDecimal.class;
+    public static final Class<BigInteger> BIGINTEGER = BigInteger.class;
+    public static final Class<Boolean> BOOLEAN = Boolean.class;
+    public static final Class<Byte> BYTE = Byte.class;
+    public static final Class<Calendar> CALENDAR = Calendar.class;
+    public static final Class<Character> CHAR = Character.class;
+    public static final Class<Class> CLASS = Class.class;
+    public static final Class<Collection> Collection_Class = Collection.class;
+    public static final Class<Double> DOUBLE = Double.class;
+    public static final Class<Duration> DURATION = Duration.class;
+    public static final Class<Float> FLOAT = Float.class;
+    public static final Class<GregorianCalendar> GREGORIAN_CALENDAR = GregorianCalendar.class;
+    public static final Class<Integer> INTEGER = Integer.class;
+    public static final Class<List> List_Class = List.class;
+    public static final Class<Long> LONG = Long.class;
+    public static final Class<Map> Map_Class = Map.class;
+    public static final Class<Node> NODE = Node.class;
+    public static final Class<Number> NUMBER = Number.class;
+    public static final Class<Object> OBJECT = Object.class;
+    public static final Class<Boolean> PBOOLEAN = boolean.class;
+    public static final Class<Byte> PBYTE = byte.class;
+    public static final Class<Character> PCHAR = char.class;
+    public static final Class<Double> PDOUBLE = double.class;
+    public static final Class<Float> PFLOAT = float.class;
+    public static final Class<Integer> PINT = int.class;
+    public static final Class<Long> PLONG = long.class;
+    public static final Class<Short> PSHORT = short.class;
+    public static final Class<QName> QNAME = QName.class;
+    public static final Class<Set> Set_Class = Set.class;
+    public static final Class<Short> SHORT = Short.class;
+    public static final Class<Date> SQLDATE = Date.class;
+    public static final Class<String> STRING = String.class;
+    public static final Class<Time> TIME = Time.class;
+    public static final Class<Timestamp> TIMESTAMP = Timestamp.class;
+    public static final Class<URL> URL_Class = URL.class;
+    public static final Class<java.util.Date> UTILDATE = java.util.Date.class;
+    public static final Class<XMLGregorianCalendar> XML_GREGORIAN_CALENDAR = XMLGregorianCalendar.class;
+    public static final Class<File> FILE = File.class;
 
 
+    protected CoreClassConstants() {
+        //no instance please
+        //for ClassConstants
+    }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreConversionManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreConversionManager.java
index 27f8f08..1075b23 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreConversionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreConversionManager.java
@@ -32,7 +32,7 @@
      * @exception ConversionException all exceptions will be thrown as this type.
      * @return the newly converted object
      */
-    public abstract Object convertObject(Object sourceObject, Class javaClass);
+    public abstract <T> T convertObject(Object sourceObject, Class<T> javaClass);
 
     /**
      * INTERNAL
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
index 88a215c..9c757d1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/helper/CoreField.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -21,7 +21,7 @@
      */
     String getName();
 
-    Class getType();
+    <T> Class<T> getType();
 
     /**
      * Set the unqualified name of the field.
@@ -33,6 +33,6 @@
      * The JDBC type is determined from the class type,
      * this is used to optimize performance, and for binding.
      */
-    void setType(Class type);
+    void setType(Class<?> type);
 
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/sessions/CoreAbstractSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/sessions/CoreAbstractSession.java
index c22d616..1413fbc 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/sessions/CoreAbstractSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/core/sessions/CoreAbstractSession.java
@@ -49,7 +49,7 @@
      * Return all registered descriptors.
      */
     @Override
-    public abstract Map<Class, DESCRIPTOR> getDescriptors();
+    public abstract Map<Class<?>, DESCRIPTOR> getDescriptors();
 
     /**
      * INTERNAL:
@@ -57,6 +57,6 @@
      * for specified class.
      * The platform is used for database specific behavior.
      */
-    public abstract PLATFORM getPlatform(Class domainClass);
+    public abstract PLATFORM getPlatform(Class<?> domainClass);
 
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
index 6e02a26..07e2487 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabaseAccessor.java
@@ -1557,7 +1557,7 @@
         Statement statement = null;
         if (call.usesBinding(session) && call.shouldCacheStatement(session)) {
             // Check the cache by sql string, must synchronize check and removal.
-            Map statementCache = getStatementCache();
+            Map<String, Statement> statementCache = getStatementCache();
             synchronized (statementCache) {
                 statement = (PreparedStatement)statementCache.get(call.getSQLString());
                 if (statement != null) {
@@ -1610,7 +1610,7 @@
         PreparedStatement statement = null;
         // Check the cache by sql string, must synchronize check and removal.
         if (getPlatform().shouldCacheAllStatements()) {
-            Map statementCache = getStatementCache();
+            Map<String, Statement> statementCache = getStatementCache();
             synchronized (statementCache) {
                 statement = (PreparedStatement)statementCache.get(sql);
                 if (statement != null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
index 8f11c43..05d6edb 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatabasePlatform.java
@@ -2601,7 +2601,7 @@
         } else if (parameter instanceof char[]) {
             statement.setString(index, new String((char[])parameter));
         } else if (parameter instanceof Character[]) {
-            statement.setString(index, (String)convertObject(parameter, ClassConstants.STRING));
+            statement.setString(index, convertObject(parameter, ClassConstants.STRING));
         } else if (parameter instanceof Byte[]) {
             statement.setBytes(index, (byte[])convertObject(parameter, ClassConstants.APBYTE));
         } else if (parameter instanceof SQLXML) {
@@ -2706,7 +2706,7 @@
         } else if (parameter instanceof char[]) {
             statement.setString(name, new String((char[])parameter));
         } else if (parameter instanceof Character[]) {
-            statement.setString(name, (String)convertObject(parameter, ClassConstants.STRING));
+            statement.setString(name, convertObject(parameter, ClassConstants.STRING));
         } else if (parameter instanceof Byte[]) {
             statement.setBytes(name, (byte[])convertObject(parameter, ClassConstants.APBYTE));
         } else if (parameter instanceof SQLXML) {
@@ -2989,10 +2989,10 @@
                 FieldDefinition fieldDef;
                 //gfbug3307, should use columnDefinition if it was defined.
                 if ((field.getColumnDefinition()!= null) && (field.getColumnDefinition().length() == 0)) {
-                    Class type = ConversionManager.getObjectClass(field.getType());
+                    Class<? extends Class> type = ConversionManager.getObjectClass(field.getType());
                     // Default type to VARCHAR, if unknown.
                     if (type == null) {
-                        type = ClassConstants.STRING;
+                        type = ConversionManager.getObjectClass(ClassConstants.STRING);
                     }
                    fieldDef = new FieldDefinition(field.getNameDelimited(this), type);
                 } else {
@@ -3307,7 +3307,7 @@
 
         boolean shouldAcquireSequenceValueAfterInsert = false;
         DatabaseField field = new DatabaseField(qualifiedFieldName, getStartDelimiter(), getEndDelimiter());
-        Iterator descriptors = session.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = session.getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             if (!descriptor.usesSequenceNumbers()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
index ab4163f..6e40c5e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java
@@ -26,6 +26,7 @@
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.Vector;
@@ -142,7 +143,7 @@
      */
     @Override
     public void appendParameter(Call call, Writer writer, Object parameter) {
-        String parameterValue = (String)getConversionManager().convertObject(parameter, ClassConstants.STRING);
+        String parameterValue = getConversionManager().convertObject(parameter, ClassConstants.STRING);
         if (parameterValue == null) {
             parameterValue = "";
         }
@@ -224,7 +225,7 @@
      * @return the newly converted object
      */
     @Override
-    public Object convertObject(Object sourceObject, Class javaClass) throws ConversionException {
+    public <T> T convertObject(Object sourceObject, Class<T> javaClass) throws ConversionException {
         return getConversionManager().convertObject(sourceObject, javaClass);
     }
 
@@ -370,7 +371,7 @@
         } else {
             getTimestampQuery().setSessionName(sessionName);
             Object result = session.executeQuery(getTimestampQuery());
-            return (java.sql.Timestamp) session.getDatasourcePlatform().convertObject(result, ClassConstants.TIMESTAMP);
+            return session.getDatasourcePlatform().convertObject(result, ClassConstants.TIMESTAMP);
         }
     }
 
@@ -716,7 +717,7 @@
      * @param javaClass - the class that is converted from
      * @return - a vector of classes
      */
-    public Vector getDataTypesConvertedFrom(Class javaClass) {
+    public List getDataTypesConvertedFrom(Class javaClass) {
         return getConversionManager().getDataTypesConvertedFrom(javaClass);
     }
 
@@ -726,7 +727,7 @@
      * @param javaClass - the class that is converted to
      * @return - a vector of classes
      */
-    public Vector getDataTypesConvertedTo(Class javaClass) {
+    public List getDataTypesConvertedTo(Class javaClass) {
         return getConversionManager().getDataTypesConvertedTo(javaClass);
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Platform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Platform.java
index edbc1b2..08c7f70 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Platform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Platform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2019 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -51,7 +51,7 @@
      * @exception ConversionException all exceptions will be thrown as this type.
      * @return the newly converted object
      */
-    @Override Object convertObject(Object sourceObject, Class javaClass) throws ConversionException;
+    @Override <T> T convertObject(Object sourceObject, Class<T> javaClass) throws ConversionException;
 
     /**
      * Copy the state into the new platform.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/CascadeLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/CascadeLockingPolicy.java
index 05bc945..c604ac3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/CascadeLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/CascadeLockingPolicy.java
@@ -68,7 +68,7 @@
             m_query = new ReadObjectQuery(m_parentClass);
 
             Expression selectionCriteria = null;
-            Iterator keys = m_queryKeyFields.keySet().iterator();
+            Iterator<DatabaseField> keys = m_queryKeyFields.keySet().iterator();
             ExpressionBuilder builder = new ExpressionBuilder();
 
             while (keys.hasNext()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/InstantiationPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/InstantiationPolicy.java
index 188cccc..ea8ee55 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/InstantiationPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/InstantiationPolicy.java
@@ -468,7 +468,7 @@
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    factoryClass = AccessController.doPrivileged(new PrivilegedClassForName(factoryClassName, true, classLoader));
+                    factoryClass = AccessController.doPrivileged(new PrivilegedClassForName<>(factoryClassName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(factoryClassName, exception.getException());
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
index 66cf0e4..c6784b7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/ObjectBuilder.java
@@ -257,13 +257,13 @@
         // Skip first table.
         for (int index = 1; index < size; index++) {
             DatabaseTable table = tables.get(index);
-            Map keyMapping = this.descriptor.getAdditionalTablePrimaryKeyFields().get(table);
+            Map<DatabaseField, DatabaseField> keyMapping = this.descriptor.getAdditionalTablePrimaryKeyFields().get(table);
 
             // Loop over the additionalTablePK fields and add the PK info for the table. The join might
             // be between a fk in the source table and pk in secondary table.
             if (keyMapping != null) {
-                Iterator primaryKeyFieldEnum = keyMapping.keySet().iterator();
-                Iterator secondaryKeyFieldEnum = keyMapping.values().iterator();
+                Iterator<DatabaseField> primaryKeyFieldEnum = keyMapping.keySet().iterator();
+                Iterator<DatabaseField> secondaryKeyFieldEnum = keyMapping.values().iterator();
                 while (primaryKeyFieldEnum.hasNext()) {
                     DatabaseField primaryKeyField = (DatabaseField)primaryKeyFieldEnum.next();
                     DatabaseField secondaryKeyField = (DatabaseField)secondaryKeyFieldEnum.next();
@@ -317,7 +317,7 @@
         if (size > 1) {
             handledMappings = new HashSet(size);
         }
-        List fields = row.getFields();
+        List<DatabaseField> fields = row.getFields();
         for (int index = 0; index < size; index++) {
             DatabaseField field = (DatabaseField)fields.get(index);
             assignReturnValueForField(object, query, row, field, handledMappings, changeSet);
@@ -333,7 +333,7 @@
         if (mapping != null) {
             assignReturnValueToMapping(object,  query, row, field, mapping, handledMappings, changeSet);
         }
-        List readOnlyMappings = getReadOnlyMappingsForField(field);
+        List<DatabaseMapping> readOnlyMappings = getReadOnlyMappingsForField(field);
         if (readOnlyMappings != null) {
             int size = readOnlyMappings.size();
             for (int index = 0; index < size; index++) {
@@ -522,7 +522,7 @@
             }
         }
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
 
         // PERF: Cache if all mappings should be read.
         boolean readAllMappings = query.shouldReadAllMappings();
@@ -664,7 +664,7 @@
         Object backup = descriptor.getCopyPolicy().buildClone(clone, unitOfWork);
 
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = getCloningMappings();
+        List<DatabaseMapping> mappings = getCloningMappings();
         int size = mappings.size();
         if (descriptor.hasFetchGroupManager() && descriptor.getFetchGroupManager().isPartialObject(clone)) {
             FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager();
@@ -712,7 +712,7 @@
         Expression expression = null;
 
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         for (int index = 0; index < mappings.size(); index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
             if (expression == null) {
@@ -1595,14 +1595,14 @@
             return getPrimaryKeyExpression();
         }
 
-        Map keyMapping = this.descriptor.getAdditionalTablePrimaryKeyFields().get(table);
+        Map<DatabaseField, DatabaseField> keyMapping = this.descriptor.getAdditionalTablePrimaryKeyFields().get(table);
         if (keyMapping == null) {
             throw DescriptorException.multipleTablePrimaryKeyNotSpecified(this.descriptor);
         }
 
         ExpressionBuilder builder = new ExpressionBuilder();
         Expression expression = null;
-        for (Iterator primaryKeyEnum = keyMapping.values().iterator(); primaryKeyEnum.hasNext();) {
+        for (Iterator<DatabaseField> primaryKeyEnum = keyMapping.values().iterator(); primaryKeyEnum.hasNext();) {
             DatabaseField field = (DatabaseField)primaryKeyEnum.next();
             expression = (builder.getField(field).equal(builder.getParameter(field))).and(expression);
         }
@@ -1659,7 +1659,7 @@
      */
     public AbstractRecord buildRow(AbstractRecord databaseRow, Object object, AbstractSession session, WriteType writeType) {
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         int mappingsSize = mappings.size();
         for (int index = 0; index < mappingsSize; index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
@@ -1698,7 +1698,7 @@
      */
     public AbstractRecord buildRowForShallowInsert(AbstractRecord databaseRow, Object object, AbstractSession session) {
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         int mappingsSize = mappings.size();
         for (int index = 0; index < mappingsSize; index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
@@ -1823,7 +1823,7 @@
      * contain entries for unchanged attributes.
      */
     public AbstractRecord buildRowForUpdate(AbstractRecord databaseRow, WriteObjectQuery query) {
-        for (Iterator mappings = getNonPrimaryKeyMappings().iterator(); mappings.hasNext();) {
+        for (Iterator<DatabaseMapping> mappings = getNonPrimaryKeyMappings().iterator(); mappings.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.next();
             mapping.writeFromObjectIntoRowForUpdate(query, databaseRow);
         }
@@ -1860,7 +1860,7 @@
     public AbstractRecord buildRowForUpdateWithChangeSet(WriteObjectQuery query) {
         AbstractRecord databaseRow = createRecord(query.getSession());
         AbstractSession session = query.getSession();
-        List changes = query.getObjectChangeSet().getChanges();
+        List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changes = query.getObjectChangeSet().getChanges();
         int size = changes.size();
         for (int index = 0; index < size; index++) {
             ChangeRecord changeRecord = (ChangeRecord)changes.get(index);
@@ -1882,8 +1882,8 @@
             query.setShouldValidateUpdateCallCacheUse(true);
         }
 
-        for (Iterator mappings = this.descriptor.getMappings().iterator();
-                 mappings.hasNext();) {
+        for (Iterator<DatabaseMapping> mappings = this.descriptor.getMappings().iterator();
+             mappings.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.next();
             mapping.writeFromObjectIntoRowForWhereClause(query, databaseRow);
         }
@@ -1939,8 +1939,8 @@
     }
 
     public void buildTemplateInsertRow(AbstractSession session, AbstractRecord databaseRow) {
-        for (Iterator mappings = this.descriptor.getMappings().iterator();
-                 mappings.hasNext();) {
+        for (Iterator<DatabaseMapping> mappings = this.descriptor.getMappings().iterator();
+             mappings.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.next();
             mapping.writeInsertFieldsIntoRow(databaseRow, session);
         }
@@ -1994,8 +1994,8 @@
     public AbstractRecord buildTemplateUpdateRow(AbstractSession session) {
         AbstractRecord databaseRow = createRecord(session);
 
-        for (Iterator mappings = getNonPrimaryKeyMappings().iterator();
-                 mappings.hasNext();) {
+        for (Iterator<DatabaseMapping> mappings = getNonPrimaryKeyMappings().iterator();
+             mappings.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.next();
             mapping.writeUpdateFieldsIntoRow(databaseRow, session);
         }
@@ -2031,7 +2031,7 @@
      */
     public void buildPrimaryKeyAttributesIntoObject(Object original, AbstractRecord databaseRow, ObjectBuildingQuery query, AbstractSession session) throws DatabaseException, QueryException {
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List mappings = this.primaryKeyMappings;
+        List<DatabaseMapping> mappings = this.primaryKeyMappings;
         int mappingsSize = mappings.size();
         for (int i = 0; i < mappingsSize; i++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(i);
@@ -2052,7 +2052,7 @@
         AbstractSession executionSession = query.getSession().getExecutionSession(query);
 
         // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-        List pkMappings = getPrimaryKeyMappings();
+        List<DatabaseMapping> pkMappings = getPrimaryKeyMappings();
         int mappingsSize = pkMappings.size();
         for (int i = 0; i < mappingsSize; i++) {
             DatabaseMapping mapping = (DatabaseMapping)pkMappings.get(i);
@@ -2062,7 +2062,7 @@
                 mapping.buildShallowOriginalFromRow(databaseRow, original, null, query, executionSession);
             }
         }
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         mappingsSize = mappings.size();
         for (int i = 0; i < mappingsSize; i++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(i);
@@ -2087,7 +2087,7 @@
         }
         // PERF: Cache if all mappings should be read.
         boolean readAllMappings = query.shouldReadAllMappings();
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         int size = mappings.size();
         FetchGroup executionFetchGroup = query.getExecutionFetchGroup(this.descriptor);
         for (int index = 0; index < size; index++) {
@@ -2461,7 +2461,7 @@
                     }
                 }
 
-                List mappings = descriptor.getMappings();
+                List<DatabaseMapping> mappings = descriptor.getMappings();
                 int size = mappings.size();
 
                 if (isSimple) {
@@ -2693,7 +2693,7 @@
      */
     public boolean compareObjects(Object firstObject, Object secondObject, AbstractSession session) {
         // PERF: Avoid iterator.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         for (int index = 0; index < mappings.size(); index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
 
@@ -2713,7 +2713,7 @@
      */
     public void copyInto(Object source, Object target, boolean cloneOneToOneValueHolders) {
         // PERF: Avoid iterator.
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         for (int index = 0; index < mappings.size(); index++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(index);
             Object value = null;
@@ -2914,7 +2914,7 @@
             copyGroup.getCopies().put(original, copy);
 
             // PERF: Avoid synchronized enumerator as is concurrency bottleneck.
-            List mappings = getCloningMappings();
+            List<DatabaseMapping> mappings = getCloningMappings();
             int size = mappings.size();
             for (int index = 0; index < size; index++) {
                 ((DatabaseMapping)mappings.get(index)).buildCopy(copy, original, copyGroup);
@@ -2923,7 +2923,7 @@
             if (copyGroup.shouldResetPrimaryKey() && (!(this.descriptor.isDescriptorTypeAggregate()))) {
                 // Do not reset if any of the keys is mapped through a 1-1, i.e. back reference id has already changed.
                 boolean hasOneToOne = false;
-                List primaryKeyMappings = getPrimaryKeyMappings();
+                List<DatabaseMapping> primaryKeyMappings = getPrimaryKeyMappings();
                 size = primaryKeyMappings.size();
                 for (int index = 0; index < size; index++) {
                     if (((DatabaseMapping)primaryKeyMappings.get(index)).isOneToOneMapping()) {
@@ -3029,7 +3029,7 @@
         Expression subExp1;
         Expression subExp2;
         Expression subExpression;
-        List primaryKeyFields = this.descriptor.getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = this.descriptor.getPrimaryKeyFields();
 
         if(null != primaryKeyFields) {
             for (int index = 0; index < primaryKeyFields.size(); index++) {
@@ -3306,7 +3306,7 @@
             return databaseRow;
         }
         AbstractRecord primaryKeyRow = createRecord(getPrimaryKeyMappings().size(), session);
-        List primaryKeyFields = this.descriptor.getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = this.descriptor.getPrimaryKeyFields();
         for (int index = 0; index < primaryKeyFields.size(); index++) {
             // Ensure that the type extracted from the object is the same type as in the descriptor,
             // the main reason for this is that 1-1 can optimize on vh by getting from the row as the row-type.
@@ -3673,7 +3673,7 @@
      */
     public List<Class> getPrimaryKeyClassifications() {
         if (primaryKeyClassifications == null) {
-            List primaryKeyFields = this.descriptor.getPrimaryKeyFields();
+            List<DatabaseField> primaryKeyFields = this.descriptor.getPrimaryKeyFields();
             if(null == primaryKeyFields) {
                 return Collections.emptyList();
             }
@@ -3745,8 +3745,8 @@
             nonPrimaryKeyMappings = new ArrayList(10);
         }
 
-        for (Enumeration mappings = this.descriptor.getMappings().elements();
-                 mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = this.descriptor.getMappings().elements();
+             mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
 
             // Add attribute to mapping association
@@ -3778,7 +3778,7 @@
             for (DatabaseField field : mapping.getFields()) {
 
                 if (mapping.isReadOnly()) {
-                    List readOnlyMappings = getReadOnlyMappingsByField().get(field);
+                    List<DatabaseMapping> readOnlyMappings = getReadOnlyMappingsByField().get(field);
 
                     if (readOnlyMappings == null) {
                         readOnlyMappings = new ArrayList();
@@ -3796,7 +3796,7 @@
                         DatabaseMapping aggregatedFieldMapping = aggregateObjectBuilder.getMappingForField(field);
 
                         if (aggregatedFieldMapping == null) { // mapping must be read-only
-                            List readOnlyMappings = getReadOnlyMappingsByField().get(field);
+                            List<DatabaseMapping> readOnlyMappings = getReadOnlyMappingsByField().get(field);
 
                             if (readOnlyMappings == null) {
                                 readOnlyMappings = new ArrayList();
@@ -3916,7 +3916,7 @@
         // For concurrency don't worry about doing this work twice, just make sure
         // if it happens don't add the same joined attributes twice.
         List<DatabaseMapping> joinedAttributes = null;
-        List mappings = this.descriptor.getMappings();
+        List<DatabaseMapping> mappings = this.descriptor.getMappings();
         for (int i = 0; i < mappings.size(); i++) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.get(i);
             if (mapping.isForeignReferenceMapping() && ((ForeignReferenceMapping)mapping).isJoinFetched()) {
@@ -3986,7 +3986,7 @@
      * Cache primary key and non primary key mappings.
      */
     public void initializePrimaryKey(AbstractSession session) throws DescriptorException {
-        List primaryKeyFields = this.descriptor.getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = this.descriptor.getPrimaryKeyFields();
         if ((null == primaryKeyFields || primaryKeyFields.isEmpty()) && getDescriptor().isAggregateCollectionDescriptor()) {
             // populate primaryKeys with all mapped fields found in the main table.
             DatabaseTable defaultTable = getDescriptor().getDefaultTable();
@@ -4015,7 +4015,7 @@
         //but no point doing it if the nonPrimaryKeyMappings collection is null
         if (nonPrimaryKeyMappings != null) {
             nonPrimaryKeyMappings.clear();
-            for (Iterator fields = getMappingsByField().keySet().iterator(); fields.hasNext();) {
+            for (Iterator<DatabaseField> fields = getMappingsByField().keySet().iterator(); fields.hasNext();) {
                 DatabaseField field = (DatabaseField)fields.next();
                 if (null ==primaryKeyFields || !primaryKeyFields.contains(field)) {
                     DatabaseMapping mapping = getMappingForField(field);
@@ -4194,7 +4194,7 @@
         if ((source != null) && changeSet.isNew() && (!this.descriptor.shouldUseFullChangeSetsForNewObjects())) {
             mergeIntoObject(target,  changeSet, true, source, mergeManager, targetSession, false, isTargetCloneOfOriginal, shouldMergeFetchGroup);
         } else {
-            List changes = changeSet.getChanges();
+            List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changes = changeSet.getChanges();
             int size = changes.size();
             for (int index = 0; index < size; index++) {
                 ChangeRecord record = (ChangeRecord)changes.get(index);
@@ -4279,7 +4279,7 @@
      * The domainObject sent as parameter is always a copy from the parent of unit of work.
      */
     public void populateAttributesForClone(Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession) {
-        List mappings = getCloningMappings();
+        List<DatabaseMapping> mappings = getCloningMappings();
         int size = mappings.size();
         if (this.descriptor.hasFetchGroupManager() && this.descriptor.getFetchGroupManager().isPartialObject(original)) {
             FetchGroupManager fetchGroupManager = this.descriptor.getFetchGroupManager();
@@ -4313,7 +4313,7 @@
             useOnlyMappingsExcludedFromSOP = databaseRow.get(concreteDescriptor.getSerializedObjectPolicy().getField()) != null;
         }
         boolean isUntriggeredResultSetRecord = databaseRow instanceof ResultSetRecord && ((ResultSetRecord)databaseRow).hasResultSet();
-        List batchExpressions = ((ReadAllQuery)query).getBatchReadAttributeExpressions();
+        List<Expression> batchExpressions = ((ReadAllQuery)query).getBatchReadAttributeExpressions();
         int size = batchExpressions.size();
         for (int index = 0; index < size; index++) {
             QueryKeyExpression queryKeyExpression = (QueryKeyExpression)batchExpressions.get(index);
@@ -4353,7 +4353,7 @@
             useOnlyMappingsExcludedFromSOP = databaseRow.get(concreteDescriptor.getSerializedObjectPolicy().getField()) != null;
         }
         Boolean isUntriggeredResultSetRecord = null;
-        List joinExpressions = joinManager.getJoinedAttributeExpressions();
+        List<Expression> joinExpressions = joinManager.getJoinedAttributeExpressions();
         int size = joinExpressions.size();
         for (int index = 0; index < size; index++) {
             QueryKeyExpression queryKeyExpression = (QueryKeyExpression)joinExpressions.get(index);
@@ -4592,8 +4592,8 @@
                 return false;
             }
         } else {
-            for (Enumeration tables = this.descriptor.getTables().elements();
-                     tables.hasMoreElements();) {
+            for (Enumeration<DatabaseTable> tables = this.descriptor.getTables().elements();
+                 tables.hasMoreElements();) {
                 DatabaseTable table = (DatabaseTable)tables.nextElement();
 
                 SQLSelectStatement sqlStatement = new SQLSelectStatement();
@@ -4621,8 +4621,8 @@
         }
 
         // now ask each of the mappings to verify that the object has been deleted.
-        for (Enumeration mappings = this.descriptor.getMappings().elements();
-                 mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = this.descriptor.getMappings().elements();
+             mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
 
             if (!mapping.verifyDelete(object, session)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/OptimisticLockingPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/OptimisticLockingPolicy.java
index ca4240f..3ce2d23 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/OptimisticLockingPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/OptimisticLockingPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -109,7 +109,7 @@
      * This is the base value that is older than all other values, it is used in the place of
      * null in some situations.
      */
-    Object getBaseValue();
+    <T> T getBaseValue();
 
     /**
      * ADVANCED:
@@ -125,7 +125,7 @@
      *
      * #see this method in VersionLockingPolicy
      */
-    Object getValueToPutInCache(AbstractRecord row, AbstractSession session);
+    <T> T getValueToPutInCache(AbstractRecord row, AbstractSession session);
 
     /**
      * PUBLIC:
@@ -147,7 +147,7 @@
      *
      * #see this method in VersionLockingPolicy
      */
-    Object getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session);
+    <T> T getWriteLockValue(Object domainObject, Object primaryKey, AbstractSession session);
 
     /**
      * INTERNAL:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/VirtualAttributeAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/VirtualAttributeAccessor.java
index a9dc8b8..7324064 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/VirtualAttributeAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/descriptors/VirtualAttributeAccessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -20,7 +20,7 @@
 
 public class VirtualAttributeAccessor extends MethodAttributeAccessor {
 
-    private Class valueType = ClassConstants.OBJECT;
+    private Class<Object> valueType = ClassConstants.OBJECT;
 
     /**
      * Gets the value of an instance variable in the object.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ExpressionJavaPrinter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ExpressionJavaPrinter.java
index ba290a7..012a996 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ExpressionJavaPrinter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ExpressionJavaPrinter.java
@@ -151,7 +151,7 @@
             printString(object.toString());
             printString("\")");
         } else {
-            printString((String)ConversionManager.getDefaultManager().convertObject(object, String.class));
+            printString(ConversionManager.getDefaultManager().convertObject(object, String.class));
         }
 
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/FunctionExpression.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/FunctionExpression.java
index 030f8ca..3913904 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/FunctionExpression.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/FunctionExpression.java
@@ -942,7 +942,7 @@
 
     protected DatabaseMapping getMappingOfFirstPrimaryKey(ClassDescriptor descriptor) {
         if (descriptor != null) {
-            for (Iterator i = descriptor.getMappings().iterator(); i.hasNext(); ) {
+            for (Iterator<DatabaseMapping> i = descriptor.getMappings().iterator(); i.hasNext(); ) {
                 DatabaseMapping m = (DatabaseMapping)i.next();
                 if (m.isPrimaryKeyMapping()) {
                     return m;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ObjectExpression.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ObjectExpression.java
index 73aa384..9126d02 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ObjectExpression.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/ObjectExpression.java
@@ -161,7 +161,7 @@
         HashMap tablesJoinExpressions = null;
         if(isUsingOuterJoinForMultitableInheritance()) {
             tablesJoinExpressions = new HashMap();
-            List childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
+            List<DatabaseTable> childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
             for( int i=0; i < childrenTables.size(); i++) {
                 DatabaseTable table = (DatabaseTable)childrenTables.get(i);
                 Expression joinExpression = getDescriptor().getInheritancePolicy().getChildrenTablesJoinExpressions().get(table);
@@ -585,7 +585,7 @@
         ClassDescriptor descriptor = getDescriptor();
         List<DatabaseTable> tables = null;
         if (descriptor == null) {
-            List additionalTables = getAdditionalTables();
+            List<DatabaseTable> additionalTables = getAdditionalTables();
             if (additionalTables == null) {
                 return null;
             } else {
@@ -600,7 +600,7 @@
         } else {
             tables = descriptor.getTables();
         }
-        List additionalTables = getAdditionalTables();
+        List<DatabaseTable> additionalTables = getAdditionalTables();
         if (additionalTables != null) {
             tables = new Vector(tables);
             Helper.addAllUniqueToList(tables, additionalTables);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/OuterJoinExpressionHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/OuterJoinExpressionHolder.java
index ac5ff80..9e43e47 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/OuterJoinExpressionHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/OuterJoinExpressionHolder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -136,7 +136,7 @@
             if(descriptor == null) {
                 descriptor = joinExpression.getDescriptor();
             }
-            List targetTables = descriptor.getTables();
+            List<DatabaseTable> targetTables = descriptor.getTables();
             int nDescriptorTables = targetTables.size();
             hasInheritance = descriptor.hasInheritance();
             if(hasInheritance) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/QueryKeyExpression.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/QueryKeyExpression.java
index b7eb2c7..816b3da 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/QueryKeyExpression.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/QueryKeyExpression.java
@@ -188,7 +188,7 @@
         }
 
         HashMap tablesJoinExpressions = new HashMap();
-        Vector tables = getDescriptor().getTables();
+        Vector<DatabaseTable> tables = getDescriptor().getTables();
         // skip the main table - start with i=1
         int tablesSize = tables.size();
         if (shouldUseOuterJoin() || (!getSession().getPlatform().shouldPrintInnerJoinInWhereClause())) {
@@ -203,7 +203,7 @@
             }
         }
         if (isUsingOuterJoinForMultitableInheritance()) {
-            List childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
+            List<DatabaseTable> childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
             tablesSize = childrenTables.size();
             for (int i=0; i < tablesSize; i++) {
                 DatabaseTable table = (DatabaseTable)childrenTables.get(i);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/RelationExpression.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/RelationExpression.java
index edb9f3c..265f775 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/RelationExpression.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/RelationExpression.java
@@ -193,7 +193,7 @@
             return performSelector(false);
         }
 
-        Class javaClass = leftValue.getClass();
+        Class<? extends Object> javaClass = leftValue.getClass();
         if (javaClass != rightValue.getClass()) {
             return performSelector(false);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
index b295963..62b56bb 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/SQLSelectStatement.java
@@ -269,8 +269,8 @@
                     outerJoinedAliases.add(newAlias);
                     writer.write(newAlias.getQualifiedNameDelimited(printer.getPlatform()));
                 } else {// do normal outer stuff for Informix
-                    for (Enumeration target = outerExpression.getMapping().getReferenceDescriptor().getTables().elements();
-                             target.hasMoreElements();) {
+                    for (Enumeration<DatabaseTable> target = outerExpression.getMapping().getReferenceDescriptor().getTables().elements();
+                         target.hasMoreElements();) {
                         DatabaseTable newTarget = (DatabaseTable)target.nextElement();
                         DatabaseTable newAlias = outerExpression.aliasForTable(newTarget);
                         writer.write(", OUTER ");
@@ -760,7 +760,7 @@
 
         printer.getWriter().write(" ORDER BY ");
 
-        for (Iterator expressionsEnum = getOrderByExpressions().iterator(); expressionsEnum.hasNext();) {
+        for (Iterator<Expression> expressionsEnum = getOrderByExpressions().iterator(); expressionsEnum.hasNext();) {
             Expression expression = (Expression)expressionsEnum.next();
             expression.printSQL(printer);
 
@@ -779,7 +779,7 @@
             return;
         }
 
-        for (Iterator expressionsEnum = getUnionExpressions().iterator(); expressionsEnum.hasNext();) {
+        for (Iterator<Expression> expressionsEnum = getUnionExpressions().iterator(); expressionsEnum.hasNext();) {
             Expression expression = (Expression)expressionsEnum.next();
             printer.getWriter().write(" ");
             expression.printSQL(printer);
@@ -1577,9 +1577,9 @@
                     allExpressions.add(criteria);
                 }
 
-                Map map = holder.outerJoinedAdditionalJoinCriteria;
+                Map<DatabaseTable, Expression> map = holder.outerJoinedAdditionalJoinCriteria;
                 if (map != null) {
-                    Iterator it = map.values().iterator();
+                    Iterator<Expression> it = map.values().iterator();
                     while(it.hasNext()) {
                         criteria = (Expression)it.next();
                         if(criteria != null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/TreatAsExpression.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/TreatAsExpression.java
index cd8a9d6..9f7949f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/TreatAsExpression.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/expressions/TreatAsExpression.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -400,7 +400,7 @@
         ClassDescriptor parentDescriptor = this.typeExpressionBase.getDescriptor();
         Vector<DatabaseTable> childTables = new Vector(2);
         if (parentDescriptor.hasInheritance() && parentDescriptor.getInheritancePolicy().hasMultipleTableChild() ) {
-            List parentTables = typeExpressionBase.getOwnedTables();
+            List<DatabaseTable> parentTables = typeExpressionBase.getOwnedTables();
             //All tables for this child, including parent tables
             Vector<DatabaseTable> tables = getDescriptor().getTables();
             for (DatabaseTable table : tables) {
@@ -451,7 +451,7 @@
         //outerjoin our parent->child tables
         if (parentDescriptor.hasInheritance() &&
                 parentDescriptor.getInheritancePolicy().hasMultipleTableChild() ) {
-            Vector tables = getDescriptor().getTables();//All this child's tables
+            Vector<DatabaseTable> tables = getDescriptor().getTables();//All this child's tables
             tableSize = tables.size();
             //look up the joins from the parent descriptor to our tables.
             for (int i=0; i < tableSize; i++) {
@@ -466,7 +466,7 @@
         }
 
         if (isUsingOuterJoinForMultitableInheritance()) {
-            List childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
+            List<DatabaseTable> childrenTables = getDescriptor().getInheritancePolicy().getChildrenTables();
             tableSize = childrenTables.size();
             for (int i=0; i < tableSize; i++) {
                 DatabaseTable table = (DatabaseTable)childrenTables.get(i);
@@ -492,7 +492,7 @@
         //need to build this using just the multiple tables on this descriptor not included in the parent's join expression
         Expression criteria = null;
         if(getSession().getPlatform().shouldPrintOuterJoinInWhereClause()) {
-            Vector tables = getDescriptor().getTables();//This child's tables
+            Vector<DatabaseTable> tables = getDescriptor().getTables();//This child's tables
             ClassDescriptor parentDescriptor = this.typeExpressionBase.getDescriptor();
             int tablesSize = tables.size();
             if (parentDescriptor.hasInheritance() &&
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ClassConstants.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ClassConstants.java
index eef5a08..9ed25c1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ClassConstants.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ClassConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,16 +14,54 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.internal.helper;
 
+import java.beans.PropertyChangeEvent;
+import java.sql.Blob;
+import java.sql.Clob;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
 import java.util.*;
-import java.math.*;
-import java.net.URL;
 
-import javax.xml.datatype.Duration;
-import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.namespace.QName;
-
+import org.eclipse.persistence.descriptors.DescriptorEvent;
+import org.eclipse.persistence.descriptors.changetracking.ChangeTracker;
+import org.eclipse.persistence.descriptors.changetracking.CollectionChangeEvent;
+import org.eclipse.persistence.descriptors.changetracking.MapChangeEvent;
+import org.eclipse.persistence.expressions.Expression;
+import org.eclipse.persistence.indirection.IndirectContainer;
+import org.eclipse.persistence.indirection.IndirectList;
+import org.eclipse.persistence.indirection.IndirectMap;
+import org.eclipse.persistence.indirection.IndirectSet;
+import org.eclipse.persistence.indirection.ValueHolderInterface;
+import org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface;
+import org.eclipse.persistence.internal.databaseaccess.Accessor;
+import org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression;
+import org.eclipse.persistence.internal.expressions.FunctionExpression;
+import org.eclipse.persistence.internal.expressions.LogicalExpression;
+import org.eclipse.persistence.internal.expressions.RelationExpression;
+import org.eclipse.persistence.internal.identitymaps.CacheIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.FullIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.HardCacheWeakIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.NoIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.SoftCacheWeakIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.SoftIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.WeakIdentityMap;
+import org.eclipse.persistence.internal.sessions.AbstractRecord;
+import org.eclipse.persistence.internal.weaving.PersistenceWeavedLazy;
+import org.eclipse.persistence.mappings.querykeys.QueryKey;
+import org.eclipse.persistence.queries.CursoredStream;
+import org.eclipse.persistence.queries.DatabaseQuery;
+import org.eclipse.persistence.queries.FetchGroupTracker;
+import org.eclipse.persistence.queries.ScrollableCursor;
+import org.eclipse.persistence.sessions.DirectConnector;
+import org.eclipse.persistence.sessions.Session;
+import org.eclipse.persistence.sessions.server.ServerSession;
+import org.eclipse.persistence.tools.profiler.PerformanceProfiler;
 import org.w3c.dom.Document;
-import org.w3c.dom.Node;
 
 import org.eclipse.persistence.indirection.IndirectCollectionsFactory;
 import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
@@ -33,122 +71,93 @@
 /**
  * INTERNAL:
  */
-public class ClassConstants extends CoreClassConstants {
+@SuppressWarnings({"rawtypes"})
+public final class ClassConstants extends CoreClassConstants {
     // Java classes
-    public static final Class Hashtable_Class = Hashtable.class;
-    public static final Class Enumeration_Class = Enumeration.class;
-    public static final Class JavaSqlTime_Class = java.sql.Time.class;
-    public static final Class JavaSqlDate_Class = java.sql.Date.class;
-    public static final Class JavaSqlTimestamp_Class = java.sql.Timestamp.class;
-    public static final Class List_Class = List.class;
-    public static final Class Map_Entry_Class = Map.Entry.class;
-    public static final Class Object_Class = Object.class;
-    public static final Class SortedSet_Class = SortedSet.class;
-    public static final Class URL_Class = URL.class;
-    public static final Class Vector_class = Vector.class;
-    public static final Class HashSet_class = HashSet.class;
-    public static final Class Void_Class = void.class;
-    public static final Class PropertyChangeEvent_Class = java.beans.PropertyChangeEvent.class;
+
+    public static final Class<Hashtable> Hashtable_Class = Hashtable.class;
+    public static final Class<Enumeration> Enumeration_Class = Enumeration.class;
+    @Deprecated
+    public static final Class<Time> JavaSqlTime_Class = TIME;
+    @Deprecated
+    public static final Class<Date> JavaSqlDate_Class = SQLDATE;
+    @Deprecated
+    public static final Class<Timestamp> JavaSqlTimestamp_Class = TIMESTAMP;
+    public static final Class<Map.Entry> Map_Entry_Class = Map.Entry.class;
+    @Deprecated
+    public static final Class<Object> Object_Class = OBJECT;
+    public static final Class<SortedSet> SortedSet_Class = SortedSet.class;
+    public static final Class<Vector> Vector_class = Vector.class;
+    public static final Class<HashSet> HashSet_class = HashSet.class;
+    public static final Class<Void> Void_Class = void.class;
+    public static final Class<PropertyChangeEvent> PropertyChangeEvent_Class = PropertyChangeEvent.class;
 
     // Eclipselink Classes
-    public static final Class Accessor_Class = org.eclipse.persistence.internal.databaseaccess.Accessor.class;
-    public static final Class ConversionManager_Class = org.eclipse.persistence.internal.helper.ConversionManager.class;
-    public static final Class CursoredStream_Class = org.eclipse.persistence.queries.CursoredStream.class;
-    public static final Class DatabaseQuery_Class = org.eclipse.persistence.queries.DatabaseQuery.class;
-    public static final Class DatabaseRow_Class = org.eclipse.persistence.internal.sessions.AbstractRecord.class;
-    public static final Class OldDescriptorEvent_Class = org.eclipse.persistence.descriptors.DescriptorEvent.class;
-    public static final Class DescriptorEvent_Class = org.eclipse.persistence.descriptors.DescriptorEvent.class;
-    public static final Class DirectConnector_Class = org.eclipse.persistence.sessions.DirectConnector.class;
-    public static final Class Expression_Class = org.eclipse.persistence.expressions.Expression.class;
-    public static final Class FunctionExpression_Class = org.eclipse.persistence.internal.expressions.FunctionExpression.class;
-    public static final Class ArgumentListFunctionExpression_Class = org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression.class;
-    public static final Class IndirectContainer_Class = org.eclipse.persistence.indirection.IndirectContainer.class;
-    public static final Class IndirectList_Class = IndirectCollectionsFactory.IndirectList_Class;
-    public static final Class IndirectSet_Class = IndirectCollectionsFactory.IndirectSet_Class;
-    public static final Class IndirectMap_Class = IndirectCollectionsFactory.IndirectMap_Class;
-    public static final Class LogicalExpression_Class = org.eclipse.persistence.internal.expressions.LogicalExpression.class;
-    public static final Class PublicInterfaceDatabaseSession_Class = DatabaseSessionImpl.class;
-    public static final Class PerformanceProfiler_Class = org.eclipse.persistence.tools.profiler.PerformanceProfiler.class;
-    public static final Class PublicInterfaceSession_Class = AbstractSession.class;
-    public static final Class QueryKey_Class = org.eclipse.persistence.mappings.querykeys.QueryKey.class;
-    public static final Class RelationExpression_Class = org.eclipse.persistence.internal.expressions.RelationExpression.class;
-    public static final Class Record_Class = org.eclipse.persistence.sessions.Record.class;
-    public static final Class ServerSession_Class = org.eclipse.persistence.sessions.server.ServerSession.class;
-    public static final Class SessionsSession_Class = org.eclipse.persistence.sessions.Session.class;
-    public static final Class ScrollableCursor_Class = org.eclipse.persistence.queries.ScrollableCursor.class;
-    public static final Class ValueHolderInterface_Class = org.eclipse.persistence.indirection.ValueHolderInterface.class;
-    public static final Class CollectionChangeEvent_Class = org.eclipse.persistence.descriptors.changetracking.CollectionChangeEvent.class;
-    public static final Class MapChangeEvent_Class = org.eclipse.persistence.descriptors.changetracking.MapChangeEvent.class;
-    public static final Class ChangeTracker_Class = org.eclipse.persistence.descriptors.changetracking.ChangeTracker.class;
-    public static final Class WeavedAttributeValueHolderInterface_Class = org.eclipse.persistence.indirection.WeavedAttributeValueHolderInterface.class;
-    public static final Class PersistenceWeavedLazy_Class = org.eclipse.persistence.internal.weaving.PersistenceWeavedLazy.class;
+    public static final Class<Accessor> Accessor_Class = Accessor.class;
+    public static final Class<ConversionManager> ConversionManager_Class = ConversionManager.class;
+    public static final Class<CursoredStream> CursoredStream_Class = CursoredStream.class;
+    public static final Class<DatabaseQuery> DatabaseQuery_Class = DatabaseQuery.class;
+    public static final Class<AbstractRecord> DatabaseRow_Class = AbstractRecord.class;
+    public static final Class<DescriptorEvent> OldDescriptorEvent_Class = DescriptorEvent.class;
+    public static final Class<DescriptorEvent> DescriptorEvent_Class = DescriptorEvent.class;
+    public static final Class<DirectConnector> DirectConnector_Class = DirectConnector.class;
+    public static final Class<Expression> Expression_Class = Expression.class;
+    public static final Class<FunctionExpression> FunctionExpression_Class = FunctionExpression.class;
+    public static final Class<ArgumentListFunctionExpression> ArgumentListFunctionExpression_Class = ArgumentListFunctionExpression.class;
+    public static final Class<IndirectContainer> IndirectContainer_Class = IndirectContainer.class;
+    public static final Class<IndirectList> IndirectList_Class = IndirectCollectionsFactory.IndirectList_Class;
+    public static final Class<IndirectSet> IndirectSet_Class = IndirectCollectionsFactory.IndirectSet_Class;
+    public static final Class<IndirectMap> IndirectMap_Class = IndirectCollectionsFactory.IndirectMap_Class;
+    public static final Class<LogicalExpression> LogicalExpression_Class = LogicalExpression.class;
+    public static final Class<DatabaseSessionImpl> PublicInterfaceDatabaseSession_Class = DatabaseSessionImpl.class;
+    public static final Class<PerformanceProfiler> PerformanceProfiler_Class = PerformanceProfiler.class;
+    public static final Class<AbstractSession> PublicInterfaceSession_Class = AbstractSession.class;
+    public static final Class<QueryKey> QueryKey_Class = QueryKey.class;
+    public static final Class<RelationExpression> RelationExpression_Class = RelationExpression.class;
+    public static final Class<org.eclipse.persistence.sessions.Record> Record_Class = org.eclipse.persistence.sessions.Record.class;
+    public static final Class<ServerSession> ServerSession_Class = ServerSession.class;
+    public static final Class<Session> SessionsSession_Class = Session.class;
+    public static final Class<ScrollableCursor> ScrollableCursor_Class = ScrollableCursor.class;
+    public static final Class<ValueHolderInterface> ValueHolderInterface_Class = ValueHolderInterface.class;
+    public static final Class<CollectionChangeEvent> CollectionChangeEvent_Class = CollectionChangeEvent.class;
+    public static final Class<MapChangeEvent> MapChangeEvent_Class = MapChangeEvent.class;
+    public static final Class<ChangeTracker> ChangeTracker_Class = ChangeTracker.class;
+    public static final Class<WeavedAttributeValueHolderInterface> WeavedAttributeValueHolderInterface_Class = WeavedAttributeValueHolderInterface.class;
+    public static final Class<PersistenceWeavedLazy> PersistenceWeavedLazy_Class = PersistenceWeavedLazy.class;
 
     // Identity map classes
-    public static final Class CacheIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.CacheIdentityMap.class;
-    public static final Class FullIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.FullIdentityMap.class;
-    public static final Class HardCacheWeakIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.HardCacheWeakIdentityMap.class;
-    public static final Class NoIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.NoIdentityMap.class;
-    public static final Class SoftCacheWeakIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.SoftCacheWeakIdentityMap.class;
-    public static final Class SoftIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.SoftIdentityMap.class;
-    public static final Class WeakIdentityMap_Class = org.eclipse.persistence.internal.identitymaps.WeakIdentityMap.class;
+    public static final Class<CacheIdentityMap> CacheIdentityMap_Class = CacheIdentityMap.class;
+    public static final Class<FullIdentityMap> FullIdentityMap_Class = FullIdentityMap.class;
+    public static final Class<HardCacheWeakIdentityMap> HardCacheWeakIdentityMap_Class = HardCacheWeakIdentityMap.class;
+    public static final Class<NoIdentityMap> NoIdentityMap_Class = NoIdentityMap.class;
+    public static final Class<SoftCacheWeakIdentityMap> SoftCacheWeakIdentityMap_Class = SoftCacheWeakIdentityMap.class;
+    public static final Class<SoftIdentityMap> SoftIdentityMap_Class = SoftIdentityMap.class;
+    public static final Class<WeakIdentityMap> WeakIdentityMap_Class = WeakIdentityMap.class;
 
     //fetch group class
-    public static final Class FetchGroupTracker_class = org.eclipse.persistence.queries.FetchGroupTracker.class;
+    public static final Class<FetchGroupTracker> FetchGroupTracker_class = FetchGroupTracker.class;
 
     // Moved from ConversionManager
-    public static final Class ABYTE = Byte[].class;
     public static final Class AOBJECT = Object[].class;
     public static final Class ACHAR = Character[].class;
-    public static final Class APBYTE = byte[].class;
-    public static final Class APCHAR = char[].class;
-    public static final Class BIGDECIMAL = BigDecimal.class;
-    public static final Class BIGINTEGER = BigInteger.class;
-    public static final Class BOOLEAN = Boolean.class;
-    public static final Class BYTE = Byte.class;
-    public static final Class CLASS = Class.class;
-    public static final Class CHAR = Character.class;
-    public static final Class CALENDAR = Calendar.class;
-    public static final Class DOUBLE = Double.class;
-    public static final Class FLOAT = Float.class;
-    public static final Class GREGORIAN_CALENDAR = GregorianCalendar.class;
-    public static final Class INTEGER = Integer.class;
-    public static final Class LONG = Long.class;
-    public static final Class NUMBER = Number.class;
-    public static final Class OBJECT = Object.class;
-    public static final Class PBOOLEAN = boolean.class;
-    public static final Class PBYTE = byte.class;
-    public static final Class PCHAR = char.class;
-    public static final Class PDOUBLE = double.class;
-    public static final Class PFLOAT = float.class;
-    public static final Class PINT = int.class;
-    public static final Class PLONG = long.class;
-    public static final Class PSHORT = short.class;
-    public static final Class SHORT = Short.class;
-    public static final Class SQLDATE = java.sql.Date.class;
-    public static final Class STRING = String.class;
-    public static final Class TIME = java.sql.Time.class;
-    public static final Class TIMESTAMP = java.sql.Timestamp.class;
-    public static final Class UTILDATE = java.util.Date.class;
-    public static final Class TIME_LDATE = java.time.LocalDate.class;
-    public static final Class TIME_LTIME = java.time.LocalTime.class;
-    public static final Class TIME_LDATETIME = java.time.LocalDateTime.class;
-    public static final Class TIME_ODATETIME = java.time.OffsetDateTime.class;
-    public static final Class TIME_OTIME = java.time.OffsetTime.class;
-    public static final Class QNAME = QName.class;
-    public static final Class XML_GREGORIAN_CALENDAR = XMLGregorianCalendar.class;
-    public static final Class DURATION = Duration.class;
+    public static final Class<LocalDate> TIME_LDATE = LocalDate.class;
+    public static final Class<LocalTime> TIME_LTIME = LocalTime.class;
+    public static final Class<LocalDateTime> TIME_LDATETIME = LocalDateTime.class;
+    public static final Class<OffsetDateTime> TIME_ODATETIME = OffsetDateTime.class;
+    public static final Class<OffsetTime> TIME_OTIME = OffsetTime.class;
 
     //LOB support types
-    public static final Class BLOB = java.sql.Blob.class;
-    public static final Class CLOB = java.sql.Clob.class;
+    public static final Class<Blob> BLOB = Blob.class;
+    public static final Class<Clob> CLOB = Clob.class;
 
     //Indication to ConversionManager not to convert classes implementing this interface
-    public static final Class NOCONVERSION = NoConversion.class;
+    public static final Class<NoConversion> NOCONVERSION = NoConversion.class;
 
     //XML Classes
-    public static final Class DOCUMENT = Document.class;
-    public static final Class NODE = Node.class;
+    public static final Class<Document> DOCUMENT = Document.class;
 
-    public ClassConstants() {
+
+    private ClassConstants() {
+        //no instance please
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ConversionManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ConversionManager.java
index f783fd4..2bf15f1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ConversionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/ConversionManager.java
@@ -36,11 +36,13 @@
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZoneOffset;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
-import java.util.Vector;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 
 import org.eclipse.persistence.config.SystemProperties;
@@ -65,7 +67,7 @@
  *    </ul>
  */
 public class ConversionManager extends CoreConversionManager implements Serializable, Cloneable {
-    protected Map defaultNullValues;
+    protected Map<Class<?>, Object> defaultNullValues;
     private static ZoneId defaultZoneOffset = null;
 
     /**
@@ -80,10 +82,10 @@
     protected ClassLoader loader;
 
     /** Store the list of Classes that can be converted to from the key. */
-    protected Hashtable dataTypesConvertedFromAClass;
+    protected Map<Object, List<Class<?>>> dataTypesConvertedFromAClass;
 
     /** Store the list of Classes that can be converted from to the key. */
-    protected Hashtable dataTypesConvertedToAClass;
+    protected Map<Class<?>, List<Class<?>>> dataTypesConvertedToAClass;
 
     private static ZoneId getDefaultZoneOffset() {
         if (defaultZoneOffset == null) {
@@ -137,8 +139,8 @@
     }
     
     public ConversionManager() {
-        this.dataTypesConvertedFromAClass = new Hashtable();
-        this.dataTypesConvertedToAClass = new Hashtable();
+        this.dataTypesConvertedFromAClass = new Hashtable<>();
+        this.dataTypesConvertedToAClass = new Hashtable<>();
     }
 
     /**
@@ -162,7 +164,8 @@
      * @return the newly converted object
      */
     @Override
-    public Object convertObject(Object sourceObject, Class javaClass) throws ConversionException {
+    @SuppressWarnings({"unchecked"})
+    public <T> T convertObject(Object sourceObject, Class<T> javaClass) throws ConversionException {
         if (sourceObject == null) {
             // Check for default null conversion.
             // i.e. allow for null to be defaulted to "", or 0 etc.
@@ -174,66 +177,66 @@
         }
 
         if ((sourceObject.getClass() == javaClass) || (javaClass == null) || (javaClass == ClassConstants.OBJECT) || (javaClass == ClassConstants.BLOB) || (javaClass == ClassConstants.CLOB)) {
-            return sourceObject;
+            return (T) sourceObject;
         }
 
         try {
             if (javaClass == ClassConstants.STRING) {
-                return convertObjectToString(sourceObject);
+                return (T) convertObjectToString(sourceObject);
             } else if (javaClass == ClassConstants.UTILDATE) {
-                return convertObjectToUtilDate(sourceObject);
+                return (T) convertObjectToUtilDate(sourceObject);
             } else if (javaClass == ClassConstants.SQLDATE) {
-                return convertObjectToDate(sourceObject);
+                return (T) convertObjectToDate(sourceObject);
             } else if (javaClass == ClassConstants.TIME) {
-                return convertObjectToTime(sourceObject);
+                return (T) convertObjectToTime(sourceObject);
             } else if (javaClass == ClassConstants.TIMESTAMP) {
-                return convertObjectToTimestamp(sourceObject);
+                return (T) convertObjectToTimestamp(sourceObject);
             } else if (javaClass == ClassConstants.TIME_LDATE) {
-                return convertObjectToLocalDate(sourceObject);
+                return (T) convertObjectToLocalDate(sourceObject);
             } else if (javaClass == ClassConstants.TIME_LDATETIME) {
-                return convertObjectToLocalDateTime(sourceObject);
+                return (T) convertObjectToLocalDateTime(sourceObject);
             } else if (javaClass == ClassConstants.TIME_LTIME) {
-                return convertObjectToLocalTime(sourceObject);
+                return (T) convertObjectToLocalTime(sourceObject);
             } else if (javaClass == ClassConstants.TIME_ODATETIME) {
-                return convertObjectToOffsetDateTime(sourceObject);
+                return (T) convertObjectToOffsetDateTime(sourceObject);
             } else if (javaClass == ClassConstants.TIME_OTIME) {
-                return convertObjectToOffsetTime(sourceObject);
+                return (T) convertObjectToOffsetTime(sourceObject);
             } else if ((javaClass == ClassConstants.CALENDAR) || (javaClass == ClassConstants.GREGORIAN_CALENDAR)) {
-                return convertObjectToCalendar(sourceObject);
+                return (T) convertObjectToCalendar(sourceObject);
             } else if ((javaClass == ClassConstants.CHAR) || (javaClass == ClassConstants.PCHAR && !(sourceObject instanceof Character))) {
-                return convertObjectToChar(sourceObject);
+                return (T) convertObjectToChar(sourceObject);
             } else if ((javaClass == ClassConstants.INTEGER) || (javaClass == ClassConstants.PINT && !(sourceObject instanceof Integer))) {
-                return convertObjectToInteger(sourceObject);
+                return (T) convertObjectToInteger(sourceObject);
             } else if ((javaClass == ClassConstants.DOUBLE) || (javaClass == ClassConstants.PDOUBLE && !(sourceObject instanceof Double))) {
-                return convertObjectToDouble(sourceObject);
+                return (T) convertObjectToDouble(sourceObject);
             } else if ((javaClass == ClassConstants.FLOAT) || (javaClass == ClassConstants.PFLOAT && !(sourceObject instanceof Float))) {
-                return convertObjectToFloat(sourceObject);
+                return (T) convertObjectToFloat(sourceObject);
             } else if ((javaClass == ClassConstants.LONG) || (javaClass == ClassConstants.PLONG && !(sourceObject instanceof Long))) {
-                return convertObjectToLong(sourceObject);
+                return (T) convertObjectToLong(sourceObject);
             } else if ((javaClass == ClassConstants.SHORT) || (javaClass == ClassConstants.PSHORT && !(sourceObject instanceof Short))) {
-                return convertObjectToShort(sourceObject);
+                return (T) convertObjectToShort(sourceObject);
             } else if ((javaClass == ClassConstants.BYTE) || (javaClass == ClassConstants.PBYTE && !(sourceObject instanceof Byte))) {
-                return convertObjectToByte(sourceObject);
+                return (T) convertObjectToByte(sourceObject);
             } else if (javaClass == ClassConstants.BIGINTEGER) {
-                return convertObjectToBigInteger(sourceObject);
+                return (T) convertObjectToBigInteger(sourceObject);
             } else if (javaClass == ClassConstants.BIGDECIMAL) {
-                return convertObjectToBigDecimal(sourceObject);
+                return (T) convertObjectToBigDecimal(sourceObject);
             } else if (javaClass == ClassConstants.NUMBER) {
-                return convertObjectToNumber(sourceObject);
+                return (T) convertObjectToNumber(sourceObject);
             } else if ((javaClass == ClassConstants.BOOLEAN) || (javaClass == ClassConstants.PBOOLEAN  && !(sourceObject instanceof Boolean))) {
-                return convertObjectToBoolean(sourceObject);
+                return (T) convertObjectToBoolean(sourceObject);
             } else if (javaClass == ClassConstants.APBYTE) {
-                return convertObjectToByteArray(sourceObject);
+                return (T) convertObjectToByteArray(sourceObject);
             } else if (javaClass == ClassConstants.ABYTE) {
-                return convertObjectToByteObjectArray(sourceObject);
+                return (T) convertObjectToByteObjectArray(sourceObject);
             } else if (javaClass == ClassConstants.APCHAR) {
-                return convertObjectToCharArray(sourceObject);
+                return (T) convertObjectToCharArray(sourceObject);
             } else if (javaClass == ClassConstants.ACHAR) {
-                return convertObjectToCharacterArray(sourceObject);
+                return (T) convertObjectToCharacterArray(sourceObject);
             } else if ((sourceObject.getClass() == ClassConstants.STRING) && (javaClass == ClassConstants.CLASS)) {
-                return convertObjectToClass(sourceObject);
+                return (T) convertObjectToClass(sourceObject);
             } else if(javaClass == ClassConstants.URL_Class) {
-                return convertObjectToUrl(sourceObject);
+                return (T) convertObjectToUrl(sourceObject);
             }
         } catch (ConversionException ce) {
             throw ce;
@@ -250,15 +253,15 @@
             ((javaClass == ClassConstants.PBYTE) &&  (sourceObject instanceof Byte)) ||
             ((javaClass == ClassConstants.PCHAR) &&  (sourceObject instanceof Character)) ||
             ((javaClass == ClassConstants.PSHORT) &&  (sourceObject instanceof Short)))) {
-            return sourceObject;
+            return (T) sourceObject;
         }
 
         // Delay this check as poor performance.
         if (javaClass.isInstance(sourceObject)) {
-            return sourceObject;
+            return (T) sourceObject;
         }
         if (ClassConstants.NOCONVERSION.isAssignableFrom(javaClass)) {
-            return sourceObject;
+            return (T) sourceObject;
         }
 
         throw ConversionException.couldNotBeConverted(sourceObject, javaClass);
@@ -474,7 +477,7 @@
         if (sourceObject instanceof String) {
             if (((String)sourceObject).length() < 1) {
                 // ELBug336192 - Return default null value of char instead of returning null.
-                return (Character)getDefaultNullValue(ClassConstants.PCHAR);
+                return getDefaultNullValue(ClassConstants.PCHAR);
             }
             return ((String) sourceObject).charAt(0);
         }
@@ -522,8 +525,9 @@
      * Build a valid Class from the string that is passed in
      *    @param sourceObject    Valid instance of String
      */
-    protected Class convertObjectToClass(Object sourceObject) throws ConversionException {
-        Class theClass = null;
+    @SuppressWarnings({"unchecked"})
+    protected <T> Class<T> convertObjectToClass(Object sourceObject) throws ConversionException {
+        Class<?> theClass = null;
         if (!(sourceObject instanceof String)) {
             throw ConversionException.couldNotBeConverted(sourceObject, ClassConstants.CLASS);
         }
@@ -536,7 +540,7 @@
         } catch (Exception exception) {
             throw ConversionException.couldNotBeConvertedToClass(sourceObject, ClassConstants.CLASS, exception);
         }
-        return theClass;
+        return (Class<T>) theClass;
     }
 
     /**
@@ -738,7 +742,7 @@
      */
     protected String convertObjectToString(Object sourceObject) throws ConversionException {
 
-        Class sourceObjectClass = sourceObject.getClass();
+        Class<?> sourceObjectClass = sourceObject.getClass();
 
         if (sourceObject instanceof java.lang.Number) {
             return sourceObject.toString();
@@ -764,7 +768,7 @@
         } else if (sourceObjectClass == ClassConstants.ACHAR) {
             return new String(convertObjectToCharArray(sourceObject));
         } else if (sourceObject instanceof Class) {
-            return ((Class)sourceObject).getName();
+            return ((Class<?>)sourceObject).getName();
         } else if (sourceObjectClass == ClassConstants.CHAR) {
             return sourceObject.toString();
         } else if (sourceObject instanceof Clob) {
@@ -1102,7 +1106,8 @@
      * Resolve the given String className into a class using this
      * ConversionManager's classloader.
      */
-    public Class convertClassNameToClass(String className) throws ConversionException {
+    @SuppressWarnings({"unchecked"})
+    public <T> Class<T> convertClassNameToClass(String className) throws ConversionException {
         return convertObjectToClass(className);
     }
 
@@ -1124,9 +1129,10 @@
      * Allow for the null values for classes to be defaulted in one place.
      * Any nulls read from the database to be converted to the class will be given the specified null value.
      */
-    public Object getDefaultNullValue(Class theClass) {
+    @SuppressWarnings({"unchecked"})
+    public <T> T getDefaultNullValue(Class<T> theClass) {
         if (this.defaultNullValues == null) return null;
-        return getDefaultNullValues().get(theClass);
+        return (T) getDefaultNullValues().get(theClass);
     }
 
     /**
@@ -1134,7 +1140,7 @@
      * Allow for the null values for classes to be defaulted in one place.
      * Any nulls read from the database to be converted to the class will be given the specified null value.
      */
-    public Map getDefaultNullValues() {
+    public Map<Class<?>, Object> getDefaultNullValues() {
         return defaultNullValues;
     }
 
@@ -1189,15 +1195,17 @@
      * This should be used to load all classes as Class.forName can only
      * see classes on the same classpath as the eclipselink.jar.
      */
-    public static Class loadClass(String className) {
-        return (Class)getDefaultManager().convertObject(className, ClassConstants.CLASS);
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> loadClass(String className) {
+        return (Class<T>) getDefaultManager().convertObject(className, ClassConstants.CLASS);
     }
 
     /**
      * INTERNAL:
      * This is used to determine the wrapper class for a primitive.
      */
-    public static Class getObjectClass(Class javaClass) {
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getObjectClass(Class<?> javaClass) {
         // Null means unknown always for classifications.
         if (javaClass == null) {
             return null;
@@ -1205,61 +1213,62 @@
 
         if (javaClass.isPrimitive()) {
             if (javaClass == ClassConstants.PCHAR) {
-                return ClassConstants.CHAR;
+                return (Class<T>) ClassConstants.CHAR;
             }
             if (javaClass == ClassConstants.PINT) {
-                return ClassConstants.INTEGER;
+                return (Class<T>) ClassConstants.INTEGER;
             }
             if (javaClass == ClassConstants.PDOUBLE) {
-                return ClassConstants.DOUBLE;
+                return (Class<T>) ClassConstants.DOUBLE;
             }
             if (javaClass == ClassConstants.PFLOAT) {
-                return ClassConstants.FLOAT;
+                return (Class<T>) ClassConstants.FLOAT;
             }
             if (javaClass == ClassConstants.PLONG) {
-                return ClassConstants.LONG;
+                return (Class<T>) ClassConstants.LONG;
             }
             if (javaClass == ClassConstants.PSHORT) {
-                return ClassConstants.SHORT;
+                return (Class<T>) ClassConstants.SHORT;
             }
             if (javaClass == ClassConstants.PBYTE) {
-                return ClassConstants.BYTE;
+                return (Class<T>) ClassConstants.BYTE;
             }
             if (javaClass == ClassConstants.PBOOLEAN) {
-                return ClassConstants.BOOLEAN;
+                return (Class<T>) ClassConstants.BOOLEAN;
             }
             } else if (javaClass == ClassConstants.APBYTE) {
-                return ClassConstants.APBYTE;
+                return (Class<T>) ClassConstants.APBYTE;
             } else if (javaClass == ClassConstants.APCHAR) {
-                return ClassConstants.APCHAR;
+                return (Class<T>) ClassConstants.APCHAR;
             } else {
-                return javaClass;
+                return (Class<T>) javaClass;
             }
 
-        return javaClass;
+        return (Class<T>) javaClass;
     }
 
     /**
      * INTERNAL:
      * Returns a class based on the passed in string.
      */
-    public static Class getPrimitiveClass(String classType) {
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getPrimitiveClass(String classType) {
         if (classType.equals("int")) {
-            return Integer.TYPE;
+            return (Class<T>) Integer.TYPE;
         } else if (classType.equals("boolean")) {
-            return Boolean.TYPE;
+            return (Class<T>) Boolean.TYPE;
         } else if (classType.equals("char")) {
-            return Character.TYPE;
+            return (Class<T>) Character.TYPE;
         } else if (classType.equals("short")) {
-            return Short.TYPE;
+            return (Class<T>) Short.TYPE;
         } else if (classType.equals("byte")) {
-            return Byte.TYPE;
+            return (Class<T>) Byte.TYPE;
         } else if (classType.equals("float")) {
-            return Float.TYPE;
+            return (Class<T>) Float.TYPE;
         } else if (classType.equals("double")) {
-            return Double.TYPE;
+            return (Class<T>) Double.TYPE;
         } else if (classType.equals("long")) {
-            return Long.TYPE;
+            return (Class<T>) Long.TYPE;
         }
 
         return null;
@@ -1280,9 +1289,9 @@
      * Any nulls read from the database to be converted to the class will be given the specified null value.
      * Primitive null values should be set to the wrapper class.
      */
-    public void setDefaultNullValue(Class theClass, Object theValue) {
+    public void setDefaultNullValue(Class<?> theClass, Object theValue) {
         if (this.defaultNullValues == null){
-            this.defaultNullValues = new HashMap(5);
+            this.defaultNullValues = new HashMap<>(5);
         }
         getDefaultNullValues().put(theClass, theValue);
     }
@@ -1292,7 +1301,7 @@
      * Allow for the null values for classes to be defaulted in one place.
      * Any nulls read from the database to be converted to the class will be given the specified null value.
      */
-    public void setDefaultNullValues(Map defaultNullValues) {
+    public void setDefaultNullValues(Map<Class<?>, Object> defaultNullValues) {
         this.defaultNullValues = defaultNullValues;
     }
 
@@ -1349,11 +1358,11 @@
      * @param javaClass - the class that is converted from
      * @return - a vector of classes
      */
-    public Vector getDataTypesConvertedFrom(Class javaClass) {
+    public List<Class<?>> getDataTypesConvertedFrom(Class<?> javaClass) {
         if (dataTypesConvertedFromAClass.isEmpty()) {
             buildDataTypesConvertedFromAClass();
         }
-        return (Vector)dataTypesConvertedFromAClass.get(javaClass);
+        return dataTypesConvertedFromAClass.get(javaClass);
     }
 
     /**
@@ -1362,32 +1371,32 @@
      * @param javaClass - the class that is converted to
      * @return - a vector of classes
      */
-    public Vector getDataTypesConvertedTo(Class javaClass) {
+    public List<Class<?>> getDataTypesConvertedTo(Class<?> javaClass) {
         if (dataTypesConvertedToAClass.isEmpty()) {
             buildDataTypesConvertedToAClass();
         }
-        return (Vector)dataTypesConvertedToAClass.get(javaClass);
+        return dataTypesConvertedToAClass.get(javaClass);
     }
 
-    protected Vector buildNumberVec() {
-        Vector vec = new Vector();
-        vec.addElement(BigInteger.class);
-        vec.addElement(BigDecimal.class);
-        vec.addElement(Byte.class);
-        vec.addElement(Double.class);
-        vec.addElement(Float.class);
-        vec.addElement(Integer.class);
-        vec.addElement(Long.class);
-        vec.addElement(Short.class);
-        vec.addElement(Number.class);
+    protected List<Class<?>> buildNumberVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(BigInteger.class);
+        vec.add(BigDecimal.class);
+        vec.add(Byte.class);
+        vec.add(Double.class);
+        vec.add(Float.class);
+        vec.add(Integer.class);
+        vec.add(Long.class);
+        vec.add(Short.class);
+        vec.add(Number.class);
         return vec;
     }
 
-    protected Vector buildDateTimeVec() {
-        Vector vec = new Vector();
-        vec.addElement(java.util.Date.class);
-        vec.addElement(Timestamp.class);
-        vec.addElement(Calendar.class);
+    protected List<Class<?>> buildDateTimeVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(java.util.Date.class);
+        vec.add(Timestamp.class);
+        vec.add(Calendar.class);
         return vec;
     }
 
@@ -1417,183 +1426,183 @@
         dataTypesConvertedFromAClass.put(Character[].class, buildFromCharacterArrayVec());
     }
 
-    protected Vector buildFromBooleanVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Boolean.class);
-        vec.addElement(Integer.class);
-        vec.addElement(Long.class);
-        vec.addElement(Short.class);
-        vec.addElement(Number.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
-        vec.addElement(boolean.class);
-        vec.addElement(int.class);
-        vec.addElement(long.class);
-        vec.addElement(short.class);
+    protected List<Class<?>> buildFromBooleanVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Boolean.class);
+        vec.add(Integer.class);
+        vec.add(Long.class);
+        vec.add(Short.class);
+        vec.add(Number.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
+        vec.add(boolean.class);
+        vec.add(int.class);
+        vec.add(long.class);
+        vec.add(short.class);
         return vec;
     }
 
-    protected Vector buildFromNumberVec() {
-        Vector vec = buildNumberVec();
-        vec.addElement(String.class);
-        vec.addElement(Character.class);
-        vec.addElement(Boolean.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
-        vec.addElement(char.class);
-        vec.addElement(int.class);
-        vec.addElement(double.class);
-        vec.addElement(float.class);
-        vec.addElement(long.class);
-        vec.addElement(short.class);
-        vec.addElement(byte.class);
-        vec.addElement(boolean.class);
+    protected List<Class<?>> buildFromNumberVec() {
+        List<Class<?>> vec = buildNumberVec();
+        vec.add(String.class);
+        vec.add(Character.class);
+        vec.add(Boolean.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
+        vec.add(char.class);
+        vec.add(int.class);
+        vec.add(double.class);
+        vec.add(float.class);
+        vec.add(long.class);
+        vec.add(short.class);
+        vec.add(byte.class);
+        vec.add(boolean.class);
         return vec;
     }
 
-    protected Vector buildFromBigDecimalVec() {
+    protected List<Class<?>> buildFromBigDecimalVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromBigIntegerVec() {
+    protected List<Class<?>> buildFromBigIntegerVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromIntegerVec() {
+    protected List<Class<?>> buildFromIntegerVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromFloatVec() {
+    protected List<Class<?>> buildFromFloatVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromDoubleVec() {
+    protected List<Class<?>> buildFromDoubleVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromShortVec() {
+    protected List<Class<?>> buildFromShortVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromByteVec() {
+    protected List<Class<?>> buildFromByteVec() {
         return buildFromNumberVec();
     }
 
-    protected Vector buildFromLongVec() {
-        Vector vec = buildFromNumberVec();
+    protected List<Class<?>> buildFromLongVec() {
+        List<Class<?>> vec = buildFromNumberVec();
         vec.addAll(buildDateTimeVec());
-        vec.addElement(java.sql.Date.class);
-        vec.addElement(Time.class);
+        vec.add(java.sql.Date.class);
+        vec.add(Time.class);
         return vec;
     }
 
-    protected Vector buildFromStringVec() {
-        Vector vec = buildFromLongVec();
-        vec.addElement(Byte[].class);
-        vec.addElement(byte[].class);
-        vec.addElement(Clob.class);
+    protected List<Class<?>> buildFromStringVec() {
+        List<Class<?>> vec = buildFromLongVec();
+        vec.add(Byte[].class);
+        vec.add(byte[].class);
+        vec.add(Clob.class);
         return vec;
     }
 
-    protected Vector buildFromCharacterVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Boolean.class);
-        vec.addElement(Character[].class);
-        vec.addElement(Character.class);
-        vec.addElement(char[].class);
-        vec.addElement(char.class);
-        vec.addElement(boolean.class);
+    protected List<Class<?>> buildFromCharacterVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Boolean.class);
+        vec.add(Character[].class);
+        vec.add(Character.class);
+        vec.add(char[].class);
+        vec.add(char.class);
+        vec.add(boolean.class);
         return vec;
     }
 
-    protected Vector buildFromByteArrayVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(byte[].class);
-        vec.addElement(Byte[].class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromByteArrayVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(byte[].class);
+        vec.add(Byte[].class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromClobVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromClobVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromBlobVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Byte[].class);
-        vec.addElement(byte[].class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromBlobVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Byte[].class);
+        vec.add(byte[].class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromUtilDateVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(java.sql.Date.class);
-        vec.addElement(Time.class);
-        vec.addElement(long.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromUtilDateVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(java.sql.Date.class);
+        vec.add(Time.class);
+        vec.add(long.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromTimestampVec() {
+    protected List<Class<?>>buildFromTimestampVec() {
         return buildFromUtilDateVec();
     }
 
-    protected Vector buildFromCalendarVec() {
+    protected List<Class<?>> buildFromCalendarVec() {
         return buildFromUtilDateVec();
     }
 
-    protected Vector buildFromDateVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(java.sql.Date.class);
-        vec.addElement(long.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromDateVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(java.sql.Date.class);
+        vec.add(long.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromTimeVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(Time.class);
-        vec.addElement(long.class);
-        vec.addElement(Character[].class);
-        vec.addElement(char[].class);
+    protected List<Class<?>> buildFromTimeVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(Time.class);
+        vec.add(long.class);
+        vec.add(Character[].class);
+        vec.add(char[].class);
         return vec;
     }
 
-    protected Vector buildFromByteObjectArraryVec() {
-        Vector vec = new Vector();
-        vec.addElement(Blob.class);
-        vec.addElement(byte[].class);
+    protected List<Class<?>> buildFromByteObjectArraryVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(Blob.class);
+        vec.add(byte[].class);
         return vec;
     }
 
-    protected Vector buildFromCharArrayVec() {
-        Vector vec = new Vector();
-        vec.addElement(Clob.class);
+    protected List<Class<?>> buildFromCharArrayVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(Clob.class);
         return vec;
     }
 
-    protected Vector buildFromCharacterArrayVec() {
-        Vector vec = new Vector();
-        vec.addElement(Clob.class);
+    protected List<Class<?>> buildFromCharacterArrayVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(Clob.class);
         return vec;
     }
 
@@ -1623,159 +1632,159 @@
         dataTypesConvertedToAClass.put(Blob.class, buildToBlobVec());
     }
 
-    protected Vector buildAllTypesToAClassVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Integer.class);
-        vec.addElement(java.util.Date.class);
-        vec.addElement(java.sql.Date.class);
-        vec.addElement(Time.class);
-        vec.addElement(Timestamp.class);
-        vec.addElement(Calendar.class);
-        vec.addElement(Character.class);
-        vec.addElement(Double.class);
-        vec.addElement(Float.class);
-        vec.addElement(Long.class);
-        vec.addElement(Short.class);
-        vec.addElement(Byte.class);
-        vec.addElement(BigInteger.class);
-        vec.addElement(BigDecimal.class);
-        vec.addElement(Number.class);
-        vec.addElement(Boolean.class);
-        vec.addElement(Character[].class);
-        vec.addElement(Blob.class);
-        vec.addElement(Clob.class);
+    protected List<Class<?>> buildAllTypesToAClassVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Integer.class);
+        vec.add(java.util.Date.class);
+        vec.add(java.sql.Date.class);
+        vec.add(Time.class);
+        vec.add(Timestamp.class);
+        vec.add(Calendar.class);
+        vec.add(Character.class);
+        vec.add(Double.class);
+        vec.add(Float.class);
+        vec.add(Long.class);
+        vec.add(Short.class);
+        vec.add(Byte.class);
+        vec.add(BigInteger.class);
+        vec.add(BigDecimal.class);
+        vec.add(Number.class);
+        vec.add(Boolean.class);
+        vec.add(Character[].class);
+        vec.add(Blob.class);
+        vec.add(Clob.class);
         return vec;
     }
 
-    protected Vector buildToBigDecimalVec() {
-        Vector vec = buildNumberVec();
-        vec.addElement(String.class);
+    protected List<Class<?>> buildToBigDecimalVec() {
+        List<Class<?>> vec = buildNumberVec();
+        vec.add(String.class);
         return vec;
     }
 
-    protected Vector buildToBigIntegerVec() {
+    protected List<Class<?>> buildToBigIntegerVec() {
         return buildToBigDecimalVec();
     }
 
-    protected Vector buildToBooleanVec() {
-        Vector vec = buildToBigDecimalVec();
-        vec.addElement(Character.class);
-        vec.addElement(Boolean.class);
+    protected List<Class<?>> buildToBooleanVec() {
+        List<Class<?>> vec = buildToBigDecimalVec();
+        vec.add(Character.class);
+        vec.add(Boolean.class);
         return vec;
     }
 
-    protected Vector buildToByteVec() {
+    protected List<Class<?>> buildToByteVec() {
         return buildToBigDecimalVec();
     }
 
-    protected Vector buildToDoubleVec() {
+    protected List<Class<?>> buildToDoubleVec() {
         return buildToBigDecimalVec();
     }
 
-    protected Vector buildToFloatVec() {
+    protected List<Class<?>> buildToFloatVec() {
         return buildToBigDecimalVec();
     }
 
-    protected Vector buildToIntegerVec() {
-        Vector vec = buildToBigDecimalVec();
-        vec.addElement(Boolean.class);
+    protected List<Class<?>> buildToIntegerVec() {
+        List<Class<?>> vec = buildToBigDecimalVec();
+        vec.add(Boolean.class);
         return vec;
     }
 
-    protected Vector buildToLongVec() {
-        Vector vec = buildToIntegerVec();
-        vec.addElement(Calendar.class);
-        vec.addElement(java.util.Date.class);
+    protected List<Class<?>> buildToLongVec() {
+        List<Class<?>> vec = buildToIntegerVec();
+        vec.add(Calendar.class);
+        vec.add(java.util.Date.class);
         return vec;
     }
 
-    protected Vector buildToNumberVec() {
+    protected List<Class<?>> buildToNumberVec() {
         return buildToIntegerVec();
     }
 
-    protected Vector buildToShortVec() {
+    protected List<Class<?>> buildToShortVec() {
         return buildToIntegerVec();
     }
 
-    protected Vector buildToByteArrayVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(Blob.class);
-        vec.addElement(byte[].class);
-        vec.addElement(Byte[].class);
+    protected List<Class<?>> buildToByteArrayVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(Blob.class);
+        vec.add(byte[].class);
+        vec.add(Byte[].class);
         return vec;
     }
 
-    protected Vector buildToByteObjectArrayVec() {
-        Vector vec = buildToByteArrayVec();
-        vec.addElement(Byte[].class);
+    protected List<Class<?>> buildToByteObjectArrayVec() {
+        List<Class<?>> vec = buildToByteArrayVec();
+        vec.add(Byte[].class);
         return vec;
     }
 
-    protected Vector buildToCharacterVec() {
-        Vector vec = buildToBigDecimalVec();
-        vec.addElement(Character.class);
+    protected List<Class<?>> buildToCharacterVec() {
+        List<Class<?>> vec = buildToBigDecimalVec();
+        vec.add(Character.class);
         return vec;
     }
 
-    protected Vector buildToCharacterArrayVec() {
+    protected List<Class<?>> buildToCharacterArrayVec() {
         return buildAllTypesToAClassVec();
     }
 
-    protected Vector buildToCharArrayVec() {
+    protected List<Class<?>> buildToCharArrayVec() {
         return buildAllTypesToAClassVec();
     }
 
-    protected Vector buildToStringVec() {
+    protected List<Class<?>> buildToStringVec() {
         return buildAllTypesToAClassVec();
     }
 
-    protected Vector buildToCalendarVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(java.sql.Date.class);
-        vec.addElement(Time.class);
+    protected List<Class<?>> buildToCalendarVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(java.sql.Date.class);
+        vec.add(Time.class);
         return vec;
     }
 
-    protected Vector buildToTimestampVec() {
+    protected List<Class<?>> buildToTimestampVec() {
         return buildToCalendarVec();
     }
 
-    protected Vector buildToUtilDateVec() {
+    protected List<Class<?>> buildToUtilDateVec() {
         return buildToCalendarVec();
     }
 
-    protected Vector buildToDateVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(java.sql.Date.class);
+    protected List<Class<?>> buildToDateVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(java.sql.Date.class);
         return vec;
     }
 
-    protected Vector buildToTimeVec() {
-        Vector vec = buildDateTimeVec();
-        vec.addElement(String.class);
-        vec.addElement(Long.class);
-        vec.addElement(Time.class);
+    protected List<Class<?>> buildToTimeVec() {
+        List<Class<?>> vec = buildDateTimeVec();
+        vec.add(String.class);
+        vec.add(Long.class);
+        vec.add(Time.class);
         return vec;
     }
 
-    protected Vector buildToBlobVec() {
-        Vector vec = new Vector();
-        vec.addElement(Byte[].class);
-        vec.addElement(byte[].class);
+    protected List<Class<?>> buildToBlobVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(Byte[].class);
+        vec.add(byte[].class);
         return vec;
     }
 
-    protected Vector buildToClobVec() {
-        Vector vec = new Vector();
-        vec.addElement(String.class);
-        vec.addElement(char[].class);
-        vec.addElement(Character[].class);
+    protected List<Class<?>> buildToClobVec() {
+        List<Class<?>> vec = new CopyOnWriteArrayList<>();
+        vec.add(String.class);
+        vec.add(char[].class);
+        vec.add(Character[].class);
         return vec;
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
index 4ac9f17..dbf0b92 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseField.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -200,7 +200,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        type = AccessController.doPrivileged(new PrivilegedClassForName(typeName, true, classLoader));
+                        type = AccessController.doPrivileged(new PrivilegedClassForName<>(typeName, true, classLoader));
                     } catch (PrivilegedActionException e) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(typeName, e.getException());
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseType.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseType.java
index c8a998b..f91f59a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseType.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/DatabaseType.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -198,7 +198,7 @@
         public void buildOutputRow(PLSQLargument outArg, AbstractRecord outputRow,
                 DatabaseRecord newOutputRow, List<DatabaseField> outputRowFields, List outputRowValues) {
             DatabaseField field = null;
-            for (Iterator i = outputRowFields.iterator(); i.hasNext(); ) {
+            for (Iterator<DatabaseField> i = outputRowFields.iterator(); i.hasNext(); ) {
                 DatabaseField f = (DatabaseField)i.next();
                 if (f.getName().equals(outArg.name)) {
                     field = f;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
index a0c526b..1644ad9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/Helper.java
@@ -59,7 +59,6 @@
 
 import org.eclipse.persistence.config.SystemProperties;
 import org.eclipse.persistence.exceptions.ConversionException;
-import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.exceptions.ValidationException;
 import org.eclipse.persistence.internal.core.helper.CoreHelper;
 import org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor;
@@ -385,13 +384,13 @@
      * (through interface or implementation inheritance).
      * @return boolean
      */
-    public static boolean classImplementsInterface(Class aClass, Class anInterface) {
+    public static <T> boolean classImplementsInterface(Class<T> aClass, Class<?> anInterface) {
         // quick check
         if (aClass == anInterface) {
             return true;
         }
 
-        Class[] interfaces = aClass.getInterfaces();
+        Class<?>[] interfaces = aClass.getInterfaces();
 
         // loop through the "directly declared" interfaces
         for (int i = 0; i < interfaces.length; i++) {
@@ -408,7 +407,7 @@
         }
 
         // finally, recurse up through the superclasses to Object
-        Class superClass = aClass.getSuperclass();
+        Class<? super T> superClass = aClass.getSuperclass();
         if (superClass == null) {
             return false;
         }
@@ -530,7 +529,7 @@
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    convertedClass = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                    convertedClass = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                 }
@@ -688,8 +687,8 @@
      * check for BigDecimals as well.
      */
     public static boolean comparePotentialArrays(Object firstValue, Object secondValue) {
-        Class firstClass = firstValue.getClass();
-        Class secondClass = secondValue.getClass();
+        Class<? extends Object> firstClass = firstValue.getClass();
+        Class<? extends Object> secondClass = secondValue.getClass();
 
         // Arrays must be checked for equality because default does identity
         if ((firstClass == ClassConstants.APBYTE) && (secondClass == ClassConstants.APBYTE)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/IdentityWeakHashMap.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/IdentityWeakHashMap.java
index 0397b83..21bb5f4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/IdentityWeakHashMap.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/IdentityWeakHashMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -627,7 +627,7 @@
         }
 
         protected Object clone(ReferenceQueue refQueue) {
-            WeakEntry current = this;
+            WeakEntry<K, V> current = this;
             WeakEntry root = new WeakEntry(current.hash, current.key.get(), current.value.get(), null, refQueue);
             WeakEntry currentClone = root;
 
@@ -861,7 +861,7 @@
         s.writeInt(count);
         // Write out contents
         for (int i = entries.length - 1; i >= 0; i--) {
-            WeakEntry entry = entries[i];
+            WeakEntry<K, V> entry = entries[i];
             while (entry != null) {
                 s.writeObject(entry.key.get());
                 s.writeObject(entry.value.get());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/LOBValueWriter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/LOBValueWriter.java
index 9c43ce8..5988521 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/LOBValueWriter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/LOBValueWriter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -92,7 +92,7 @@
     * Fetch the locator(s) from the result set and write LOB value to the table
     */
     public void fetchLocatorAndWriteValue(DatabaseCall dbCall, Object resultSet) throws SQLException {
-        Enumeration enumFields = dbCall.getContexts().getFields().elements();
+        Enumeration<DatabaseField> enumFields = dbCall.getContexts().getFields().elements();
         Enumeration enumValues = dbCall.getContexts().getValues().elements();
         AbstractSession executionSession = dbCall.getQuery().getSession().getExecutionSession(dbCall.getQuery());
         while (enumFields.hasMoreElements()) {
@@ -109,7 +109,7 @@
     */
     private SQLSelectStatement buildSelectStatementForLocator(WriteObjectQuery writeQuery, DatabaseCall call, AbstractSession session) {
         SQLSelectStatement selectStatement = new SQLSelectStatement();
-        Vector tables = writeQuery.getDescriptor().getTables();
+        Vector<DatabaseTable> tables = writeQuery.getDescriptor().getTables();
         selectStatement.setTables(tables);
         //rather than get ALL fields from the descriptor, only use the LOB-related fields to build the minimal SELECT statement.
         selectStatement.setFields(call.getContexts().getFields());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/WriteLockManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/WriteLockManager.java
index 669b814..9941f68 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/WriteLockManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/helper/WriteLockManager.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 1998, 2020 IBM Corporation. All rights reserved.
+ * Copyright (c) 1998, 2021 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -278,8 +278,8 @@
         if (descriptor.shouldAcquireCascadedLocks()) {
             FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager();
             boolean isPartialObject = (fetchGroupManager != null) && fetchGroupManager.isPartialObject(objectForClone);
-            for (Iterator mappings = descriptor.getLockableMappings().iterator();
-                     mappings.hasNext();) {
+            for (Iterator<DatabaseMapping> mappings = descriptor.getLockableMappings().iterator();
+                 mappings.hasNext();) {
                 DatabaseMapping mapping = (DatabaseMapping)mappings.next();
                 // Only cascade fetched mappings.
                 if (!isPartialObject || (fetchGroupManager.isAttributeFetched(objectForClone, mapping.getAttributeName()))) {
@@ -594,8 +594,8 @@
         if (!MergeManager.LOCK_ON_MERGE) {//lockOnMerge is a backdoor and not public
             return;
         }
-        List acquiredLocks = mergeManager.getAcquiredLocks();
-        Iterator locks = acquiredLocks.iterator();
+        List<CacheKey> acquiredLocks = mergeManager.getAcquiredLocks();
+        Iterator<CacheKey> locks = acquiredLocks.iterator();
         RuntimeException exception = null;
         while (locks.hasNext()) {
             try {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/AbstractIdentityMap.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/AbstractIdentityMap.java
index 6c5ac35..d6bd8af 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/AbstractIdentityMap.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/AbstractIdentityMap.java
@@ -354,7 +354,7 @@
     /**
      * Returns the class which should be used as an identity map in a descriptor by default.
      */
-    public static Class getDefaultIdentityMapClass() {
+    public static Class<? extends IdentityMap> getDefaultIdentityMapClass() {
         return ClassConstants.SoftCacheWeakIdentityMap_Class;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheId.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheId.java
index 5d38ef5..4b9c271 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheId.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheId.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -167,9 +167,9 @@
                     return false;
                 }
                 if (this.hasArray) {
-                    Class valueClass = value.getClass();
+                    Class<?> valueClass = value.getClass();
                     if (valueClass.isArray()) {
-                        Class otherClass = otherValue.getClass();
+                        Class<?> otherClass = otherValue.getClass();
                         //gf bug 1193: fix array comparison logic to exit if they don't match, and continue the loop if they do
                         if (((valueClass == ClassConstants.APBYTE) && (otherClass == ClassConstants.APBYTE)) ) {
                             if (!Helper.compareByteArrays((byte[])value, (byte[])otherValue)){
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheIdComparator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheIdComparator.java
index d29a12f..51eb63b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheIdComparator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/CacheIdComparator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2019, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -45,9 +45,9 @@
                     return 1;
                 }
 
-                Class value1Class = value1.getClass();
+                Class<?> value1Class = value1.getClass();
                 if (value1Class.isArray()) {
-                    Class value2Class = value2.getClass();
+                    Class<?> value2Class = value2.getClass();
                     if (value1Class == ClassConstants.APBYTE && value2Class == ClassConstants.APBYTE) {
                         int result = compareByteArrays((byte[])value1, (byte[])value2);
                         if (result != 0) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/FullIdentityMap.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/FullIdentityMap.java
index d953b12..3df359c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/FullIdentityMap.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/FullIdentityMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -58,7 +58,7 @@
         FullIdentityMap clone = (FullIdentityMap)super.clone();
         clone.setCacheKeys(new ConcurrentHashMap(this.cacheKeys.size()));
 
-        for (Iterator cacheKeysIterator = this.cacheKeys.values().iterator(); cacheKeysIterator.hasNext();) {
+        for (Iterator<CacheKey> cacheKeysIterator = this.cacheKeys.values().iterator(); cacheKeysIterator.hasNext();) {
             CacheKey key = (CacheKey)((CacheKey)cacheKeysIterator.next()).clone();
             clone.getCacheKeys().put(key.getKey(), key);
         }
@@ -72,7 +72,7 @@
      */
     @Override
     public void collectLocks(HashMap threadList) {
-        Iterator cacheKeyIterator = this.cacheKeys.values().iterator();
+        Iterator<CacheKey> cacheKeyIterator = this.cacheKeys.values().iterator();
         while (cacheKeyIterator.hasNext()) {
             CacheKey cacheKey = (CacheKey)cacheKeyIterator.next();
             if (cacheKey.isAcquired()) {
@@ -140,7 +140,7 @@
     @Override
     public int getSize(Class myClass, boolean recurse) {
         int count = 0;
-        Iterator keys = this.cacheKeys.values().iterator();
+        Iterator<CacheKey> keys = this.cacheKeys.values().iterator();
 
         while (keys.hasNext()) {
             CacheKey key = (CacheKey)keys.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/IdentityMapManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/IdentityMapManager.java
index adcf2e3..97ee793 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/IdentityMapManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/IdentityMapManager.java
@@ -67,6 +67,7 @@
 import org.eclipse.persistence.queries.ReadQuery;
 import org.eclipse.persistence.sessions.Record;
 import org.eclipse.persistence.sessions.SessionProfiler;
+import org.eclipse.persistence.sessions.interceptors.CacheInterceptor;
 
 /**
  * <p><b>Purpose</b>: Maintain identity maps for domain classes mapped with EclipseLink.
@@ -375,7 +376,7 @@
      * INTERNAL:
      * Return a new empty identity map of the class type.
      */
-    protected IdentityMap buildNewIdentityMap(Class identityMapClass, int size, ClassDescriptor descriptor, boolean isIsolated) throws DescriptorException {
+    protected <T extends IdentityMap> IdentityMap buildNewIdentityMap(Class<T> identityMapClass, int size, ClassDescriptor descriptor, boolean isIsolated) throws DescriptorException {
         if ((descriptor == null) || (descriptor.getCachePolicy().getCacheInterceptorClass() == null)) {
             // PERF: Avoid reflection.
             if (identityMapClass == ClassConstants.SoftCacheWeakIdentityMap_Class) {
@@ -396,21 +397,21 @@
             Class[] parameters = new Class[]{ClassConstants.PINT, ClassDescriptor.class, AbstractSession.class, boolean.class};
             Object[] values = new Object[]{size, descriptor, this.session, isIsolated};
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(identityMapClass, parameters, false));
-                IdentityMap map = (IdentityMap)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, values));
+                Constructor<T> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(identityMapClass, parameters, false));
+                IdentityMap map = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(constructor, values));
                 if ((descriptor != null) && (descriptor.getCachePolicy().getCacheInterceptorClass() != null)) {
-                    constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(descriptor.getCacheInterceptorClass(), new Class[] { IdentityMap.class, AbstractSession.class }, false));
+                    Constructor<? extends CacheInterceptor> interceptor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(descriptor.getCacheInterceptorClass(), new Class[] { IdentityMap.class, AbstractSession.class }, false));
                     Object params[] = new Object[]{map, this.session};
-                    map = (IdentityMap)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, params));
+                    map = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(interceptor, params));
                 }
                 return map;
             } else {
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(identityMapClass, parameters, false);
-                IdentityMap map = (IdentityMap)PrivilegedAccessHelper.invokeConstructor(constructor, values);
+                Constructor<T> constructor = PrivilegedAccessHelper.<T>getConstructorFor(identityMapClass, parameters, false);
+                IdentityMap map = PrivilegedAccessHelper.<T>invokeConstructor(constructor, values);
                 if ((descriptor != null) && (descriptor.getCacheInterceptorClass() != null)) {
-                    constructor = PrivilegedAccessHelper.getConstructorFor(descriptor.getCacheInterceptorClass(), new Class[] { IdentityMap.class, AbstractSession.class }, false);
+                    Constructor<? extends CacheInterceptor> interceptor = PrivilegedAccessHelper.getConstructorFor(descriptor.getCacheInterceptorClass(), new Class[] { IdentityMap.class, AbstractSession.class }, false);
                     Object params[] = new Object[]{map, this.session};
-                    map = (IdentityMap)PrivilegedAccessHelper.invokeConstructor(constructor, params);
+                    map = PrivilegedAccessHelper.invokeConstructor(interceptor, params);
                 }
                 return map;
             }
@@ -437,7 +438,7 @@
         try {
             manager = (IdentityMapManager)super.clone();
             manager.setIdentityMaps(new ConcurrentHashMap());
-            for (Iterator iterator = this.identityMaps.entrySet().iterator(); iterator.hasNext();) {
+            for (Iterator<Map.Entry<Class, IdentityMap>> iterator = this.identityMaps.entrySet().iterator(); iterator.hasNext();) {
                 Map.Entry entry = (Map.Entry)iterator.next();
                 manager.identityMaps.put((Class)entry.getKey(), (IdentityMap)((IdentityMap)entry.getValue()).clone());
             }
@@ -546,7 +547,7 @@
 
             // Bug #522635 - if policy is set to trigger indirection, then iterate over a copy of the cache keys collection
             //               to avoid a ConcurrentModificationException
-            final Enumeration cacheEnum = valueHolderPolicy == InMemoryQueryIndirectionPolicy.SHOULD_TRIGGER_INDIRECTION ? map.cloneKeys() : map.keys();
+            final Enumeration<CacheKey> cacheEnum = valueHolderPolicy == InMemoryQueryIndirectionPolicy.SHOULD_TRIGGER_INDIRECTION ? map.cloneKeys() : map.keys();
 
             // bug 327900 - If don't read subclasses is set on the descriptor heed it.
             boolean readSubclassesOrNoInheritance = (!descriptor.hasInheritance() || descriptor.getInheritancePolicy().shouldReadSubclasses());
@@ -647,7 +648,7 @@
                 // cache the current time to avoid calculating it every time through the loop
                 long currentTimeInMillis = System.currentTimeMillis();
                 //Enumeration doesn't checkReadLocks
-                for (Enumeration cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
+                for (Enumeration<CacheKey> cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
                     CacheKey key = (CacheKey)cacheEnum.nextElement();
                     Object object = key.getObject();
                     if (object == null || cacheInvalidationPolicy.isInvalidated(key, currentTimeInMillis)) {
@@ -685,7 +686,7 @@
                 // selectionCriteria == null
                 if(isChildDescriptor) {
                     // Must check for inheritance.
-                    for (Enumeration cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
+                    for (Enumeration<CacheKey> cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
                         CacheKey key = (CacheKey)cacheEnum.nextElement();
                         Object object = key.getObject();
                         if (object == null) {
@@ -698,7 +699,7 @@
                     }
                 } else {
                     // if it's either a root class or there is no inheritance just invalidate the whole identity map
-                    for (Enumeration cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
+                    for (Enumeration<CacheKey> cacheEnum = map.keys(false); cacheEnum.hasMoreElements();) {
                         CacheKey key = (CacheKey)cacheEnum.nextElement();
                         key.setInvalidationState(CacheKey.CACHE_KEY_INVALID);
                     }
@@ -776,7 +777,7 @@
      * This method is used to get a list of those classes with IdentityMaps in the Session.
      */
     public Vector getClassesRegistered() {
-        Iterator classes = getIdentityMaps().keySet().iterator();
+        Iterator<Class> classes = getIdentityMaps().keySet().iterator();
         Vector results = new Vector(getIdentityMaps().size());
         while (classes.hasNext()) {
             results.add(((Class)classes.next()).getName());
@@ -861,7 +862,7 @@
 
             // Bug #321041 - if policy is set to trigger indirection, then iterate over a copy of the cache keys collection
             //               to avoid a ConcurrentModificationException
-            Enumeration cacheEnum = valueHolderPolicy == InMemoryQueryIndirectionPolicy.SHOULD_TRIGGER_INDIRECTION ? map.cloneKeys() : map.keys();
+            Enumeration<CacheKey> cacheEnum = valueHolderPolicy == InMemoryQueryIndirectionPolicy.SHOULD_TRIGGER_INDIRECTION ? map.cloneKeys() : map.keys();
 
             // cache the current time to avoid calculating it every time through the loop
             long currentTimeInMillis = System.currentTimeMillis();
@@ -1233,7 +1234,7 @@
             }
         }
 
-        for (Enumeration enumtr = map.keys(); enumtr.hasMoreElements();) {
+        for (Enumeration<CacheKey> enumtr = map.keys(); enumtr.hasMoreElements();) {
             org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey = (org.eclipse.persistence.internal.identitymaps.CacheKey)enumtr.nextElement();
             Object object = cacheKey.getObject();
             if (businessClass.isInstance(object)) {
@@ -1246,7 +1247,7 @@
                     if (descriptor.usesOptimisticLocking() && descriptor.usesVersionLocking()) {
                         // Obtain writeLockValue and convert the value to String
                         Object writeLockValue = descriptor.getOptimisticLockingPolicy().getWriteLockValue(object, key, session);
-                        String version = (String) session.getPlatform().convertObject(writeLockValue, String.class);
+                        String version = session.getPlatform().convertObject(writeLockValue, String.class);
                         writer.write(LoggingLocalization.buildMessage("key_version_identity_hash_code_object", new Object[] { cr, key, "\t", hashCode, object, version }));
                     } else {
                         writer.write(LoggingLocalization.buildMessage("key_identity_hash_code_object", new Object[] { cr, key, "\t", hashCode, object }));
@@ -1263,8 +1264,8 @@
      * The output of this method will be logged to this session's SessionLog at SEVERE level.
      */
     public void printIdentityMaps() {
-        for (Iterator iterator = this.session.getDescriptors().keySet().iterator();
-                 iterator.hasNext();) {
+        for (Iterator<Class<?>> iterator = this.session.getDescriptors().keySet().iterator();
+             iterator.hasNext();) {
             Class businessClass = (Class)iterator.next();
             ClassDescriptor descriptor = this.session.getDescriptor(businessClass);
             if (descriptor.hasInheritance()) {
@@ -1285,7 +1286,7 @@
         StringWriter writer = new StringWriter();
         HashMap threadCollection = new HashMap();
         writer.write(TraceLocalization.buildMessage("lock_writer_header", null) + Helper.cr());
-        Iterator idenityMapsIterator = this.session.getIdentityMapAccessorInstance().getIdentityMapManager().getIdentityMaps().values().iterator();
+        Iterator<IdentityMap> idenityMapsIterator = this.session.getIdentityMapAccessorInstance().getIdentityMapManager().getIdentityMaps().values().iterator();
         while (idenityMapsIterator.hasNext()) {
             IdentityMap idenityMap = (IdentityMap)idenityMapsIterator.next();
             idenityMap.collectLocks(threadCollection);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/WeakIdentityMap.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/WeakIdentityMap.java
index 7197e3d..8c26a70 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/WeakIdentityMap.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/identitymaps/WeakIdentityMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -51,7 +51,7 @@
      * the total time still constant.
      */
     protected void cleanupDeadCacheKeys() {
-        for (Iterator iterator = getCacheKeys().values().iterator(); iterator.hasNext();) {
+        for (Iterator<CacheKey> iterator = getCacheKeys().values().iterator(); iterator.hasNext();) {
             CacheKey key = (CacheKey)iterator.next();
             if (key.getObject() == null) {
                 // Check lock first.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
index c7e6fa9..760d106 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/CacheBasedValueHolder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -64,7 +64,7 @@
     public Object getValue(UnitOfWorkImpl uow) {
         if (this.references != null && this.references.length != 0){
             if (mapping.isCollectionMapping()){
-                Collection result = uow.getIdentityMapAccessorInstance().getAllFromIdentityMapWithEntityPK(this.references, this.mapping.getReferenceDescriptor()).values();
+                Collection<Object> result = uow.getIdentityMapAccessorInstance().getAllFromIdentityMapWithEntityPK(this.references, this.mapping.getReferenceDescriptor()).values();
                 if (result.size() == references.length){
                     ContainerPolicy cp = mapping.getContainerPolicy();
                     Object container = cp.containerInstance(result.size());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
index c70645f..9832c0a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ContainerIndirectionPolicy.java
@@ -175,7 +175,7 @@
     public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) {
         IndirectContainer container = (IndirectContainer)unitOfWorkIndirectionObject;
         if (container.getValueHolder() instanceof UnitOfWorkValueHolder) {
-            ValueHolderInterface valueHolder = ((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolder();
+            ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolder();
             if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
                 RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
                 valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolderRemoteID());
@@ -227,7 +227,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try{
-                    this.containerConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(getContainerClass(), new Class[] { ClassConstants.ValueHolderInterface_Class }, false));
+                    this.containerConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(getContainerClass(), new Class[] { ClassConstants.ValueHolderInterface_Class }, false));
                 }catch (PrivilegedActionException ex){
                     if (ex.getCause() instanceof NoSuchMethodException){
                         throw (NoSuchMethodException) ex.getCause();
@@ -245,7 +245,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try{
-                    this.containerConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(getContainerClass(), new Class[0], false));
+                    this.containerConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(getContainerClass(), new Class[0], false));
                 }catch (PrivilegedActionException ex){
                     if (ex.getCause() instanceof NoSuchMethodException){
                         throw (NoSuchMethodException) ex.getCause();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
index db6f148..52a345f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -82,10 +82,10 @@
                         result = "null";
                     } else {
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                            String toString = (String)AccessController.doPrivileged(new PrivilegedMethodInvoker(m, valueHolder.getValue(), args));
+                            String toString = AccessController.doPrivileged(new PrivilegedMethodInvoker<>(m, valueHolder.getValue(), args));
                             result = "{ " + toString + " }";
                         }else{
-                            String toString = (String)PrivilegedAccessHelper.invokeMethod(m, valueHolder.getValue(), args);
+                            String toString = PrivilegedAccessHelper.invokeMethod(m, valueHolder.getValue(), args);
                             result = "{ " + toString + " }";
                         }
                     }
@@ -102,7 +102,7 @@
                     throw ValidationException.nullUnderlyingValueHolderValue(m.getName());
                 } else {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                        result = AccessController.doPrivileged(new PrivilegedMethodInvoker(m, value, args));
+                        result = AccessController.doPrivileged(new PrivilegedMethodInvoker<>(m, value, args));
                     }else{
                         result = PrivilegedAccessHelper.invokeMethod(m, value, args);
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
index 0ff6a5e..19baa81 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/ProxyIndirectionPolicy.java
@@ -181,7 +181,7 @@
     public boolean objectIsInstantiated(Object object) {
         if (object instanceof Proxy) {
             ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
-            ValueHolderInterface valueHolder = handler.getValueHolder();
+            ValueHolderInterface<?> valueHolder = handler.getValueHolder();
             return valueHolder.isInstantiated();
         } else {
             return true;
@@ -196,7 +196,7 @@
     public boolean objectIsEasilyInstantiated(Object object) {
         if (object instanceof Proxy) {
             ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
-            ValueHolderInterface valueHolder = handler.getValueHolder();
+            ValueHolderInterface<?> valueHolder = handler.getValueHolder();
             if (valueHolder instanceof DatabaseValueHolder) {
                 return ((DatabaseValueHolder)valueHolder).isEasilyInstantiated();
             }
@@ -233,7 +233,7 @@
     public Object getRealAttributeValueFromObject(Object obj, Object object) {
         if (object instanceof Proxy) {
             ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(object);
-            ValueHolderInterface valueHolder = handler.getValueHolder();
+            ValueHolderInterface<?> valueHolder = handler.getValueHolder();
             return valueHolder.getValue();
         } else {
             return object;
@@ -267,7 +267,7 @@
     @Override
     public Object getOriginalIndirectionObject(Object unitOfWorkIndirectionObject, AbstractSession session) {
         if (unitOfWorkIndirectionObject instanceof UnitOfWorkValueHolder) {
-            ValueHolderInterface valueHolder = ((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolder();
+            ValueHolderInterface<?> valueHolder = ((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolder();
             if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
                 RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
                 valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID());
@@ -300,7 +300,7 @@
         }
 
         ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(referenceObject);
-        ValueHolderInterface valueHolder = handler.getValueHolder();
+        ValueHolderInterface<?> valueHolder = handler.getValueHolder();
 
         if (valueHolder.isInstantiated()) {
             return null;
@@ -325,7 +325,7 @@
 
         ValueHolderInterface newValueHolder;
         ProxyIndirectionHandler handler = (ProxyIndirectionHandler)Proxy.getInvocationHandler(attributeValue);
-        ValueHolderInterface oldValueHolder = handler.getValueHolder();
+        ValueHolderInterface<?> oldValueHolder = handler.getValueHolder();
 
         if (!buildDirectlyFromRow && cloningSession.isUnitOfWork() && ((UnitOfWorkImpl)cloningSession).isOriginalNewObject(original)) {
             // CR#3156435 Throw a meaningful exception if a serialized/dead value holder is detected.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
index 8276453..179aa2f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/indirection/TransparentIndirectionPolicy.java
@@ -359,7 +359,7 @@
         }
         IndirectContainer container = (IndirectContainer)unitOfWorkIndirectionObject;
         if (container.getValueHolder() instanceof WrappingValueHolder) {
-            ValueHolderInterface valueHolder = ((WrappingValueHolder)container.getValueHolder()).getWrappedValueHolder();
+            ValueHolderInterface<?> valueHolder = ((WrappingValueHolder)container.getValueHolder()).getWrappedValueHolder();
             if ((valueHolder == null) && session.isRemoteUnitOfWork()) {
                 RemoteSessionController controller = ((RemoteUnitOfWork)session).getParentSessionController();
                 valueHolder = controller.getRemoteValueHolders().get(((UnitOfWorkValueHolder)container.getValueHolder()).getWrappedValueHolderRemoteID());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/ExpressionBuilderVisitor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/ExpressionBuilderVisitor.java
index ca440b5..82adb6c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/ExpressionBuilderVisitor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/ExpressionBuilderVisitor.java
@@ -1449,7 +1449,7 @@
             text = text.substring(0, text.length() - 1);
         }
 
-        Number number = queryContext.newInstance(type[0], String.class, text);
+        Number number = queryContext.newInstance((Class<? extends Number>) type[0], String.class, text);
 
         // Now create the numeric expression
         queryExpression = new ConstantExpression(number, queryContext.getBaseExpression());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/JPQLQueryContext.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/JPQLQueryContext.java
index 50a9a64..15fc951 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/JPQLQueryContext.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/jpql/JPQLQueryContext.java
@@ -294,15 +294,14 @@
      * @param typeName The fully qualified type name
      * @return The Java type if it could be retrieved; <code>null</code> otherwise
      */
-    @SuppressWarnings("unchecked")
-    private Class<?> attemptLoadType(String typeName) {
+    private <T> Class<T> attemptLoadType(String typeName) {
 
         try {
 
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
                     return AccessController.doPrivileged(
-                        new PrivilegedClassForName(typeName, true, getClassLoader())
+                        new PrivilegedClassForName<>(typeName, true, getClassLoader())
                     );
                 }
                 catch (PrivilegedActionException exception) {
@@ -522,14 +521,12 @@
      * @return The {@link Constructor} or <code>null</code> if none exist or the privilege access
      * was denied
      */
-    @SuppressWarnings("unchecked")
-    <T> Constructor<T> getConstructor(Class<?> type, Class<?>[] parameterTypes) {
-
+    <T> Constructor<T> getConstructor(Class<T> type, Class<?>[] parameterTypes) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
                     return AccessController.doPrivileged(
-                        new PrivilegedGetConstructorFor(type, parameterTypes, true)
+                        new PrivilegedGetConstructorFor<>(type, parameterTypes, true)
                     );
                 }
                 catch (PrivilegedActionException exception) {
@@ -1004,8 +1001,7 @@
      * @param parameter The object to pass during instantiation
      * @return A new instance or <code>null</code> if a problem was encountered during instantiation
      */
-    @SuppressWarnings("unchecked")
-    <T> T newInstance(Class<?> type, Class<?> parameterType, Object parameter) {
+    <T> T newInstance(Class<T> type, Class<?> parameterType, Object parameter) {
         return newInstance(type, new Class[] { parameterType }, new Object[] { parameter });
     }
 
@@ -1018,7 +1014,7 @@
      * @return A new instance of the given type or <code>null</code> if a problem was encountered
      * during instantiation
      */
-    <T> T newInstance(Class<?> type, Class<?>[] parameterTypes, Object[] parameters) {
+    <T> T newInstance(Class<T> type, Class<?>[] parameterTypes, Object[] parameters) {
 
         Constructor<T> constructor = getConstructor(type, parameterTypes);
 
@@ -1036,15 +1032,14 @@
      * @param parameters The objects to pass during instantiation
      * @return A new instance or <code>null</code> if a problem was encountered during instantiation
      */
-    @SuppressWarnings("unchecked")
     <T> T newInstance(Constructor<T> constructor, Object[] parameters) {
 
         try {
 
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
-                    return (T) AccessController.doPrivileged(
-                        new PrivilegedInvokeConstructor(constructor, parameters)
+                    return AccessController.doPrivileged(
+                        new PrivilegedInvokeConstructor<>(constructor, parameters)
                     );
                 }
                 catch (PrivilegedActionException exception) {
@@ -1052,15 +1047,9 @@
                 }
             }
 
-            return (T) PrivilegedAccessHelper.invokeConstructor(constructor, parameters);
+            return PrivilegedAccessHelper.invokeConstructor(constructor, parameters);
         }
-        catch (InstantiationException e) {
-            return null;
-        }
-        catch (InvocationTargetException e) {
-            return null;
-        }
-        catch (IllegalAccessException e) {
+        catch (ReflectiveOperationException e) {
             return null;
         }
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/ExistsNode.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/ExistsNode.java
index d200875..ebf1dd9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/ExistsNode.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/ExistsNode.java
@@ -73,8 +73,8 @@
         // select clause expressions as non fetch join attributes to the
         // ReportQuery representing the subquery. This make sure the FK joins
         // get generated.
-        List items = reportQuery.getItems();
-        for (Iterator i = items.iterator(); i.hasNext();) {
+        List<ReportItem> items = reportQuery.getItems();
+        for (Iterator<ReportItem> i = items.iterator(); i.hasNext();) {
             ReportItem item = (ReportItem)i.next();
             Expression expr = item.getAttributeExpression();
             reportQuery.addNonFetchJoinedAttribute(expr);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/TypeHelperImpl.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/TypeHelperImpl.java
index 357419e..b0fe3ec 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/TypeHelperImpl.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/jpa/parsing/TypeHelperImpl.java
@@ -60,7 +60,7 @@
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
                     return AccessController.doPrivileged(
-                        new PrivilegedClassForName(typeName, true, classLoader));
+                        new PrivilegedClassForName<>(typeName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     return null;
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/Constants.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/Constants.java
index cc616fc..bd2841e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/Constants.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/Constants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2012, 2018 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -22,6 +22,7 @@
 import javax.xml.namespace.QName;
 
 import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
+import org.xml.sax.Locator;
 
 public class Constants {
 
@@ -40,10 +41,10 @@
     public static final String JAXB_FRAGMENT = "jaxb.fragment";
     public static final String JAXB_MARSHALLER = "jaxb.marshaller";
     public static final String LEXICAL_HANDLER_PROPERTY = "http://xml.org/sax/properties/lexical-handler";
-    public static final Class LOCATOR_CLASS = org.xml.sax.Locator.class;
+    public static final Class<Locator> LOCATOR_CLASS = org.xml.sax.Locator.class;
     public static final String LOCATOR_CLASS_NAME = "org.xml.sax.Locator";
     public static final String NO_NS_SCHEMA_LOCATION = "noNamespaceSchemaLocation";
-    public static final Class QNAME_CLASS = QName.class;
+    public static final Class<QName> QNAME_CLASS = QName.class;
     public static final String REF_PREFIX = "ref";
     public static final String REF_URL = "http://ws-i.org/profiles/basic/1.1/xsd";
     public static final String SCHEMA_LOCATION = "schemaLocation";
@@ -54,8 +55,8 @@
     public static final String SWAREF_XSD = "http://ws-i.org/profiles/basic/1.1/swaref.xsd";
     public static final String TEXT = "text()";
     public static final String UNKNOWN_OR_TRANSIENT_CLASS = "UNKNOWN_OR_TRANSIENT_CLASS";
-    public static final Class URI = java.net.URI.class;
-    public static final Class UUID = java.util.UUID.class;
+    public static final Class<java.net.URI> URI = java.net.URI.class;
+    public static final Class<java.util.UUID> UUID = java.util.UUID.class;
     public static final String VALUE_WRAPPER = "value";
     public static final String XML_MIME_URL = "http://www.w3.org/2005/05/xmlmime";
     public static final String XML_NAMESPACE_SCHEMA_LOCATION = "http://www.w3.org/XML/2001/xml.xsd";
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/ConversionManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/ConversionManager.java
index 4e95e99..0cded7d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/ConversionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/ConversionManager.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -42,7 +42,7 @@
      * @param schemaTypeQName - the XML schema that the object is being converted from
      * @return - the newly converted object
      */
-    Object convertObject(Object sourceObject, Class javaClass, QName schemaTypeQName);
+    <T> T convertObject(Object sourceObject, Class<T> javaClass, QName schemaTypeQName);
 
     /**
      * @since EclipseLink 2.6.0
@@ -61,7 +61,7 @@
      * @param schemaType The type you want to find a corresponding Java class for.
      * @return the Java class for the XML schema type.
      */
-    Class<?> javaType(QName schemaType);
+    <T> Class<T> javaType(QName schemaType);
 
     /**
      * Replaces any CR, Tab or LF characters in the string with a single ' ' character.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolver.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolver.java
index a5cec5d..a4648d6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolver.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolver.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -59,7 +59,7 @@
  */
 public class NamespaceResolver implements XMLNamespaceResolver {
     private static final String BASE_PREFIX = "ns";
-    private static final Vector EMPTY_VECTOR = VectorUtils.emptyVector();
+    private static final Vector<Namespace> EMPTY_VECTOR = VectorUtils.emptyVector();
 
     private String defaultNamespaceURI;
     private NamespaceResolverStorage prefixesToNamespaces;
@@ -275,7 +275,7 @@
      * Used for deployment XML
      * @param names A Vector of namespace URIs
      */
-    public void setNamespaces(Vector names) {
+    public void setNamespaces(Vector<Namespace> names) {
         prefixesToNamespaces = new NamespaceResolverStorage(names.size());
         prefixesToNamespaces.setNamespaces(names);
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolverStorage.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolverStorage.java
index 3321005..4be31b2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolverStorage.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/NamespaceResolverStorage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -25,7 +25,7 @@
 
 public class NamespaceResolverStorage extends LinkedHashMap<String, String> {
     private static final long serialVersionUID = -4697397620139076774L;
-    private transient Vector namespaces = emptyVector();
+    private transient Vector<Namespace> namespaces = emptyVector();
     private transient boolean modified = false;
 
     public NamespaceResolverStorage() {
@@ -94,7 +94,7 @@
         return response;
     }
 
-    public Vector getNamespaces() {
+    public Vector<Namespace> getNamespaces() {
         if (isModified()) {
             namespaces = buildNamespacesUnmodifiable();
             setModified(false);
@@ -102,7 +102,7 @@
         return namespaces;
     }
 
-    public void setNamespaces(Vector namespaces) {
+    public void setNamespaces(Vector<Namespace> namespaces) {
         super.clear();
         for (Namespace namespace : (Vector<Namespace>) namespaces) {
             if ((namespace.getPrefix() != null) && (namespace.getNamespaceURI() != null)) {
@@ -120,8 +120,8 @@
         this.modified = modified;
     }
 
-    private Vector buildNamespacesUnmodifiable() {
-        Vector names = new Vector(size());
+    private Vector<Namespace> buildNamespacesUnmodifiable() {
+        Vector<Namespace> names = new Vector<>(size());
         for (Map.Entry<String, String> entry : entrySet()) {
             Namespace namespace = new Namespace(entry.getKey(), entry.getValue());
             names.addElement(namespace);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/TreeObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/TreeObjectBuilder.java
index 180bfb0..9fc08f6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/TreeObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/TreeObjectBuilder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -31,6 +31,8 @@
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.mappings.DatabaseMapping;
 import org.eclipse.persistence.mappings.DatabaseMapping.WriteType;
+import org.eclipse.persistence.oxm.NamespaceResolver;
+import org.eclipse.persistence.oxm.XMLDescriptor;
 import org.eclipse.persistence.oxm.XMLField;
 import org.eclipse.persistence.oxm.record.NodeRecord;
 import org.eclipse.persistence.oxm.record.UnmarshalRecord;
@@ -100,14 +102,14 @@
     @Override
     public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) {
         super.initialize(session);
-        Descriptor xmlDescriptor = (Descriptor)getDescriptor();
+        XMLDescriptor xmlDescriptor = (XMLDescriptor)getDescriptor();
 
         // INHERITANCE
         if (xmlDescriptor.hasInheritance()) {
-            CoreInheritancePolicy inheritancePolicy = xmlDescriptor.getInheritancePolicy();
+            CoreInheritancePolicy<AbstractRecord, AbstractSession, ClassDescriptor, DatabaseField> inheritancePolicy = xmlDescriptor.getInheritancePolicy();
 
             if (!inheritancePolicy.hasClassExtractor()) {
-                Field classIndicatorField = new XMLField(inheritancePolicy.getClassIndicatorFieldName());
+                Field<XMLConversionManager, NamespaceResolver> classIndicatorField = new XMLField(inheritancePolicy.getClassIndicatorFieldName());
                 classIndicatorField.setNamespaceResolver(xmlDescriptor.getNamespaceResolver());
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataCollectionMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataCollectionMappingNodeValue.java
index 2124d7f..5b931b8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataCollectionMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataCollectionMappingNodeValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -64,7 +64,7 @@
     }
 
     protected String getValueToWrite(QName schemaType, Object value, CoreAbstractSession session) {
-        return (String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
+        return ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
     }
 
     @Override
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataHelper.java
index 3cbd488..ecfa002 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataHelper.java
@@ -191,7 +191,7 @@
         }
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         try {
-            Iterator itr = ImageIO.getImageWritersByMIMEType(mimeType);
+            Iterator<ImageWriter> itr = ImageIO.getImageWritersByMIMEType(mimeType);
             if (itr.hasNext()) {
                 ImageWriter w = (ImageWriter) itr.next();
                 w.setOutput(ImageIO.createImageOutputStream(outputStream));
@@ -311,7 +311,7 @@
         ByteArrayOutputStream output = new ByteArrayOutputStream();
         try {
             source.writeTo(output);
-            return (String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(output.toByteArray(), String.class, schemaTypeQName);
+            return ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(output.toByteArray(), String.class, schemaTypeQName);
         } catch (Exception ex) {
             throw ConversionException.couldNotBeConverted(source, CoreClassConstants.STRING, ex);
         }
@@ -325,7 +325,7 @@
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         try {
             String mimeType = "image/png";
-            Iterator itr = ImageIO.getImageWritersByMIMEType(mimeType);
+            Iterator<ImageWriter> itr = ImageIO.getImageWritersByMIMEType(mimeType);
             if (itr.hasNext()) {
                 ImageWriter w = (ImageWriter) itr.next();
                 w.setOutput(ImageIO.createImageOutputStream(outputStream));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataMappingNodeValue.java
index 28caab5..a40263d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLBinaryDataMappingNodeValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -44,7 +44,7 @@
     private BinaryDataMapping xmlBinaryDataMapping;
 
     protected String getValueToWrite(QName schemaType, Object value, CoreAbstractSession session) {
-        return (String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
+        return ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
     }
 
     @Override
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLChoiceCollectionMappingMarshalNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLChoiceCollectionMappingMarshalNodeValue.java
index c884e90..8c0a46f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLChoiceCollectionMappingMarshalNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLChoiceCollectionMappingMarshalNodeValue.java
@@ -112,7 +112,7 @@
 
         }
 
-        Collection classes = this.classToNodeValues.keySet();
+        Collection<Class> classes = this.classToNodeValues.keySet();
         for(Class nextClass:((Map<Class, Mapping>)this.xmlChoiceCollectionMapping.getChoiceElementMappingsByClass()).keySet()) {
             //Create node values for any classes that aren't already processed
             if(!(classes.contains(nextClass))) {
@@ -328,7 +328,7 @@
                 if(xmlChoiceCollectionMapping.isAny()) {
                     return this.anyNodeValue;
                 }
-                Class theClass = fieldValue.getClass();
+                Class<? extends Object> theClass = fieldValue.getClass();
                 while(associatedField == null) {
                     associatedField = (Field) xmlChoiceCollectionMapping.getClassToFieldMappings().get(theClass);
                     if(theClass.getSuperclass() != null) {
@@ -342,7 +342,7 @@
                 nodeValue = this.fieldToNodeValues.get(associatedField);
             }
         } else {
-            Class theClass = value.getClass();
+            Class<? extends Object> theClass = value.getClass();
             while(associatedField == null) {
                 associatedField = (Field) xmlChoiceCollectionMapping.getClassToFieldMappings().get(theClass);
                 List<FieldNodeValue> fieldNodes = classToNodeValues.get(theClass);
@@ -374,7 +374,7 @@
         if(associatedField == null) {
             //check the field associations
             List<Field> sourceFields = null;
-            Class theClass = value.getClass();
+            Class<? extends Object> theClass = value.getClass();
             while(theClass != null) {
                 sourceFields = (List<Field>) xmlChoiceCollectionMapping.getClassToSourceFieldsMappings().get(theClass);
                 if(sourceFields != null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeCollectionMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeCollectionMappingNodeValue.java
index 0564821..ab82092 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeCollectionMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeCollectionMappingNodeValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -153,7 +153,7 @@
                 UnmarshalKeepAsElementPolicy policy = xmlCompositeCollectionMapping.getKeepAsElementPolicy();
                 if (policy != null && ((xmlDescriptor == null && policy.isKeepUnknownAsElement()) || policy.isKeepAllAsElement())) {
                     if (unmarshalRecord.getTypeQName() != null) {
-                        Class theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
+                        Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
                         if (theClass == null) {
                             setupHandlerForKeepAsElementPolicy(unmarshalRecord, xPathFragment, atts);
                             return true;
@@ -218,7 +218,7 @@
 
                if (null != keepAsElementPolicy && (keepAsElementPolicy.isKeepUnknownAsElement() || keepAsElementPolicy.isKeepAllAsElement()) && builder.getNodes().size() > 1) {
                    if(unmarshalRecord.getTypeQName() != null){
-                       Class theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
+                       Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
                        if(theClass != null){
                            //handle simple text
                            endElementProcessText(unmarshalRecord, xmlCompositeCollectionMapping, xPathFragment, collection);
@@ -303,7 +303,7 @@
         if(descriptor == null){
             descriptor = (Descriptor) session.getDescriptor(value.getClass());
         }else if(descriptor.hasInheritance()){
-            Class objectValueClass = value.getClass();
+            Class<? extends Object> objectValueClass = value.getClass();
             if(!(objectValueClass == descriptor.getJavaClass())){
                 descriptor = (Descriptor) session.getDescriptor(objectValueClass);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeObjectMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeObjectMappingNodeValue.java
index aad7708..6fad5f2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeObjectMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLCompositeObjectMappingNodeValue.java
@@ -47,7 +47,6 @@
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -216,7 +215,7 @@
         if(descriptor == null){
             descriptor = (Descriptor) session.getDescriptor(objectValue.getClass());
         }else if(descriptor.hasInheritance()){
-            Class objectValueClass = objectValue.getClass();
+            Class<? extends Object> objectValueClass = objectValue.getClass();
             if(!(objectValueClass == descriptor.getJavaClass())){
                 descriptor = (Descriptor) session.getDescriptor(objectValueClass);
             }
@@ -331,7 +330,7 @@
                         unmarshalRecord.setTypeQName(schemaType);
                     }
                     if(schemaType != null){
-                        Class theClass = unmarshalRecord.getConversionManager().javaType(schemaType);
+                        Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(schemaType);
                         if(theClass == null){
                             setupHandlerForKeepAsElementPolicy(unmarshalRecord, xPathFragment, atts);
                             return true;
@@ -403,7 +402,7 @@
             if (null != keepAsElementPolicy && (keepAsElementPolicy.isKeepUnknownAsElement() || keepAsElementPolicy.isKeepAllAsElement()) && builder.getNodes().size() != 0) {
 
                 if(unmarshalRecord.getTypeQName() != null){
-                    Class theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
+                    Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
                     if(theClass != null){
                         //handle simple text
                         endElementProcessText(unmarshalRecord, xmlCompositeObjectMapping, xPathFragment, null);
@@ -467,7 +466,7 @@
             SAXFragmentBuilder builder = unmarshalRecord.getFragmentBuilder();
             if ((((keepAsElementPolicy.isKeepUnknownAsElement()) || (keepAsElementPolicy.isKeepAllAsElement())))&& (builder.getNodes().size() != 0) ) {
                 if(unmarshalRecord.getTypeQName() != null){
-                    Class theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
+                    Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(unmarshalRecord.getTypeQName());
                     if(theClass != null){
                         //handle simple text
                         endElementProcessText(unmarshalRecord, xmlCompositeObjectMapping, null, null);
@@ -497,7 +496,7 @@
                         }
                         QName qName = new QName(namespace, xsiType.substring(colonIndex + 1));
                         ConversionManager conversionManager = unmarshalRecord.getConversionManager();
-                        Class theClass = conversionManager.javaType(qName);
+                        Class<Object> theClass = conversionManager.javaType(qName);
                         if (theClass != null) {
                             value = conversionManager.convertObject(element.getTextContent(), theClass, qName);
                         }
@@ -506,7 +505,7 @@
                             QName qName = new QName(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI, xsiType);
 
                             ConversionManager conversionManager = unmarshalRecord.getConversionManager();
-                            Class theClass = conversionManager.javaType(qName);
+                            Class<Object> theClass = conversionManager.javaType(qName);
                             if (theClass != null) {
                                 value = conversionManager.convertObject(element.getTextContent(), theClass, qName);
                             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLConversionManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
index e48c7c9..3bde576 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLConversionManager.java
@@ -27,6 +27,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.TimeZone;
 import java.util.UUID;
@@ -64,8 +65,8 @@
     protected static XMLConversionManager defaultXMLManager;
 
     // Static hash tables for the default conversion pairs
-    protected static HashMap defaultXMLTypes;
-    protected static HashMap defaultJavaTypes;
+    protected static Map<QName, Class<?>> defaultXMLTypes;
+    protected static Map<Class<?>, QName> defaultJavaTypes;
 
     protected boolean timeZoneQualified;
     protected TimeZone timeZone;
@@ -153,49 +154,50 @@
      * @return - the newly converted object
      */
     @Override
-    public Object convertObject(Object sourceObject, Class javaClass) throws ConversionException {
+    @SuppressWarnings({"unchecked"})
+    public <T> T convertObject(Object sourceObject, Class<T> javaClass) throws ConversionException {
         if (sourceObject == null) {//Let the parent handle default null values
             return super.convertObject(null, javaClass);
         } else if (javaClass == null || javaClass == CoreClassConstants.OBJECT || sourceObject.getClass() == javaClass) {
-            return sourceObject;
+            return (T) sourceObject;
         } else if (javaClass == CoreClassConstants.STRING) {
            if(sourceObject instanceof List){
-               return convertListToString(sourceObject, null);
+               return (T) convertListToString(sourceObject, null);
            } else if (sourceObject instanceof Character[]) {
-               return convertObjectToString(sourceObject);
+               return (T) convertObjectToString(sourceObject);
            } else if (sourceObject instanceof Object[]) {
-               return convertArrayToString((Object[]) sourceObject, null);
+               return (T) convertArrayToString((Object[]) sourceObject, null);
            } else {
-               return convertObjectToString(sourceObject);
+               return (T) convertObjectToString(sourceObject);
            }
         } else if (javaClass == CoreClassConstants.ASTRING && sourceObject instanceof String) {
-                return convertStringToList(sourceObject).toArray(new String[] {});
+                return (T) convertStringToList(sourceObject).toArray(new String[] {});
         // TODO else if (javaClass == CoreClassConstants.ArrayList_class) {
         //        return convertStringToList((Object[]) sourceObject, null);
         } else if ((javaClass == Constants.QNAME_CLASS) && (sourceObject != null)) {
-            return convertObjectToQName(sourceObject);
+            return (T) convertObjectToQName(sourceObject);
         } else if ((javaClass == CoreClassConstants.List_Class) && (sourceObject instanceof String)) {
-            return convertStringToList(sourceObject);
+            return (T) convertStringToList(sourceObject);
         } else if ((javaClass == CoreClassConstants.CALENDAR)) {
-            return convertObjectToCalendar(sourceObject);
+            return (T) convertObjectToCalendar(sourceObject);
         } else if ((javaClass == CoreClassConstants.UTILDATE)) {
-            return convertObjectToUtilDate(sourceObject, Constants.DATE_TIME_QNAME);
+            return (T) convertObjectToUtilDate(sourceObject, Constants.DATE_TIME_QNAME);
         } else if ((javaClass == CoreClassConstants.SQLDATE)) {
-            return convertObjectToSQLDate(sourceObject, Constants.DATE_QNAME);
+            return (T) convertObjectToSQLDate(sourceObject, Constants.DATE_QNAME);
         } else if ((javaClass == CoreClassConstants.TIME)) {
-            return convertObjectToSQLTime(sourceObject, Constants.TIME_QNAME);
+            return (T) convertObjectToSQLTime(sourceObject, Constants.TIME_QNAME);
         } else if ((javaClass == CoreClassConstants.TIMESTAMP)) {
-            return convertObjectToTimestamp(sourceObject, Constants.DATE_TIME_QNAME);
+            return (T) convertObjectToTimestamp(sourceObject, Constants.DATE_TIME_QNAME);
         } else if ((javaClass == java.net.URI.class)) {
-            return convertObjectToURI(sourceObject);
+            return (T) convertObjectToURI(sourceObject);
         } else if ((javaClass == CoreClassConstants.XML_GREGORIAN_CALENDAR)) {
-            return convertObjectToXMLGregorianCalendar(sourceObject);
+            return (T) convertObjectToXMLGregorianCalendar(sourceObject);
         } else if ((javaClass == CoreClassConstants.DURATION)) {
-            return convertObjectToDuration(sourceObject);
+            return (T) convertObjectToDuration(sourceObject);
         } else if ((javaClass == CoreClassConstants.FILE) && (sourceObject instanceof String)) {
-            return convertStringToFile((String) sourceObject);
+            return (T) convertStringToFile((String) sourceObject);
         } else if ((javaClass == Constants.UUID) && (sourceObject instanceof String)) {
-            return UUID.fromString((String) sourceObject);
+            return (T) UUID.fromString((String) sourceObject);
         } else {
             try {
                 return super.convertObject(sourceObject, javaClass);
@@ -218,7 +220,8 @@
      * @return - the newly converted object
      */
     @Override
-    public Object convertObject(Object sourceObject, Class javaClass, QName schemaTypeQName) throws ConversionException {
+    @SuppressWarnings({"unchecked"})
+    public <T> T convertObject(Object sourceObject, Class<T> javaClass, QName schemaTypeQName) throws ConversionException {
         if (schemaTypeQName == null) {
             return convertObject(sourceObject, javaClass);
         }
@@ -226,57 +229,57 @@
         if (sourceObject == null) {
             return super.convertObject(null, javaClass);
         } else if ((sourceObject.getClass() == javaClass) || (javaClass == null) || (javaClass == CoreClassConstants.OBJECT)) {
-            return sourceObject;
+            return (T) sourceObject;
         } else if ((javaClass == CoreClassConstants.CALENDAR) || (javaClass == CoreClassConstants.GREGORIAN_CALENDAR)) {
-            return convertObjectToCalendar(sourceObject, schemaTypeQName);
+            return (T) convertObjectToCalendar(sourceObject, schemaTypeQName);
         } else if (javaClass == CoreClassConstants.ABYTE) {
             if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.HEX_BINARY)) {
-                return super.convertObjectToByteObjectArray(sourceObject);
+                return (T) super.convertObjectToByteObjectArray(sourceObject);
             } else if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.BASE_64_BINARY)) {
-                return convertSchemaBase64ToByteObjectArray(sourceObject);
+                return (T) convertSchemaBase64ToByteObjectArray(sourceObject);
             }
         } else if (javaClass == CoreClassConstants.APBYTE) {
             if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.HEX_BINARY)) {
-                return super.convertObjectToByteArray(sourceObject);
+                return (T) super.convertObjectToByteArray(sourceObject);
             } else if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.BASE_64_BINARY)) {
-                return convertSchemaBase64ToByteArray(sourceObject);
+                return (T) convertSchemaBase64ToByteArray(sourceObject);
             }
         } else if ((javaClass == CoreClassConstants.List_Class) && (sourceObject instanceof String)) {
-            return convertStringToList(sourceObject);
+            return (T) convertStringToList(sourceObject);
         } else if ((javaClass == CoreClassConstants.STRING) && (sourceObject instanceof List)) {
-            return convertListToString(sourceObject, schemaTypeQName);
+            return (T) convertListToString(sourceObject, schemaTypeQName);
         } else if (sourceObject instanceof byte[]) {
             if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.BASE_64_BINARY)) {
-                return buildBase64StringFromBytes((byte[]) sourceObject);
+                return (T) buildBase64StringFromBytes((byte[]) sourceObject);
             }
-            return Helper.buildHexStringFromBytes((byte[]) sourceObject);
+            return (T) Helper.buildHexStringFromBytes((byte[]) sourceObject);
         } else if (sourceObject instanceof Byte[]) {
             if (schemaTypeQName.getLocalPart().equalsIgnoreCase(Constants.BASE_64_BINARY)) {
-                return buildBase64StringFromObjectBytes((Byte[]) sourceObject);
+                return (T) buildBase64StringFromObjectBytes((Byte[]) sourceObject);
             }
-            return buildHexStringFromObjectBytes((Byte[]) sourceObject);
+            return (T) buildHexStringFromObjectBytes((Byte[]) sourceObject);
         } else if ((javaClass == CoreClassConstants.STRING) && (sourceObject instanceof Object[])) {
-            return convertArrayToString((Object[]) sourceObject, schemaTypeQName);
+            return (T) convertArrayToString((Object[]) sourceObject, schemaTypeQName);
         } else if ((javaClass == CoreClassConstants.UTILDATE)) {
-            return convertObjectToUtilDate(sourceObject, schemaTypeQName);
+            return (T) convertObjectToUtilDate(sourceObject, schemaTypeQName);
         } else if (javaClass == CoreClassConstants.SQLDATE) {
-            return convertObjectToSQLDate(sourceObject, schemaTypeQName);
+            return (T) convertObjectToSQLDate(sourceObject, schemaTypeQName);
         } else if (javaClass == CoreClassConstants.TIME) {
-            return convertObjectToSQLTime(sourceObject, schemaTypeQName);
+            return (T) convertObjectToSQLTime(sourceObject, schemaTypeQName);
         } else if (javaClass ==  CoreClassConstants.TIMESTAMP) {
-            return convertObjectToTimestamp(sourceObject, schemaTypeQName);
+            return (T) convertObjectToTimestamp(sourceObject, schemaTypeQName);
         } else if (javaClass == Constants.QNAME_CLASS) {
-            return convertObjectToQName(sourceObject);
+            return (T) convertObjectToQName(sourceObject);
         } else if (javaClass == CoreClassConstants.STRING) {
-            return convertObjectToString(sourceObject, schemaTypeQName);
+            return (T) convertObjectToString(sourceObject, schemaTypeQName);
         } else if ((javaClass == java.net.URI.class)) {
-            return convertObjectToURI(sourceObject);
+            return (T) convertObjectToURI(sourceObject);
         } else if ((javaClass == CoreClassConstants.XML_GREGORIAN_CALENDAR)) {
-            return convertObjectToXMLGregorianCalendar(sourceObject, schemaTypeQName);
+            return (T) convertObjectToXMLGregorianCalendar(sourceObject, schemaTypeQName);
         } else if ((javaClass == CoreClassConstants.DURATION)) {
-            return convertObjectToDuration(sourceObject);
+            return (T) convertObjectToDuration(sourceObject);
         } else if ((javaClass == CoreClassConstants.CHAR)) {
-            return convertObjectToChar(sourceObject, schemaTypeQName);
+            return (T) convertObjectToChar(sourceObject, schemaTypeQName);
         } else {
             try {
                 return super.convertObject(sourceObject, javaClass);
@@ -632,7 +635,7 @@
       if(sourceObject instanceof String) {
           String sourceString = (String) sourceObject;
           if(sourceString.length() == 0) {
-              return 0l;
+              return 0L;
           } else if(sourceString.charAt(0) == PLUS) {
               return super.convertObjectToLong(sourceString.substring(1));
           }
@@ -1185,9 +1188,8 @@
             return null;
         }
         Calendar cal = toCalendar(xmlGregorianCalender);
-        Date returnDate = cal.getTime();
 
-        return returnDate;
+        return cal.getTime();
     }
 
     private Calendar toCalendar(XMLGregorianCalendar xgc) {
@@ -1649,8 +1651,8 @@
         return Helper.buildHexStringFromBytes(primitiveBytes);
     }
 
-    protected List convertStringToList(Object sourceObject) throws ConversionException {
-        ArrayList list = new ArrayList();
+    protected List<String> convertStringToList(Object sourceObject) throws ConversionException {
+        List<String> list = new ArrayList<>();
         if (sourceObject instanceof String) {
             StringTokenizer tokenizer = new StringTokenizer((String) sourceObject, " ");
             while (tokenizer.hasMoreElements()) {
@@ -1676,8 +1678,8 @@
      * @param elementType - the type of the elements contained in the list
      * @return - the newly converted object
      */
-    public Object convertStringToList(Object sourceObject, Class elementType, ContainerPolicy containerPolicy, QName schemaType) throws ConversionException {
-        Collection collection = (Collection) containerPolicy.containerInstance();
+    public <T> Collection<T> convertStringToList(Object sourceObject, Class<T> elementType, ContainerPolicy containerPolicy, QName schemaType) throws ConversionException {
+        Collection<T> collection = (Collection<T>) containerPolicy.containerInstance();
 
         if (sourceObject instanceof String) {
             StringTokenizer tokenizer = new StringTokenizer((String) sourceObject, " ");
@@ -1693,13 +1695,14 @@
     public String convertListToString(Object sourceObject, QName schemaType) throws ConversionException {
         StringBuilder returnStringBuilder = new StringBuilder();
         if (sourceObject instanceof List) {
-            List list = (List) sourceObject;
+            @SuppressWarnings({"unchecked"})
+            List<?> list = (List<?>) sourceObject;
             for (int i = 0, listSize = list.size(); i < listSize; i++) {
                 Object next = list.get(i);
-                    if (i > 0) {
-                        returnStringBuilder.append(' ');
-                    }
-                    returnStringBuilder.append((String)convertObject(next, String.class, schemaType));
+                if (i > 0) {
+                    returnStringBuilder.append(' ');
+                }
+                returnStringBuilder.append(convertObject(next, next.getClass().getComponentType(), schemaType));
             }
         }
         return returnStringBuilder.toString();
@@ -1712,19 +1715,19 @@
             if (i > 0) {
                 returnStringBuilder.append(' ');
             }
-            returnStringBuilder.append((String)convertObject(next, String.class, schemaType));
+            returnStringBuilder.append(convertObject(next, next.getClass().getComponentType(), schemaType));
         }
         return returnStringBuilder.toString();
     }
 
-    public static HashMap getDefaultXMLTypes() {
+    public static Map<QName, Class<?>> getDefaultXMLTypes() {
         if (defaultXMLTypes == null) {
             defaultXMLTypes = buildXMLTypes();
         }
         return defaultXMLTypes;
     }
 
-    public static HashMap getDefaultJavaTypes() {
+    public static Map<Class<?>, QName> getDefaultJavaTypes() {
         if (defaultJavaTypes == null) {
             defaultJavaTypes = buildJavaTypes();
         }
@@ -1734,8 +1737,8 @@
     /**
     * Build and return a Hashtable containing the default XML to Java conversion pairs
     */
-    private static HashMap buildXMLTypes() {
-        HashMap XMLTypes = new HashMap();
+    private static Map<QName, Class<?>> buildXMLTypes() {
+        Map<QName, Class<?>> XMLTypes = new HashMap<>();
 
         //jaxb 1.0 spec pairs
         XMLTypes.put(Constants.ANY_SIMPLE_TYPE_QNAME, CoreClassConstants.STRING);
@@ -1783,8 +1786,8 @@
     /**
      * Build and return a Hashtable containing the default Java to XML conversion pairs
      */
-    private static HashMap buildJavaTypes() {
-        HashMap javaTypes = new HashMap();
+    private static Map<Class<?>, QName> buildJavaTypes() {
+        Map<Class<?>, QName> javaTypes = new HashMap<>();
 
         //jaxb 1.0 spec pairs
         javaTypes.put(CoreClassConstants.APBYTE, Constants.HEX_BINARY_QNAME);
@@ -1978,9 +1981,7 @@
                 collapsedString.append(nextCharacter);
                 inSequence = false;
             } else {
-                if(inSequence) {
-                    continue;
-                } else {
+                if(!inSequence) {
                     collapsedString.append(' ');
                     inSequence = true;
                 }
@@ -2033,8 +2034,9 @@
      * @return the Java class for the XML schema type.
      */
     @Override
-    public Class<?> javaType(QName schemaType) {
-        return (Class<?>) getDefaultXMLTypes().get(schemaType);
+    @SuppressWarnings({"unchecked"})
+    public <T> Class<T> javaType(QName schemaType) {
+        return (Class<T>) getDefaultXMLTypes().get(schemaType);
     }
 
     /**
@@ -2044,7 +2046,7 @@
      */
     @Override
     public QName schemaType(Class<?> javaType) {
-         return (QName) getDefaultJavaTypes().get(javaType);
+         return getDefaultJavaTypes().get(javaType);
     }
 
     @Override
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLMarshaller.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLMarshaller.java
index 5554797..8d65256 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLMarshaller.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLMarshaller.java
@@ -40,7 +40,6 @@
 import org.eclipse.persistence.exceptions.XMLMarshalException;
 import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession;
-import org.eclipse.persistence.internal.localization.JAXBLocalization;
 import org.eclipse.persistence.internal.oxm.mappings.Descriptor;
 import org.eclipse.persistence.internal.oxm.mappings.Field;
 import org.eclipse.persistence.internal.oxm.record.AbstractMarshalRecord;
@@ -113,12 +112,12 @@
                 staxResultGetStreamWriterMethod = PrivilegedAccessHelper.getDeclaredMethod(staxResultClass, GET_XML_STREAM_WRITER_METHOD_NAME, new Class[]{});
                 staxResultGetEventWriterMethod = PrivilegedAccessHelper.getDeclaredMethod(staxResultClass, GET_XML_EVENT_WRITER_METHOD_NAME, new Class[]{});
             }
-            Class streamWriterRecordClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_WRITER_RECORD_CLASS_NAME);
-            Class streamWriterClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_WRITER_CLASS_NAME);
+            Class<Object> streamWriterRecordClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_WRITER_RECORD_CLASS_NAME);
+            Class<Object> streamWriterClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_WRITER_CLASS_NAME);
             xmlStreamWriterRecordConstructor = PrivilegedAccessHelper.getConstructorFor(streamWriterRecordClass, new Class[]{streamWriterClass}, true);
 
-            Class eventWriterRecordClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_WRITER_RECORD_CLASS_NAME);
-            Class eventWriterClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_WRITER_CLASS_NAME);
+            Class<Object> eventWriterRecordClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_WRITER_RECORD_CLASS_NAME);
+            Class<Object> eventWriterClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_WRITER_CLASS_NAME);
             xmlEventWriterRecordConstructor = PrivilegedAccessHelper.getConstructorFor(eventWriterRecordClass, new Class[]{eventWriterClass}, true);
 
             domToStreamWriterClass = PrivilegedAccessHelper.getClassForName(DOM_TO_STREAM_WRITER_CLASS_NAME);
@@ -488,7 +487,7 @@
     }
 
     protected boolean isSimpleXMLRoot(Root xmlRoot) {
-        Class xmlRootObjectClass = xmlRoot.getObject().getClass();
+        Class<? extends Object> xmlRootObjectClass = xmlRoot.getObject().getClass();
 
         ConversionManager conversionManager = (ConversionManager) context.getSession().getDatasourcePlatform().getConversionManager();
         if (conversionManager.schemaType(xmlRootObjectClass) != null || CoreClassConstants.List_Class.isAssignableFrom(xmlRootObjectClass) || CoreClassConstants.XML_GREGORIAN_CALENDAR.isAssignableFrom(xmlRootObjectClass) || CoreClassConstants.DURATION.isAssignableFrom(xmlRootObjectClass)) {
@@ -546,7 +545,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             session = context.getSession(objectClass);
             xmlDescriptor = getDescriptor(objectClass, session);
         }
@@ -588,7 +587,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             session = context.getSession(objectClass);
             xmlDescriptor = getDescriptor(objectClass, session);
         }
@@ -854,7 +853,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             session = context.getSession(objectClass);
             xmlDescriptor = getDescriptor(objectClass, session);
         }
@@ -981,7 +980,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             session = context.getSession(objectClass);
             xmlDescriptor = getDescriptor(objectClass, session);
         }
@@ -1136,7 +1135,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             if(object instanceof Collection) {
                 int valueSize = ((Collection)object).size();
                 if(marshalRecord.getMarshaller().isApplicationJSON() && (valueSize > 1 || !marshalRecord.getMarshaller().isReduceAnyArrays())) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLObjectBuilder.java
index 86ce2a7..fb1a368 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLObjectBuilder.java
@@ -547,8 +547,8 @@
             relationshipMappings.clear();
         }
 
-        for (Enumeration mappings = this.descriptor.getMappings().elements();
-                 mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = this.descriptor.getMappings().elements();
+             mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
 
             // Add attribute to mapping association
@@ -577,7 +577,7 @@
 
                 if (mapping.isReadOnly()) {
                     if(null != readOnlyMappingsByField) {
-                        List readOnlyMappings = getReadOnlyMappingsByField().get(field);
+                        List<DatabaseMapping> readOnlyMappings = getReadOnlyMappingsByField().get(field);
 
                         if (readOnlyMappings == null) {
                             readOnlyMappings = new ArrayList();
@@ -596,7 +596,7 @@
                         DatabaseMapping aggregatedFieldMapping = aggregateObjectBuilder.getMappingForField(field);
 
                         if (aggregatedFieldMapping == null) { // mapping must be read-only
-                            List readOnlyMappings = getReadOnlyMappingsByField().get(field);
+                            List<DatabaseMapping> readOnlyMappings = getReadOnlyMappingsByField().get(field);
 
                             if (readOnlyMappings == null) {
                                 readOnlyMappings = new ArrayList();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLRelationshipMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLRelationshipMappingNodeValue.java
index 737597f..64ac06f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLRelationshipMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLRelationshipMappingNodeValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -164,7 +164,7 @@
                     returnDescriptor = xmlContext.getDescriptorByGlobalType(frag);
                     if(returnDescriptor == null){
                         if(policy == null || (!policy.isKeepUnknownAsElement() && !policy.isKeepAllAsElement())){
-                            Class theClass = unmarshalRecord.getConversionManager().javaType(qname);
+                            Class<Object> theClass = unmarshalRecord.getConversionManager().javaType(qname);
                             if(theClass == null){
                                 throw XMLMarshalException.unknownXsiTypeValue(schemaType, mapping);
                             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLSequencedObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLSequencedObjectBuilder.java
index 63a7d5b..c1a29c4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLSequencedObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLSequencedObjectBuilder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -49,7 +49,7 @@
     public Collection getSettingsFromObject(Object obj) {
         Method getSettingsMethod = ((XMLSequencedDescriptor)getDescriptor()).getGetSettingsMethod();
         try {
-            Collection settings = (Collection)PrivilegedAccessHelper.invokeMethod(getSettingsMethod, obj, new Object[0]);
+            Collection settings = PrivilegedAccessHelper.invokeMethod(getSettingsMethod, obj, new Object[0]);
             return settings;
         } catch(IllegalAccessException ex) {
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLUnmarshaller.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLUnmarshaller.java
index 48f4d24..5d480c2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLUnmarshaller.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLUnmarshaller.java
@@ -32,7 +32,6 @@
 import org.eclipse.persistence.exceptions.EclipseLinkException;
 import org.eclipse.persistence.exceptions.XMLMarshalException;
 import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession;
-import org.eclipse.persistence.internal.localization.JAXBLocalization;
 import org.eclipse.persistence.internal.oxm.mappings.Descriptor;
 import org.eclipse.persistence.internal.oxm.record.PlatformUnmarshaller;
 import org.eclipse.persistence.internal.oxm.record.UnmarshalRecord;
@@ -179,18 +178,18 @@
             if(staxSourceClass != null) {
                 staxSourceGetStreamReaderMethod = PrivilegedAccessHelper.getDeclaredMethod(staxSourceClass, GET_XML_STREAM_READER_METHOD_NAME, new Class[]{});
                 staxSourceGetEventReaderMethod = PrivilegedAccessHelper.getDeclaredMethod(staxSourceClass, GET_XML_EVENT_READER_METHOD_NAME, new Class[]{});
-                Class xmlStreamReaderInputSourceClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_INPUT_SOURCE_CLASS_NAME);
-                Class xmlEventReaderInputSourceClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_INPUT_SOURCE_CLASS_NAME);
-                Class xmlStreamReaderClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_CLASS_NAME);
+                Class<Object> xmlStreamReaderInputSourceClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_INPUT_SOURCE_CLASS_NAME);
+                Class<Object> xmlEventReaderInputSourceClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_INPUT_SOURCE_CLASS_NAME);
+                Class<Object> xmlStreamReaderClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_CLASS_NAME);
                 xmlStreamReaderInputSourceConstructor = PrivilegedAccessHelper.getConstructorFor(xmlStreamReaderInputSourceClass, new Class[]{xmlStreamReaderClass}, true);
 
-                Class xmlEventReaderClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_CLASS_NAME);
+                Class<Object> xmlEventReaderClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_CLASS_NAME);
                 xmlEventReaderInputSourceConstructor = PrivilegedAccessHelper.getConstructorFor(xmlEventReaderInputSourceClass, new Class[]{xmlEventReaderClass}, true);
 
-                Class xmlStreamReaderReaderClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_READER_CLASS_NAME);
+                Class<Object> xmlStreamReaderReaderClass = PrivilegedAccessHelper.getClassForName(XML_STREAM_READER_READER_CLASS_NAME);
                 xmlStreamReaderReaderConstructor = PrivilegedAccessHelper.getConstructorFor(xmlStreamReaderReaderClass, new Class[0], true);
 
-                Class xmlEventReaderReaderClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_READER_CLASS_NAME);
+                Class<Object> xmlEventReaderReaderClass = PrivilegedAccessHelper.getClassForName(XML_EVENT_READER_READER_CLASS_NAME);
                 xmlEventReaderReaderConstructor = PrivilegedAccessHelper.getConstructorFor(xmlEventReaderReaderClass, new Class[0], true);
             }
         } catch(Exception ex) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLVariableXPathMappingNodeValue.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLVariableXPathMappingNodeValue.java
index d8822fb..ceef000 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLVariableXPathMappingNodeValue.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XMLVariableXPathMappingNodeValue.java
@@ -86,7 +86,7 @@
         Descriptor descriptor = (Descriptor)mapping.getReferenceDescriptor();
 
         if(descriptor.hasInheritance()){
-              Class objectValueClass = value.getClass();
+              Class<? extends Object> objectValueClass = value.getClass();
                if(!(objectValueClass == descriptor.getJavaClass())){
                    descriptor = (Descriptor) session.getDescriptor(objectValueClass);
                }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathEngine.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathEngine.java
index 3608029..a36a4f2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathEngine.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathEngine.java
@@ -282,7 +282,7 @@
                     if(schemaType != null && schemaType.equals(Constants.QNAME_QNAME)){
                         nextConvertedItem = getStringForQName((QName)nextItem, getNamespaceResolverForField(xmlField));
                     }else{
-                        nextConvertedItem = (String) ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(nextItem, CoreClassConstants.STRING, schemaType);
+                        nextConvertedItem = ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(nextItem, CoreClassConstants.STRING, schemaType);
                     }
                     returnStringBuilder.append(nextConvertedItem);
                     if (i < (((List)value).size() - 1)) {
@@ -301,7 +301,7 @@
                             String nextConvertedItem = getStringForQName((QName)nextItem, getNamespaceResolverForField(xmlField));
                             items.add(nextConvertedItem);
                         }else{
-                            String nextConvertedItem = (String) ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(nextItem, CoreClassConstants.STRING, schemaType);
+                            String nextConvertedItem = ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(nextItem, CoreClassConstants.STRING, schemaType);
                             items.add(nextConvertedItem);
                         }
                     }
@@ -343,7 +343,7 @@
                 }
             }
         }
-        return (String) ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
+        return ((ConversionManager)session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
     }
 
     private Object getValueToWriteForUnion(UnionField xmlField, Object value, CoreAbstractSession session) {
@@ -398,14 +398,14 @@
         Node existingElement;
         NamespaceResolver namespaceResolver = getNamespaceResolverForField(xmlField);
         for (int i = 1; i < index; i++) {
-            Field field = new XMLField(element + "[" + i + "]");
+            Field<XMLConversionManager, NamespaceResolver> field = new XMLField(element + "[" + i + "]");
             field.setNamespaceResolver(namespaceResolver);
             existingElement = (Node)unmarshalXPathEngine.selectSingleNode(parent, field, namespaceResolver);
             if (existingElement == null) {
                 addElement(new XPathFragment(element), xmlField, parent, this, true, session);
             }
         }
-        Field field = new XMLField(fragment.getXPath());
+        Field<XMLConversionManager, NamespaceResolver> field = new XMLField(fragment.getXPath());
         field.setNamespaceResolver(namespaceResolver);
         existingElement = (Node)unmarshalXPathEngine.selectSingleNode(parent, field, namespaceResolver);
         if (existingElement == null) {
@@ -674,7 +674,7 @@
         for (int i = 0; i < size; i++) {
             next = elements.item(i);
             if (next.getNodeType() == Node.ELEMENT_NODE) {
-                Class valueClass = values.get(i).getClass();
+                Class<? extends Object> valueClass = values.get(i).getClass();
                 if(valueClass != CoreClassConstants.STRING){
                     ConversionManager conversionManager = (ConversionManager) session.getDatasourcePlatform().getConversionManager();
                     QName qname = field.getXMLType(valueClass, conversionManager);
@@ -920,7 +920,7 @@
                             addXsiNilToElement(parentElement, xmlField);
                             parentElement.removeChild(node);
                         } else {
-                            String stringValue = (String)session.getDatasourcePlatform().getConversionManager().convertObject(value, CoreClassConstants.STRING);
+                            String stringValue = session.getDatasourcePlatform().getConversionManager().convertObject(value, CoreClassConstants.STRING);
                             Element parentElement = (Element)node.getParentNode();
                             if(parentElement == null && parent.getNodeType() == Node.ELEMENT_NODE) {
                                 parentElement = (Element)parent;
@@ -1033,7 +1033,7 @@
                     Node grandParentNode = parentNode.getParentNode();
                     grandParentNode.removeChild(parentNode);
                 } else {
-                    oldChild.setNodeValue((String) session.getDatasourcePlatform().getConversionManager().convertObject(value, CoreClassConstants.STRING));
+                    oldChild.setNodeValue(session.getDatasourcePlatform().getConversionManager().convertObject(value, CoreClassConstants.STRING));
                 }
             } else {
                 Element element = (Element)oldChild;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathObjectBuilder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathObjectBuilder.java
index cfb202d..4993b9e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathObjectBuilder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/XPathObjectBuilder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -27,11 +27,13 @@
 import org.eclipse.persistence.core.descriptors.CoreDescriptor;
 import org.eclipse.persistence.core.mappings.CoreMapping;
 import org.eclipse.persistence.core.mappings.transformers.CoreFieldTransformer;
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.exceptions.XMLMarshalException;
 import org.eclipse.persistence.internal.core.descriptors.CoreObjectBuilder;
 import org.eclipse.persistence.internal.core.helper.CoreField;
 import org.eclipse.persistence.internal.core.sessions.CoreAbstractRecord;
 import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession;
+import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.internal.oxm.mappings.AnyAttributeMapping;
 import org.eclipse.persistence.internal.oxm.mappings.AnyCollectionMapping;
 import org.eclipse.persistence.internal.oxm.mappings.AnyObjectMapping;
@@ -62,11 +64,18 @@
 import org.eclipse.persistence.internal.oxm.record.UnmarshalRecord;
 import org.eclipse.persistence.internal.oxm.record.UnmarshalRecordImpl;
 import org.eclipse.persistence.internal.oxm.record.XMLRecord;
+import org.eclipse.persistence.internal.queries.ContainerPolicy;
 import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
+import org.eclipse.persistence.mappings.AttributeAccessor;
+import org.eclipse.persistence.mappings.converters.Converter;
 import org.eclipse.persistence.oxm.XMLContext;
+import org.eclipse.persistence.oxm.XMLMarshaller;
+import org.eclipse.persistence.oxm.XMLUnmarshaller;
+import org.eclipse.persistence.oxm.mappings.UnmarshalKeepAsElementPolicy;
 import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping;
 import org.eclipse.persistence.oxm.sequenced.SequencedObject;
+import org.eclipse.persistence.sessions.Session;
 
 public class XPathObjectBuilder extends CoreObjectBuilder<CoreAbstractRecord, CoreAbstractSession, CoreField, CoreMapping> implements ObjectBuilder {
 
@@ -236,7 +245,7 @@
             if (node == null) {
                 // No descriptor for this object, so manually create a MappingNodeValue and marshal it
                 XPathNode n = new XPathNode();
-                CompositeObjectMapping m = new XMLCompositeObjectMapping();
+                CompositeObjectMapping<AbstractSession, AttributeAccessor, ContainerPolicy, Converter, ClassDescriptor, DatabaseField, XMLMarshaller, Session, UnmarshalKeepAsElementPolicy, XMLUnmarshaller, org.eclipse.persistence.oxm.record.XMLRecord> m = new XMLCompositeObjectMapping();
                 m.setXPath(".");
                 XMLCompositeObjectMappingNodeValue nv = new XMLCompositeObjectMappingNodeValue(m);
                 n.setMarshalNodeValue(nv);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/CharacterEscapeHandlerWrapper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/CharacterEscapeHandlerWrapper.java
index 566174f..723f411 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/CharacterEscapeHandlerWrapper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/CharacterEscapeHandlerWrapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -41,7 +41,7 @@
 
     public CharacterEscapeHandlerWrapper(Object sunHandler) {
         this.handler = sunHandler;
-        Class handlerClass = sunHandler.getClass();
+        Class<? extends Object> handlerClass = sunHandler.getClass();
 
         try {
             this.escapeMethod = PrivilegedAccessHelper.getMethod(handlerClass, ESCAPE_METHOD_NAME, PARAMS, false);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/DOMReader.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/DOMReader.java
index e8e4862..8f17465 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/DOMReader.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/DOMReader.java
@@ -29,13 +29,11 @@
 
 import org.w3c.dom.Attr;
 import org.w3c.dom.CDATASection;
-import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.ext.Locator2;
@@ -122,7 +120,7 @@
             parent = parent.getParentNode();
         }
         // Pop off each node and call startPrefixMapping for each XMLNS attribute
-        for (Iterator stackIt = parentElements.iterator(); stackIt.hasNext(); ) {
+        for (Iterator<Node> stackIt = parentElements.iterator(); stackIt.hasNext(); ) {
             NamedNodeMap attrs = parentElements.remove(parentElements.size() - 1).getAttributes();
             if (attrs != null) {
                 for (int i=0, length = attrs.getLength(); i < length; i++) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/XMLEventReaderReader.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/XMLEventReaderReader.java
index aa56f95..8b85972 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/XMLEventReaderReader.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/XMLEventReaderReader.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -179,7 +179,7 @@
 
                 depth++;
                 StartElement startElement = xmlEvent.asStartElement();
-                Iterator namespaces = startElement.getNamespaces();
+                Iterator<Namespace> namespaces = startElement.getNamespaces();
                 List<Namespace> declaredNs = null;
                 if(namespaces.hasNext()) {
                     declaredNs = new ArrayList<>();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/namespaces/NamespacePrefixMapperWrapper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/namespaces/NamespacePrefixMapperWrapper.java
index 80165f4..19a49b1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/namespaces/NamespacePrefixMapperWrapper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/record/namespaces/NamespacePrefixMapperWrapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -44,7 +44,7 @@
 
     public NamespacePrefixMapperWrapper(Object prefixMapper) {
         this.prefixMapper = prefixMapper;
-        Class prefixMapperClass = prefixMapper.getClass();
+        Class<? extends Object> prefixMapperClass = prefixMapper.getClass();
         try {
             this.getPreferredPrefixMethod = PrivilegedAccessHelper.getMethod(prefixMapperClass, GET_PREF_PREFIX_METHOD_NAME, PREF_PREFIX_PARAM_TYPES, false);
         } catch(Exception ex) {
@@ -71,7 +71,7 @@
     @Override
     public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
         try {
-            return (String)PrivilegedAccessHelper.invokeMethod(getPreferredPrefixMethod, prefixMapper, new Object[]{namespaceUri, suggestion, requirePrefix});
+            return PrivilegedAccessHelper.invokeMethod(getPreferredPrefixMethod, prefixMapper, new Object[]{namespaceUri, suggestion, requirePrefix});
         } catch(Exception ex) {
             throw XMLMarshalException.errorInvokingPrefixMapperMethod(GET_PREF_PREFIX_METHOD_NAME, prefixMapper);
         }
@@ -80,7 +80,7 @@
     @Override
     public String[] getContextualNamespaceDecls() {
         try {
-            return (String[])PrivilegedAccessHelper.invokeMethod(this.getContextualNamespaceDeclsMethod, prefixMapper, new Object[]{});
+            return PrivilegedAccessHelper.invokeMethod(this.getContextualNamespaceDeclsMethod, prefixMapper, new Object[]{});
         } catch(Exception ex) {
             throw XMLMarshalException.errorInvokingPrefixMapperMethod(GET_CONTEXTUAL_NAMESPACE_DECL_METHOD_NAME, prefixMapper);
         }
@@ -89,7 +89,7 @@
     @Override
     public String[] getPreDeclaredNamespaceUris() {
         try {
-            return (String[])PrivilegedAccessHelper.invokeMethod(getPredeclaredNamespaceUrisMethod, prefixMapper, new Object[]{});
+            return PrivilegedAccessHelper.invokeMethod(getPredeclaredNamespaceUrisMethod, prefixMapper, new Object[]{});
         } catch(Exception ex) {
             throw XMLMarshalException.errorInvokingPrefixMapperMethod(GET_PRE_DECL_NAMESPACE_URIS_METHOD_NAME, prefixMapper);
         }
@@ -98,7 +98,7 @@
     @Override
     public String[] getPreDeclaredNamespaceUris2() {
         try {
-            return (String[])PrivilegedAccessHelper.invokeMethod(getPredeclaredNamespaceUris2Method, prefixMapper, new Object[]{});
+            return PrivilegedAccessHelper.invokeMethod(getPredeclaredNamespaceUris2Method, prefixMapper, new Object[]{});
         } catch(Exception ex) {
             throw XMLMarshalException.errorInvokingPrefixMapperMethod(GET_PRE_DECL_NAMESPACE_URIS2_METHOD_NAME, prefixMapper);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ContainerPolicy.java
index 536c970..521a6ff 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ContainerPolicy.java
@@ -91,7 +91,7 @@
     /**
      * Allow the default collection class to be set.
      */
-    protected static Class defaultContainerClass = ClassConstants.Vector_class;
+    protected static Class<Vector> defaultContainerClass = ClassConstants.Vector_class;
 
     /** The descriptor is used to wrap and unwrap objects using the wrapper policy. **/
     protected transient ClassDescriptor elementDescriptor;
@@ -909,7 +909,7 @@
             Constructor constructor = null;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(getContainerClass(), new Class[] { ClassConstants.PINT }, false));
+                    constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(getContainerClass(), new Class[] { ClassConstants.PINT }, false));
                 } catch (PrivilegedActionException exception) {
                     // If there is no constructor then the default will be used.
                     return;
@@ -1116,7 +1116,7 @@
     protected void mergeChanges(CollectionChangeRecord changeRecord, Object valueOfTarget, boolean shouldMergeCascadeParts, MergeManager mergeManager, AbstractSession targetSession) {
         ObjectChangeSet objectChanges;
         // Step 1 - iterate over the removed changes and remove them from the container.
-        Iterator removeObjects = changeRecord.getRemoveObjectList().keySet().iterator();
+        Iterator<ObjectChangeSet> removeObjects = changeRecord.getRemoveObjectList().keySet().iterator();
         while (removeObjects.hasNext()) {
             objectChanges = (ObjectChangeSet) removeObjects.next();
             removeFrom(objectChanges.getOldKey(), objectChanges.getTargetVersionOfSourceObject(mergeManager, targetSession), valueOfTarget, targetSession);
@@ -1126,7 +1126,7 @@
         }
 
         // Step 2 - iterate over the added changes and add them to the container.
-        Iterator addObjects = changeRecord.getAddObjectList().keySet().iterator();
+        Iterator<ObjectChangeSet> addObjects = changeRecord.getAddObjectList().keySet().iterator();
         while (addObjects.hasNext()) {
             objectChanges = (ObjectChangeSet) addObjects.next();
             Object object = null;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/DatabaseQueryMechanism.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/DatabaseQueryMechanism.java
index 5e28a7b..d6f8910 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/DatabaseQueryMechanism.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/DatabaseQueryMechanism.java
@@ -842,7 +842,7 @@
         Object primaryKey = null;
         if (isFirstCallForInsert) {
             AbstractRecord pkToModify = new DatabaseRecord();
-            List primaryKeyFields = getDescriptor().getPrimaryKeyFields();
+            List<DatabaseField> primaryKeyFields = getDescriptor().getPrimaryKeyFields();
             for (int i = 0; i < primaryKeyFields.size(); i++) {
                 DatabaseField field = (DatabaseField)primaryKeyFields.get(i);
                 if (row.containsKey(field)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ExpressionQueryMechanism.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ExpressionQueryMechanism.java
index 1d1017b..5fcd4a2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ExpressionQueryMechanism.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/ExpressionQueryMechanism.java
@@ -473,7 +473,7 @@
             return null;
         }
         HashSet aliasTables = new HashSet();
-        Iterator itEntries = selectStatement.getTableAliases().entrySet().iterator();
+        Iterator<Map.Entry<DatabaseTable, DatabaseTable>> itEntries = selectStatement.getTableAliases().entrySet().iterator();
         DatabaseTable aliasTable = null;
         while(itEntries.hasNext()) {
             Map.Entry entry = (Map.Entry)itEntries.next();
@@ -1338,7 +1338,7 @@
                 // In the case of multiple tables, build the sql statements list in insert order. When the
                 // actual SQL calls are sent they are sent in the reverse of this order.
                 for (DatabaseTable table : tablesInInsertOrder) {
-                    Collection primaryKeyFields = getPrimaryKeyFieldsForTable(table);
+                    Collection<DatabaseField> primaryKeyFields = getPrimaryKeyFieldsForTable(table);
                     SQLDeleteStatement deleteStatement;
 
                     // In Employee example, query with reference class:
@@ -1507,7 +1507,7 @@
                 tablesToIgnoreForChildren.addAll(tablesInInsertOrder);
             }
 
-            Iterator it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
+            Iterator<ClassDescriptor> it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
             while (it.hasNext()) {
                 // Define the same query for the child
                 ClassDescriptor childDescriptor = (ClassDescriptor)it.next();
@@ -2187,7 +2187,7 @@
             Map.Entry entry = (Map.Entry)tables_databaseFieldsToValues.entrySet().iterator().next();
             DatabaseTable table = (DatabaseTable)entry.getKey();
             HashMap databaseFieldsToValues = (HashMap)entry.getValue();
-            Collection primaryKeyFields = tablesToPrimaryKeyFields.values().iterator().next();
+            Collection<DatabaseField> primaryKeyFields = tablesToPrimaryKeyFields.values().iterator().next();
             setSQLStatement(buildUpdateAllStatement(table, databaseFieldsToValues, selectCallForExist, selectStatementForExist, primaryKeyFields));
         } else {
             // To figure out the order of statements we need to find dependencies
@@ -2384,7 +2384,7 @@
             for(int i=0; i < orderedTables.size(); i++) {
                 DatabaseTable table = (DatabaseTable)orderedTables.elementAt(i);
                 HashMap databaseFieldsToValues = (HashMap)tables_databaseFieldsToValues.get(table);
-                Collection primaryKeyFields = tablesToPrimaryKeyFields.get(table);
+                Collection<DatabaseField> primaryKeyFields = tablesToPrimaryKeyFields.get(table);
                 getSQLStatements().addElement(buildUpdateAllStatement(table, databaseFieldsToValues, selectCallForExist, selectStatementForExist, primaryKeyFields));
             }
         }
@@ -2532,7 +2532,7 @@
             rootDescriptor = rootDescriptor.getInheritancePolicy().getRootParentDescriptor();
         }
         Vector allFields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance();
-        Iterator it = rootDescriptor.getFields().iterator();
+        Iterator<DatabaseField> it = rootDescriptor.getFields().iterator();
         while(it.hasNext()) {
             DatabaseField field = (DatabaseField)it.next();
             if(rootTable.equals(field.getTable())) {
@@ -2651,7 +2651,7 @@
                 tablesToIgnoreForChildren.addAll(tablesInInsertOrder);
             }
 
-            Iterator it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
+            Iterator<ClassDescriptor> it = descriptor.getInheritancePolicy().getChildDescriptors().iterator();
             while (it.hasNext()) {
                 ClassDescriptor childDescriptor = (ClassDescriptor)it.next();
 
@@ -2687,7 +2687,7 @@
         Vector statements = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(4);
 
         Vector allFields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance();
-        Iterator it = getDescriptor().getFields().iterator();
+        Iterator<DatabaseField> it = getDescriptor().getFields().iterator();
         while(it.hasNext()) {
             DatabaseField field = (DatabaseField)it.next();
             if(table.equals(field.getTable())) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/InterfaceContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/InterfaceContainerPolicy.java
index e242265..8ea0a02 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/InterfaceContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/InterfaceContainerPolicy.java
@@ -108,7 +108,7 @@
         }
 
         Method cloneMethod;
-        Class javaClass = container.getClass();
+        Class<? extends Object> javaClass = container.getClass();
         if (javaClass == getContainerClass()) {
             cloneMethod = getCloneMethod();
         } else {
@@ -135,7 +135,7 @@
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
-                    containerClass = AccessController.doPrivileged(new PrivilegedClassForName(getContainerClassName(), true, classLoader));
+                    containerClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getContainerClassName(), true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(getContainerClassName(), exception.getException());
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/JoinedAttributeManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/JoinedAttributeManager.java
index 150be19..9f1a94d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/JoinedAttributeManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/JoinedAttributeManager.java
@@ -253,7 +253,7 @@
         if (getBaseQuery().hasPartialAttributeExpressions()) {
             fieldIndex = getDescriptor().getPrimaryKeyFields().size(); // Query will select pks
             //next check for any partial attributes that are not joined attributes
-            Iterator partialAttributes = ((ObjectLevelReadQuery)getBaseQuery()).getPartialAttributeExpressions().iterator();
+            Iterator<Expression> partialAttributes = ((ObjectLevelReadQuery)getBaseQuery()).getPartialAttributeExpressions().iterator();
             while(partialAttributes.hasNext()){
                 Expression expression = (Expression)partialAttributes.next();
                 if (expression.isQueryKeyExpression()){
@@ -879,7 +879,7 @@
         }
         ObjectBuilder objectBuilder = getDescriptor().getObjectBuilder();
         if (objectBuilder.hasJoinedAttributes()) {
-            List mappingJoinedAttributes = objectBuilder.getJoinedAttributes();
+            List<DatabaseMapping> mappingJoinedAttributes = objectBuilder.getJoinedAttributes();
             if (!hasJoinedAttributeExpressions()) {
                 for (int i = 0; i < mappingJoinedAttributes.size(); i++) {
                     ForeignReferenceMapping mapping = (ForeignReferenceMapping) mappingJoinedAttributes.get(i);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MapContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MapContainerPolicy.java
index f825467..5d75295 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MapContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MapContainerPolicy.java
@@ -352,7 +352,7 @@
             Class elementClass = null;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    elementClass = AccessController.doPrivileged(new PrivilegedClassForName(elementClassName, true, classLoader));
+                    elementClass = AccessController.doPrivileged(new PrivilegedClassForName<>(elementClassName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(containerClassName, exception.getException());
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MappedKeyMapContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MappedKeyMapContainerPolicy.java
index 35c06f3..21afe47 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MappedKeyMapContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/MappedKeyMapContainerPolicy.java
@@ -975,7 +975,7 @@
                 }
             }
 
-            Iterator keyIterator = keyObjects.iterator();
+            Iterator<Object> keyIterator = keyObjects.iterator();
             for(Object key : values){
                 addInto(keyIterator.next(), fromCache.get(key), result, session);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/OrderedListContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/OrderedListContainerPolicy.java
index 4f74e4c..bb934e6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/OrderedListContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/OrderedListContainerPolicy.java
@@ -158,7 +158,7 @@
                 failed = true;
                 break;
             }
-            int intOrderValue = (Integer) conversionManager.convertObject(orderValue, Integer.class);
+            int intOrderValue = conversionManager.convertObject(orderValue, Integer.class);
             try {
                 // one or more elements have the same order value
                 if(NOT_SET != ((List)container).set(intOrderValue, elements.get(i))) {
@@ -183,7 +183,7 @@
                 if(orderValue == null) {
                     orderList.add(null);
                 } else {
-                    orderList.add((Integer)conversionManager.convertObject(orderValue, Integer.class));
+                    orderList.add(conversionManager.convertObject(orderValue, Integer.class));
                 }
             }
 
@@ -477,7 +477,7 @@
             ((IndirectList)valueOfTarget).setIsListOrderBrokenInDb(false);
         }
         if (!changeRecord.getOrderedChangeObjectList().isEmpty()) {
-            Iterator objects =changeRecord.getOrderedChangeObjectList().iterator();
+            Iterator<OrderedChangeObject> objects =changeRecord.getOrderedChangeObjectList().iterator();
             while (objects.hasNext()){
                 OrderedChangeObject changeObject = (OrderedChangeObject)objects.next();
                 objectChanges = changeObject.getChangeSet();
@@ -547,7 +547,7 @@
             if (removedIndices.isEmpty()) {
                 // Check if we have removed objects via a
                 // simpleRemoveFromCollectionChangeRecord API call.
-                Iterator removedObjects = changeRecord.getRemoveObjectList().keySet().iterator();
+                Iterator<ObjectChangeSet> removedObjects = changeRecord.getRemoveObjectList().keySet().iterator();
 
                 while (removedObjects.hasNext()) {
                     objectChanges = (ObjectChangeSet) removedObjects.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/SortedCollectionContainerPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/SortedCollectionContainerPolicy.java
index 305cb76..b0635d5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/SortedCollectionContainerPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/queries/SortedCollectionContainerPolicy.java
@@ -154,7 +154,7 @@
                 Constructor constructor = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(getContainerClass(), constructClass, false));
+                        constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(getContainerClass(), constructClass, false));
                         return AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, arguments));
                     } catch (PrivilegedActionException exception) {
                         throw QueryException.couldNotInstantiateContainerClass(getContainerClass(), exception.getException());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
index 8761dd5..e7dc532 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedAccessHelper.java
@@ -74,12 +74,12 @@
             SystemProperties.CONCURRENCY_MANAGER_ALLOW_INTERRUPTED_EXCEPTION, SystemProperties.CONCURRENCY_MANAGER_ALLOW_CONCURRENCY_EXCEPTION, SystemProperties.CONCURRENCY_MANAGER_ALLOW_STACK_TRACE_READ_LOCK,
             ServerPlatformBase.JMX_REGISTER_RUN_MBEAN_PROPERTY, ServerPlatformBase.JMX_REGISTER_DEV_MBEAN_PROPERTY,
             XMLPlatformFactory.XML_PLATFORM_PROPERTY};
-    private final static Set<String> legalPropertiesSet = Collections.unmodifiableSet(new HashSet(Arrays.asList(legalProperties)));
+    private final static Set<String> legalPropertiesSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(legalProperties)));
 
     private final static String[] exemptedProperties = { "line.separator" };
-    private final static Set<String> exemptedPropertiesSet = Collections.unmodifiableSet(new HashSet(Arrays.asList(exemptedProperties)));
+    private final static Set<String> exemptedPropertiesSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(exemptedProperties)));
 
-    private static Map<String, Class> primitiveClasses;
+    private static final Map<String, Class<?>> primitiveClasses;
 
     static {
         primitiveClasses = new HashMap<>();
@@ -109,11 +109,11 @@
      * find the field.  This method is called by the public getDeclaredField() method and does a recursive
      * search for the named field in the given classes or it's superclasses.
      */
-    private static Field findDeclaredField(Class javaClass, String fieldName) throws NoSuchFieldException {
+    private static <T> Field findDeclaredField(Class<T> javaClass, String fieldName) throws NoSuchFieldException {
         try {
             return javaClass.getDeclaredField(fieldName);
         } catch (NoSuchFieldException ex) {
-            Class superclass = javaClass.getSuperclass();
+            Class<? super T> superclass = javaClass.getSuperclass();
             if (superclass == null) {
                 throw ex;
             } else {
@@ -127,13 +127,13 @@
      * find the method.  This method is called by the public getDeclaredMethod() method and does a recursive
      * search for the named method in the given classes or it's superclasses.
      */
-    private static Method findMethod(Class javaClass, String methodName, Class[] methodParameterTypes) throws NoSuchMethodException {
+    private static <T> Method findMethod(Class<T> javaClass, String methodName, Class<?>[] methodParameterTypes) throws NoSuchMethodException {
         try {
             // use a combination of getDeclaredMethod() and recursion to ensure we get the non-public methods
             // getMethod will not help because it returns only public methods
             return javaClass.getDeclaredMethod(methodName, methodParameterTypes);
         } catch (NoSuchMethodException ex) {
-            Class superclass = javaClass.getSuperclass();
+            Class<? super T> superclass = javaClass.getSuperclass();
             if (superclass == null) {
                 throw ex;
             } else {
@@ -149,31 +149,33 @@
     /**
      * Execute a java Class.forName().  Wrap the call in a doPrivileged block if necessary.
      */
-    public static Class getClassForName(final String className) throws ClassNotFoundException {
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getClassForName(final String className) throws ClassNotFoundException {
         // Check for primitive types.
-        Class primitive = primitiveClasses.get(className);
+        Class<?> primitive = primitiveClasses.get(className);
         if (primitive != null) {
-            return primitive;
+            return (Class<T>) primitive;
         }
-        return Class.forName(className);
+        return (Class<T>) Class.forName(className);
     }
 
     /**
      * Execute a java Class.forName() wrap the call in a doPrivileged block if necessary.
      */
-    public static Class getClassForName(final String className, final boolean initialize, final ClassLoader loader) throws ClassNotFoundException {
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getClassForName(final String className, final boolean initialize, final ClassLoader loader) throws ClassNotFoundException {
         // Check for primitive types.
-        Class primitive = primitiveClasses.get(className);
+        Class<?> primitive = primitiveClasses.get(className);
         if (primitive != null) {
-            return primitive;
+            return (Class<T>) primitive;
         }
-        return Class.forName(className, initialize, loader);
+        return (Class<T>) Class.forName(className, initialize, loader);
     }
 
     /**
      * Gets the class loader for a given class. Wraps the call in a privileged block if necessary
      */
-    public static ClassLoader getClassLoaderForClass(final Class clazz) {
+    public static ClassLoader getClassLoaderForClass(final Class<?> clazz) {
         return clazz.getClassLoader();
     }
 
@@ -185,18 +187,19 @@
      * @param args An array of classes representing the argument types of the constructor
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Constructor getConstructorFor(final Class javaClass, final Class[] args, final boolean shouldSetAccessible) throws NoSuchMethodException {
-        Constructor result = null;
+    @SuppressWarnings({"unchecked"})
+    public static <T> Constructor<T> getConstructorFor(final Class<T> javaClass, final Class<?>[] args, final boolean shouldSetAccessible) throws NoSuchMethodException {
+        Constructor<T> result = null;
         try {
             result = javaClass.getConstructor(args);
         } catch (NoSuchMethodException missing) {
             // Search for any constructor with the same number of arguments and assignable types.
-            for (Constructor constructor : javaClass.getConstructors()) {
+            for (Constructor<?> constructor : javaClass.getConstructors()) {
                 if (constructor.getParameterTypes().length == args.length) {
                     boolean found = true;
                     for (int index = 0; index < args.length; index++) {
-                        Class parameterType = Helper.getObjectClass(constructor.getParameterTypes()[index]);
-                        Class argType = Helper.getObjectClass(args[index]);
+                        Class<?> parameterType = Helper.getObjectClass(constructor.getParameterTypes()[index]);
+                        Class<?> argType = Helper.getObjectClass(args[index]);
                         if ((!parameterType.isAssignableFrom(argType))
                                 && (!argType.isAssignableFrom(parameterType))) {
                             found = false;
@@ -204,7 +207,7 @@
                         }
                     }
                     if (found) {
-                        result = constructor;
+                        result = (Constructor<T>) constructor;
                         break;
                     }
                 }
@@ -238,8 +241,8 @@
      * @param args An array of classes representing the argument types of the constructor
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Constructor getDeclaredConstructorFor(final Class javaClass, final Class[] args, final boolean shouldSetAccessible) throws NoSuchMethodException {
-        Constructor result = javaClass.getDeclaredConstructor(args);
+    public static <T> Constructor<T> getDeclaredConstructorFor(final Class<T> javaClass, final Class<?>[] args, final boolean shouldSetAccessible) throws NoSuchMethodException {
+        Constructor<T> result = javaClass.getDeclaredConstructor(args);
         if (shouldSetAccessible) {
             if (!result.trySetAccessible()) {
                 AbstractSessionLog.getLog().log(SessionLog.FINE, SessionLog.MISC, "set_accessible",
@@ -257,7 +260,7 @@
      * @param fieldName The name of the field
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Field getField(final Class javaClass, final String fieldName, final boolean shouldSetAccessible) throws NoSuchFieldException {
+    public static Field getField(final Class<?> javaClass, final String fieldName, final boolean shouldSetAccessible) throws NoSuchFieldException {
         Field field = findDeclaredField(javaClass, fieldName);
         if (shouldSetAccessible) {
             if (!field.trySetAccessible()) {
@@ -276,7 +279,7 @@
      * @param fieldName The name of the field
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Field getDeclaredField(final Class javaClass, final String fieldName, final boolean shouldSetAccessible) throws NoSuchFieldException {
+    public static Field getDeclaredField(final Class<?> javaClass, final String fieldName, final boolean shouldSetAccessible) throws NoSuchFieldException {
         Field field = javaClass.getDeclaredField(fieldName);
         if (shouldSetAccessible) {
             if (!field.trySetAccessible()) {
@@ -292,7 +295,7 @@
      * Excludes inherited fields.
      * @param clazz the class to get the fields from.
      */
-    public static Field[] getDeclaredFields(final Class clazz) {
+    public static Field[] getDeclaredFields(final Class<?> clazz) {
         return clazz.getDeclaredFields();
     }
 
@@ -300,7 +303,7 @@
      * Get the list of public fields in a class.  Wrap the call in doPrivileged if necessary
      * @param clazz the class to get the fields from.
      */
-    public static Field[] getFields(final Class clazz) {
+    public static Field[] getFields(final Class<?> clazz) {
         return clazz.getFields();
     }
 
@@ -313,7 +316,7 @@
      * @param methodParameterTypes a list of classes representing the classes of the
      *  parameters of the method.
      */
-    public static Method getDeclaredMethod(final Class clazz, final String methodName, final Class[] methodParameterTypes) throws NoSuchMethodException {
+    public static Method getDeclaredMethod(final Class<?> clazz, final String methodName, final Class<?>[] methodParameterTypes) throws NoSuchMethodException {
          return clazz.getDeclaredMethod(methodName, methodParameterTypes);
     }
 
@@ -328,7 +331,7 @@
      * @param methodParameterTypes A list of classes representing the classes of the parameters of the mthod
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Method getMethod(final Class javaClass, final String methodName, final Class[] methodParameterTypes, final boolean shouldSetAccessible) throws NoSuchMethodException {
+    public static Method getMethod(final Class<?> javaClass, final String methodName, final Class<?>[] methodParameterTypes, final boolean shouldSetAccessible) throws NoSuchMethodException {
         Method method = findMethod(javaClass, methodName, methodParameterTypes);
         if (shouldSetAccessible) {
             if (!method.trySetAccessible()) {
@@ -350,7 +353,7 @@
      * @param methodParameterTypes A list of classes representing the classes of the parameters of the method
      * @param shouldSetAccessible whether or not to call the setAccessible API
      */
-    public static Method getPublicMethod(final Class javaClass, final String methodName, final Class[] methodParameterTypes, final boolean shouldSetAccessible) throws NoSuchMethodException {
+    public static Method getPublicMethod(final Class<?> javaClass, final String methodName, final Class<?>[] methodParameterTypes, final boolean shouldSetAccessible) throws NoSuchMethodException {
         // Return the (public) method - will traverse superclass(es) if necessary
         Method method = javaClass.getMethod(methodName, methodParameterTypes);
         if (shouldSetAccessible) {
@@ -367,15 +370,16 @@
      * necessary. Excludes inherited methods.
      * @param clazz the class to get the methods from.
      */
-    public static Method[] getDeclaredMethods(final Class clazz) {
+    public static Method[] getDeclaredMethods(final Class<?> clazz) {
         return clazz.getDeclaredMethods();
     }
 
     /**
      * Get the return type for a given method. Wrap the call in doPrivileged if necessary.
      */
-    public static Class getFieldType(final Field field) {
-        return field.getType();
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getFieldType(final Field field) {
+        return (Class<T>) field.getType();
     }
 
     /**
@@ -410,7 +414,7 @@
      *         does not exist.
      * @since 2.6.2
      */
-    public static final String getSystemProperty(final String key) {
+    public static String getSystemProperty(final String key) {
         if (isIllegalProperty(key)) {
             throw new IllegalArgumentException(
                     ExceptionLocalization.buildMessage("unexpect_argument", new Object[] {key}));
@@ -431,7 +435,7 @@
      *         does not exist.
      * @since 2.6.2
      */
-    public static final String getSystemProperty(final String key, final String def) {
+    public static String getSystemProperty(final String key, final String def) {
         if (isIllegalProperty(key)) {
             throw new IllegalArgumentException(
                     ExceptionLocalization.buildMessage("unexpect_argument", new Object[] {key}));
@@ -453,7 +457,7 @@
      *         {@code false} otherwise.
      * @since 2.6.3
      */
-    public static final boolean getSystemPropertyBoolean(final String key, final boolean def) {
+    public static boolean getSystemPropertyBoolean(final String key, final boolean def) {
         return TRUE_STRING.equalsIgnoreCase(
                 getSystemProperty(key, def ? TRUE_STRING : ""));
     }
@@ -463,7 +467,7 @@
      * Get the line separator character.
      * @return The {@link String} containing the platform-appropriate characters for line separator.
      */
-    public static final String getLineSeparator() {
+    public static String getLineSeparator() {
         return getSystemProperty("line.separator");
     }
 
@@ -471,16 +475,17 @@
      * Get the list of parameter types for a given method.  Wrap the call in doPrivileged if necessary.
      * @param method The method to get the parameter types of
      */
-    public static Class[] getMethodParameterTypes(final Method method) {
+    public static Class<?>[] getMethodParameterTypes(final Method method) {
         return method.getParameterTypes();
     }
 
     /**
      * Get the return type for a given method. Wrap the call in doPrivileged if necessary.
      */
-    public static Class getMethodReturnType(final Method method) {
+    @SuppressWarnings({"unchecked"})
+    public static <T> Class<T> getMethodReturnType(final Method method) {
         // 323148: a null method as a possible problem with module ordering breaking weaving - has been trapped by implementors of this method.
-        return method.getReturnType();
+        return (Class<T>) method.getReturnType();
     }
 
     /**
@@ -488,22 +493,23 @@
      * necessary. This call will traverse the superclasses.
      * @param clazz the class to get the methods from.
      */
-    public static Method[] getMethods(final Class clazz) {
+    public static Method[] getMethods(final Class<?> clazz) {
         return clazz.getMethods();
     }
 
     /**
      * Get the value of the given field in the given object.
      */
-    public static Object getValueFromField(final Field field, final Object object) throws IllegalAccessException {
-        return field.get(object);
+    @SuppressWarnings({"unchecked"})
+    public static <T> T getValueFromField(final Field field, final Object object) throws IllegalAccessException {
+        return (T) field.get(object);
     }
 
     /**
      * Construct an object with the given Constructor and the given array of arguments.  Wrap the call in a
      * doPrivileged block if necessary.
      */
-    public static Object invokeConstructor(final Constructor constructor, final Object[] args) throws IllegalAccessException, InvocationTargetException, InstantiationException {
+    public static <T> T invokeConstructor(final Constructor<T> constructor, final Object[] args) throws IllegalAccessException, InvocationTargetException, InstantiationException {
         return constructor.newInstance(args);
     }
 
@@ -511,7 +517,7 @@
      * Invoke the givenMethod on a givenObject. Assumes method does not take
      * parameters. Wrap in a doPrivileged block if necessary.
      */
-    public static Object invokeMethod(final Method method, final Object object) throws IllegalAccessException, InvocationTargetException {
+    public static <T> T invokeMethod(final Method method, final Object object) throws IllegalAccessException, InvocationTargetException {
         return invokeMethod(method, object, null);
     }
 
@@ -519,7 +525,8 @@
      * Invoke the givenMethod on a givenObject using the array of parameters given.  Wrap in a doPrivileged block
      * if necessary.
      */
-    public static Object invokeMethod(final Method method, final Object object, final Object[] parameters) throws IllegalAccessException, InvocationTargetException {
+    @SuppressWarnings({"unchecked"})
+    public static <T> T invokeMethod(final Method method, final Object object, final Object[] parameters) throws IllegalAccessException, InvocationTargetException {
         // Ensure the method is accessible.
         if (!method.isAccessible()) {
             if (!method.trySetAccessible()) {
@@ -527,7 +534,7 @@
                         "method", method.getName(), method.getDeclaringClass().getName() + " for invokation");
             }
         }
-        return method.invoke(object, parameters);
+        return (T) method.invoke(object, parameters);
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedClassForName.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedClassForName.java
index a3e9c88..fedca13 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedClassForName.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedClassForName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -16,7 +16,7 @@
 
 import java.security.PrivilegedExceptionAction;
 
-public class PrivilegedClassForName  implements PrivilegedExceptionAction<Class> {
+public class PrivilegedClassForName<T> implements PrivilegedExceptionAction<Class<T>> {
 
     private final String className;
     private boolean initialize;
@@ -33,7 +33,7 @@
     }
 
     @Override
-    public Class run() throws ClassNotFoundException {
+    public Class<T> run() throws ClassNotFoundException {
         if (loader == null){
             return PrivilegedAccessHelper.getClassForName(className);
         } else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetClassLoaderForClass.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetClassLoaderForClass.java
index 6ee4cb6..b56f23b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetClassLoaderForClass.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetClassLoaderForClass.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,9 +18,9 @@
 
 public class PrivilegedGetClassLoaderForClass implements PrivilegedExceptionAction<ClassLoader> {
 
-    private final Class clazz;
+    private final Class<?> clazz;
 
-    public PrivilegedGetClassLoaderForClass(Class clazz) {
+    public PrivilegedGetClassLoaderForClass(Class<?> clazz) {
         this.clazz = clazz;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetConstructorFor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetConstructorFor.java
index 954445d..0e6d7e0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetConstructorFor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedGetConstructorFor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -17,20 +17,20 @@
 import java.lang.reflect.Constructor;
 import java.security.PrivilegedExceptionAction;
 
-public class PrivilegedGetConstructorFor implements PrivilegedExceptionAction<Constructor> {
+public class PrivilegedGetConstructorFor<T> implements PrivilegedExceptionAction<Constructor<T>> {
 
-    private final Class javaClass;
+    private final Class<T> javaClass;
     private final Class[] args;
     private final boolean shouldSetAccessible;
 
-    public PrivilegedGetConstructorFor(Class javaClass, Class[] args, boolean shouldSetAccessible) {
+    public PrivilegedGetConstructorFor(Class<T> javaClass, Class[] args, boolean shouldSetAccessible) {
         this.javaClass = javaClass;
         this.args = args;
         this.shouldSetAccessible = shouldSetAccessible;
     }
 
     @Override
-    public Constructor run() throws NoSuchMethodException {
+    public Constructor<T> run() throws NoSuchMethodException {
         return PrivilegedAccessHelper.getConstructorFor(javaClass, args, shouldSetAccessible);
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedInvokeConstructor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedInvokeConstructor.java
index b96b28d..75032ca 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedInvokeConstructor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedInvokeConstructor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,19 +18,19 @@
 import java.lang.reflect.InvocationTargetException;
 import java.security.PrivilegedExceptionAction;
 
-public class PrivilegedInvokeConstructor implements PrivilegedExceptionAction {
+public class PrivilegedInvokeConstructor<T> implements PrivilegedExceptionAction<T> {
 
-    private final Constructor constructor;
+    private final Constructor<T> constructor;
     private final Object[] args;
 
-    public PrivilegedInvokeConstructor(Constructor constructor, Object[] args) {
+    public PrivilegedInvokeConstructor(Constructor<T> constructor, Object[] args) {
         this.constructor = constructor;
         this.args = args;
     }
 
     @Override
-    public Object run() throws InstantiationException, InvocationTargetException, IllegalAccessException {
-        return PrivilegedAccessHelper.invokeConstructor(constructor, args);
+    public T run() throws InstantiationException, InvocationTargetException, IllegalAccessException {
+        return PrivilegedAccessHelper.<T>invokeConstructor(constructor, args);
     }
 }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedMethodInvoker.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedMethodInvoker.java
index 5df06f3..b7d1072 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedMethodInvoker.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/PrivilegedMethodInvoker.java
@@ -37,7 +37,7 @@
 
     @Override
     public T run() throws IllegalAccessException, InvocationTargetException {
-        return (T) PrivilegedAccessHelper.invokeMethod(method, target, args);
+        return PrivilegedAccessHelper.invokeMethod(method, target, args);
     }
 
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/SecurableObjectHolder.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/SecurableObjectHolder.java
index 756d21e..2b03fd2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/SecurableObjectHolder.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/security/SecurableObjectHolder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -86,7 +86,7 @@
 
         try {
             ConversionManager cm = ConversionManager.getDefaultManager();
-            Class securableClass = (Class)cm.convertObject(m_securableClassName, Class.class);
+            Class securableClass = cm.convertObject(m_securableClassName, Class.class);
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
                     m_securableObject = (Securable)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(securableClass));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sequencing/SessionBrokerSequencing.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sequencing/SessionBrokerSequencing.java
index 6908222..67be2da 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sequencing/SessionBrokerSequencing.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sequencing/SessionBrokerSequencing.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -15,7 +15,7 @@
 package org.eclipse.persistence.internal.sequencing;
 
 import java.util.Iterator;
-import org.eclipse.persistence.internal.sequencing.Sequencing;
+
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.sessions.broker.SessionBroker;
 
@@ -25,7 +25,7 @@
 
     public static boolean atLeastOneSessionHasSequencing(SessionBroker br) {
         boolean hasSequencing = false;
-        Iterator sessionEnum = br.getSessionsByName().values().iterator();
+        Iterator<AbstractSession> sessionEnum = br.getSessionsByName().values().iterator();
         while (sessionEnum.hasNext() && !hasSequencing) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             hasSequencing = session.getSequencing() != null;
@@ -41,7 +41,7 @@
     protected void initialize() {
         whenShouldAcquireValueForAll = UNDEFINED;
         boolean first = true;
-        Iterator sessionEnum = broker.getSessionsByName().values().iterator();
+        Iterator<AbstractSession> sessionEnum = broker.getSessionsByName().values().iterator();
         while ((first || (whenShouldAcquireValueForAll != UNDEFINED)) && sessionEnum.hasNext()) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             Sequencing sequencing = session.getSequencing();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
index bc45c40..f80509a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/AbstractSession.java
@@ -238,7 +238,7 @@
     transient protected ClassDescriptor lastDescriptorAccessed;
 
     /** PERF: cache descriptors from project. */
-    transient protected Map<Class, ClassDescriptor> descriptors;
+    transient protected Map<Class<?>, ClassDescriptor> descriptors;
 
     /** PERF: cache table per tenant descriptors needing to be initialized per EM */
     transient protected List<ClassDescriptor> tablePerTenantDescriptors;
@@ -335,7 +335,7 @@
     transient protected Serializer serializer;
 
     /** Allow CDI injection of entity listeners **/
-    transient protected InjectionManager injectionManager;
+    transient protected InjectionManager<?> injectionManager;
 
     /**
      * Indicates whether ObjectLevelReadQuery should by default use ResultSet Access optimization.
@@ -461,7 +461,7 @@
             // use class.forName() to avoid loading parser classes for JAXB
             // Use Class.forName not thread class loader to avoid class loader issues.
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                parserClass = AccessController.doPrivileged(new PrivilegedClassForName(queryBuilderClassName));
+                parserClass = AccessController.doPrivileged(new PrivilegedClassForName<>(queryBuilderClassName));
                 builder = (JPAQueryBuilder)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(parserClass));
             } else {
                 parserClass = PrivilegedAccessHelper.getClassForName(queryBuilderClassName);
@@ -1179,13 +1179,13 @@
     public <T> InjectionManager<T> createInjectionManager(Object beanManager){
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    Class elim = AccessController.doPrivileged(new PrivilegedClassForName(InjectionManager.DEFAULT_CDI_INJECTION_MANAGER, true, getLoader()));
-                    Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(elim, new Class[] {String.class}, false));
-                    return (InjectionManager<T>) AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, new Object[] {beanManager}));
+                    Class<InjectionManager<T>> elim = AccessController.doPrivileged(new PrivilegedClassForName<>(InjectionManager.DEFAULT_CDI_INJECTION_MANAGER, true, getLoader()));
+                    Constructor<InjectionManager<T>> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<InjectionManager<T>>(elim, new Class[] {String.class}, false));
+                    return AccessController.doPrivileged(new PrivilegedInvokeConstructor<InjectionManager<T>>(constructor, new Object[] {beanManager}));
             } else {
-                Class elim = org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(InjectionManager.DEFAULT_CDI_INJECTION_MANAGER, true, getLoader());
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(elim, new Class[] {Object.class}, false);
-                return (InjectionManager<T>) PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] {beanManager});
+                Class<InjectionManager<T>> elim = org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(InjectionManager.DEFAULT_CDI_INJECTION_MANAGER, true, getLoader());
+                Constructor<InjectionManager<T>> constructor = PrivilegedAccessHelper.<InjectionManager<T>>getConstructorFor(elim, new Class[] {Object.class}, false);
+                return PrivilegedAccessHelper.<InjectionManager<T>>invokeConstructor(constructor, new Object[] {beanManager});
             }
         } catch (Exception e){
             logThrowable(SessionLog.FINEST, SessionLog.JPA, e);
@@ -2301,7 +2301,7 @@
         if (injectionManager == null){
             injectionManager = createInjectionManager(this.getProperty(PersistenceUnitProperties.CDI_BEANMANAGER));
         }
-        return injectionManager;
+        return (InjectionManager<T>) injectionManager;
     }
 
     /**
@@ -2510,7 +2510,7 @@
      * Return all registered descriptors.
      */
     @Override
-    public Map<Class, ClassDescriptor> getDescriptors() {
+    public Map<Class<?>, ClassDescriptor> getDescriptors() {
         return this.project.getDescriptors();
     }
 
@@ -2995,7 +2995,7 @@
      */
     public List<DatabaseQuery> getAllQueries() {
         Vector allQueries = new Vector();
-        for (Iterator vectors = getQueries().values().iterator(); vectors.hasNext();) {
+        for (Iterator<List<DatabaseQuery>> vectors = getQueries().values().iterator(); vectors.hasNext();) {
             allQueries.addAll((Vector)vectors.next());
         }
         return allQueries;
@@ -3957,7 +3957,7 @@
     }
 
     public void setInjectionManager(
-            InjectionManager injectionManager) {
+            InjectionManager<?> injectionManager) {
         this.injectionManager = injectionManager;
     }
 
@@ -4964,9 +4964,9 @@
      */
     public void copyDescriptorNamedQueries(boolean allowSameQueryNameDiffArgsCopyToSession) {
         for (ClassDescriptor descriptor : getProject().getOrderedDescriptors()) {
-            Map queries  = descriptor.getQueryManager().getQueries();
+            Map<String, List<DatabaseQuery>> queries  = descriptor.getQueryManager().getQueries();
             if ((queries != null) && (queries.size() > 0)) {
-                for (Iterator keyValueItr = queries.entrySet().iterator(); keyValueItr.hasNext();){
+                for (Iterator<Map.Entry<String, List<DatabaseQuery>>> keyValueItr = queries.entrySet().iterator(); keyValueItr.hasNext();){
                     Map.Entry entry = (Map.Entry) keyValueItr.next();
                     Vector thisQueries = (Vector)entry.getValue();
                     if ((thisQueries != null) && (thisQueries.size() > 0)){
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CollectionChangeRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CollectionChangeRecord.java
index 4c253fe..bc64f06 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CollectionChangeRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CollectionChangeRecord.java
@@ -263,7 +263,7 @@
             }
         }
         Map<ObjectChangeSet, ObjectChangeSet> changeSets = new HashMap<>();
-        Iterator addEnum = ((CollectionChangeRecord)mergeFromRecord).getAddObjectList().keySet().iterator();
+        Iterator<ObjectChangeSet> addEnum = ((CollectionChangeRecord)mergeFromRecord).getAddObjectList().keySet().iterator();
         while (addEnum.hasNext()) {
             ObjectChangeSet mergingObject = (ObjectChangeSet)addEnum.next();
             ObjectChangeSet localChangeSet = mergeToChangeSet.findOrIntegrateObjectChangeSet(mergingObject, mergeFromChangeSet);
@@ -275,7 +275,7 @@
         }
         getAddObjectList().putAll(changeSets);
         changeSets = new HashMap<>();
-        Iterator removeEnum = ((CollectionChangeRecord)mergeFromRecord).getRemoveObjectList().keySet().iterator();
+        Iterator<ObjectChangeSet> removeEnum = ((CollectionChangeRecord)mergeFromRecord).getRemoveObjectList().keySet().iterator();
         while (removeEnum.hasNext()) {
             ObjectChangeSet mergingObject = (ObjectChangeSet)removeEnum.next();
             ObjectChangeSet localChangeSet = mergeToChangeSet.findOrIntegrateObjectChangeSet(mergingObject, mergeFromChangeSet);
@@ -288,7 +288,7 @@
         getRemoveObjectList().putAll(changeSets);
         //237545: merge the changes for ordered list's attribute change tracking. (still need to check if deferred changes need to be merged)
         List<OrderedChangeObject> orderedChangeSets = new ArrayList<>();
-        Iterator orderedChangeObjectEnum = ((CollectionChangeRecord)mergeFromRecord).getOrderedChangeObjectList().iterator();
+        Iterator<OrderedChangeObject> orderedChangeObjectEnum = ((CollectionChangeRecord)mergeFromRecord).getOrderedChangeObjectList().iterator();
         while (orderedChangeObjectEnum.hasNext()) {
             OrderedChangeObject changeObject = (OrderedChangeObject)orderedChangeObjectEnum.next();
             ObjectChangeSet mergingObject = changeObject.getChangeSet();
@@ -360,7 +360,7 @@
             setOrderedRemoveObjects(orderedRemoveList);
             // Don't need to worry about the vector of indices (Integer's), just leave them as is.
         } else {
-            Iterator changes = getAddObjectList().values().iterator();
+            Iterator<ObjectChangeSet> changes = getAddObjectList().values().iterator();
             while (changes.hasNext()) {
                 ObjectChangeSet localChangeSet = mergeToChangeSet.findOrIntegrateObjectChangeSet((ObjectChangeSet)changes.next(), mergeFromChangeSet);
                 addList.put(localChangeSet, localChangeSet);
@@ -528,14 +528,14 @@
        ContainerPolicy cp = this.mapping.getContainerPolicy();
        if(orderedChangeObjectList == null || orderedChangeObjectList.isEmpty()) {
            if(this.removeObjectList != null) {
-               Iterator it = this.removeObjectList.keySet().iterator();
+               Iterator<ObjectChangeSet> it = this.removeObjectList.keySet().iterator();
                while(it.hasNext()) {
                    ObjectChangeSet changeSet = (ObjectChangeSet)it.next();
                    cp.addInto(changeSet.getUnitOfWorkClone(), currentCollection, session);
                }
            }
            if(this.addObjectList != null) {
-               Iterator it = this.addObjectList.keySet().iterator();
+               Iterator<ObjectChangeSet> it = this.addObjectList.keySet().iterator();
                while(it.hasNext()) {
                    ObjectChangeSet changeSet = (ObjectChangeSet)it.next();
                    cp.removeFrom(changeSet.getUnitOfWorkClone(), currentCollection, session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
index 985e69f..3663924 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitManager.java
@@ -153,7 +153,7 @@
                 }
             } else {
                 // The commit order is all of the classes ordered by dependencies, this is done for deadlock avoidance.
-                List commitOrder = getCommitOrder();
+                List<Class> commitOrder = getCommitOrder();
                 int size = commitOrder.size();
                 for (int index = 0; index < size; index++) {
                     Class theClass = (Class)commitOrder.get(index);
@@ -311,7 +311,7 @@
             if (objects.size() == 1) {
                 deleteAllObjects(objects.get(0).getClass(), objects, session);
             } else {
-                List commitOrder = getCommitOrder();
+                List<Class> commitOrder = getCommitOrder();
                 for (int orderIndex = commitOrder.size() - 1; orderIndex >= 0; orderIndex--) {
                     Class theClass = (Class)commitOrder.get(orderIndex);
                     deleteAllObjects(theClass, objects, session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitOrderDependencyNode.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitOrderDependencyNode.java
index 6e6281a..9f2ef3f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitOrderDependencyNode.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/CommitOrderDependencyNode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -100,8 +100,8 @@
      * If my superclass is related to a class, I'm related to it.
      */
     public void recordMappingDependencies() {
-        for (Enumeration mappings = getDescriptor().getMappings().elements();
-                 mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = getDescriptor().getMappings().elements();
+             mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (mapping.isForeignReferenceMapping()) {
                 if (mapping.hasConstraintDependency()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/IdentityMapAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/IdentityMapAccessor.java
index 83584e3..7884a8c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/IdentityMapAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/IdentityMapAccessor.java
@@ -855,7 +855,7 @@
         //removed synchronization that would result in deadlock
         //no need to synchronize as changes to identity map will not aversely affect this code
         //bug 275724: IdentityMapAccessor.invalidateClass() should not check ReadLock when invalidating
-        Enumeration keys = identityMap.keys(false); // do not check readlock
+        Enumeration<CacheKey> keys = identityMap.keys(false); // do not check readlock
         while (keys.hasMoreElements()) {
             CacheKey key = (CacheKey)keys.nextElement();
             Object obj = key.getObject();
@@ -1070,7 +1070,7 @@
      */
     @Override
     public Object removeFromIdentityMap(Object object) {
-        Class theClass = object.getClass();
+        Class<? extends Object> theClass = object.getClass();
         return removeFromIdentityMap(getSession().getId(object), theClass, getSession().getDescriptor(theClass), object);
     }
 
@@ -1153,7 +1153,7 @@
         };
 
         iterator.setSession(getSession());
-        Iterator descriptors = getSession().getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getSession().getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
             IdentityMap cache = getIdentityMap(descriptor, true);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
index 5c955e3..4cc9f00 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/MergeManager.java
@@ -336,7 +336,7 @@
     }
 
     public void recordMerge(Object key, Object value, AbstractSession targetSession) {
-        Map sessionMap = this.objectsAlreadyMerged.get(targetSession);
+        Map<Object, Object> sessionMap = this.objectsAlreadyMerged.get(targetSession);
         if (sessionMap == null){
             sessionMap = new IdentityHashMap();
             this.objectsAlreadyMerged.put(targetSession, sessionMap);
@@ -345,7 +345,7 @@
     }
 
     public boolean isAlreadyMerged(Object object, AbstractSession targetSession) {
-        Map sessionMap = this.objectsAlreadyMerged.get(targetSession);
+        Map<Object, Object> sessionMap = this.objectsAlreadyMerged.get(targetSession);
         if (sessionMap == null){
             return false;
         }
@@ -353,7 +353,7 @@
     }
 
     public Object getMergedObject(Object key, AbstractSession targetSession){
-        Map sessionMap = this.objectsAlreadyMerged.get(targetSession);
+        Map<Object, Object> sessionMap = this.objectsAlreadyMerged.get(targetSession);
         if (sessionMap == null){
             return null;
         }
@@ -435,7 +435,7 @@
             }
             // Iterate over each clone and let the object build merge to clones into the originals.
             this.session.getIdentityMapAccessorInstance().getWriteLockManager().acquireRequiredLocks(this, uowChangeSet);
-            Iterator objectChangeEnum = uowChangeSet.getAllChangeSets().keySet().iterator();
+            Iterator<ObjectChangeSet> objectChangeEnum = uowChangeSet.getAllChangeSets().keySet().iterator();
             Set<Class> classesChanged = new HashSet<>();
             while (objectChangeEnum.hasNext()) {
                 ObjectChangeSet objectChangeSet = (ObjectChangeSet)objectChangeEnum.next();
@@ -454,7 +454,7 @@
                 classesChanged.add(objectChangeSet.getClassType(this.session));
             }
             if (uowChangeSet.hasDeletedObjects()) {
-                Iterator deletedObjects = uowChangeSet.getDeletedObjects().values().iterator();
+                Iterator<ObjectChangeSet> deletedObjects = uowChangeSet.getDeletedObjects().values().iterator();
                 while (deletedObjects.hasNext()) {
                     ObjectChangeSet changeSet = (ObjectChangeSet)deletedObjects.next();
                     changeSet.removeFromIdentityMap(this.session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/ObjectChangeSet.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/ObjectChangeSet.java
index b069f27..c4eeb0b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/ObjectChangeSet.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/ObjectChangeSet.java
@@ -27,6 +27,7 @@
 import org.eclipse.persistence.descriptors.FetchGroupManager;
 import org.eclipse.persistence.descriptors.TimestampLockingPolicy;
 import org.eclipse.persistence.descriptors.VersionLockingPolicy;
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.identitymaps.CacheKey;
@@ -63,7 +64,7 @@
             // Sort by changes to keep same SQL together for batching.
             if ((left.changes != null) && right.changes != null) {
                 int size = left.changes.size();
-                List otherChanges = right.changes;
+                List<org.eclipse.persistence.sessions.changesets.ChangeRecord> otherChanges = right.changes;
                 int otherSize = otherChanges.size();
                 if (size > otherSize) {
                     return 1;
@@ -192,7 +193,7 @@
         }
         String attributeName = changeRecord.getAttribute();
         Map attributeToChanges = getAttributesToChanges();
-        List changes = getChanges();
+        List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changes = getChanges();
         ChangeRecord existingChangeRecord = (ChangeRecord)attributeToChanges.get(attributeName);
         // change tracking may add a change to an existing attribute fix that here.
         if (existingChangeRecord != null) {
@@ -346,7 +347,7 @@
     @Override
     public Class getClassType(org.eclipse.persistence.sessions.Session session) {
         if (classType == null) {
-            classType = (Class) session.getDatasourcePlatform().getConversionManager().convertObject(getClassName(), ClassConstants.CLASS);
+            classType = session.getDatasourcePlatform().getConversionManager().convertObject(getClassName(), ClassConstants.CLASS);
         }
         return classType;
     }
@@ -781,7 +782,7 @@
                 }
             }
         }
-        List changesToMerge = changeSetToMergeFrom.getChanges();
+        List<org.eclipse.persistence.sessions.changesets.ChangeRecord> changesToMerge = changeSetToMergeFrom.getChanges();
         int size = changesToMerge.size();
         for (int index = 0; index < size; ++index) {
             ChangeRecord record = (ChangeRecord)changesToMerge.get(index);
@@ -1186,8 +1187,8 @@
      */
     protected void rebuildWriteLockValueFromUserFormat(ClassDescriptor descriptor, AbstractSession session) {
         if (descriptor.getOptimisticLockingPolicy() instanceof TimestampLockingPolicy) {
-            this.writeLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.writeLockValue, ClassConstants.JavaSqlTimestamp_Class);
-            this.initialWriteLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.initialWriteLockValue, ClassConstants.JavaSqlTimestamp_Class);
+            this.writeLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.writeLockValue, CoreClassConstants.TIMESTAMP);
+            this.initialWriteLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.initialWriteLockValue, CoreClassConstants.TIMESTAMP);
         } else if (descriptor.getOptimisticLockingPolicy() instanceof VersionLockingPolicy) {
             this.writeLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.writeLockValue, ClassConstants.BIGDECIMAL);
             this.initialWriteLockValue = session.getPlatform(descriptor.getJavaClass()).getConversionManager().convertObject(this.initialWriteLockValue, ClassConstants.BIGDECIMAL);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/RepeatableWriteUnitOfWork.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/RepeatableWriteUnitOfWork.java
index f1ca712..dc38f57 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/RepeatableWriteUnitOfWork.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/RepeatableWriteUnitOfWork.java
@@ -139,7 +139,7 @@
                     if (this.classesToBeInvalidated == null) {
                         this.classesToBeInvalidated = new HashSet<>();
                     }
-                    Iterator enumDeleted = this.unregisteredDeletedObjectsCloneToBackupAndOriginal.keySet().iterator();
+                    Iterator<Object> enumDeleted = this.unregisteredDeletedObjectsCloneToBackupAndOriginal.keySet().iterator();
                     // classes of the deleted objects should be invalidated in the shared cache
                     while (enumDeleted.hasNext()) {
                         this.classesToBeInvalidated.add(getDescriptor(enumDeleted.next().getClass()));
@@ -649,8 +649,8 @@
      */
     public Object getUnregisteredDeletedCloneForOriginal(Object original) {
         if (unregisteredDeletedObjectsCloneToBackupAndOriginal != null) {
-            Iterator keys = unregisteredDeletedObjectsCloneToBackupAndOriginal.keySet().iterator();
-            Iterator values = unregisteredDeletedObjectsCloneToBackupAndOriginal.values().iterator();
+            Iterator<Object> keys = unregisteredDeletedObjectsCloneToBackupAndOriginal.keySet().iterator();
+            Iterator<Object> values = unregisteredDeletedObjectsCloneToBackupAndOriginal.values().iterator();
             while(keys.hasNext()) {
                 Object deletedObjectClone = keys.next();
                 Object[] backupAndOriginal = (Object[])values.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/SessionBrokerIdentityMapAccessor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/SessionBrokerIdentityMapAccessor.java
index f31be04..e237cd7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/SessionBrokerIdentityMapAccessor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/SessionBrokerIdentityMapAccessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -15,7 +15,6 @@
 package org.eclipse.persistence.internal.sessions;
 
 import org.eclipse.persistence.internal.identitymaps.*;
-import org.eclipse.persistence.internal.sessions.IdentityMapAccessor;
 import org.eclipse.persistence.sessions.broker.*;
 import java.util.*;
 
@@ -40,8 +39,8 @@
      */
     @Override
     public void initializeAllIdentityMaps() {
-        for (Iterator sessionEnum = ((SessionBroker)session).getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = ((SessionBroker)session).getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.getIdentityMapAccessorInstance().initializeAllIdentityMaps();
         }
@@ -58,8 +57,8 @@
      */
     @Override
     public void initializeIdentityMaps() {
-        for (Iterator sessionEnum = ((SessionBroker)session).getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = ((SessionBroker)session).getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.getIdentityMapAccessorInstance().initializeIdentityMaps();
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkChangeSet.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkChangeSet.java
index ef2b08f..a3929b9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkChangeSet.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkChangeSet.java
@@ -598,7 +598,7 @@
      * inserted and added to the objectChangesList
      */
     public void removeObjectChangeSetFromNewList(ObjectChangeSet objectChangeSet, AbstractSession session) {
-        Map table = getNewObjectChangeSets().get(objectChangeSet.getClassType(session));
+        Map<ObjectChangeSet, ObjectChangeSet> table = getNewObjectChangeSets().get(objectChangeSet.getClassType(session));
         if (table != null) {
             table.remove(objectChangeSet);
         }
@@ -616,7 +616,7 @@
         if (changeSet.isAggregate()) {
             getAggregateChangeSets().remove(changeSet);
         } else {
-            Map classChanges = getObjectChanges().get(object.getClass());
+            Map<ObjectChangeSet, ObjectChangeSet> classChanges = getObjectChanges().get(object.getClass());
             if (classChanges != null) {
                 classChanges.remove(changeSet);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
index b28d29a..715c7d1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/UnitOfWorkImpl.java
@@ -3812,8 +3812,8 @@
     protected void postMergeChanges(Set classesChanged) {
         //bug 4730595: objects removed during flush are not removed from the cache during commit
         if (this.unitOfWorkChangeSet.hasDeletedObjects()) {
-            Map deletedObjects = this.unitOfWorkChangeSet.getDeletedObjects();
-            for (Iterator removedObjects = deletedObjects.keySet().iterator(); removedObjects.hasNext(); ) {
+            Map<ObjectChangeSet, ObjectChangeSet> deletedObjects = this.unitOfWorkChangeSet.getDeletedObjects();
+            for (Iterator<ObjectChangeSet> removedObjects = deletedObjects.keySet().iterator(); removedObjects.hasNext(); ) {
                 ObjectChangeSet removedObjectChangeSet = (ObjectChangeSet) removedObjects.next();
                 Object primaryKey = removedObjectChangeSet.getId();
                 ClassDescriptor descriptor = removedObjectChangeSet.getDescriptor();
@@ -5426,7 +5426,7 @@
     public void resumeUnitOfWork() {
         // Resume new objects.
         if (hasNewObjects() && !this.isNestedUnitOfWork) {
-            Iterator newEntries = this.newObjectsCloneToOriginal.entrySet().iterator();
+            Iterator<Map.Entry<Object, Object>> newEntries = this.newObjectsCloneToOriginal.entrySet().iterator();
             Map cloneToOriginals = getCloneToOriginals();
             while (newEntries.hasNext()) {
                 Map.Entry entry = (Map.Entry)newEntries.next();
@@ -5468,7 +5468,7 @@
             if (this.unregisteredDeletedObjectsCloneToBackupAndOriginal == null) {
                 this.unregisteredDeletedObjectsCloneToBackupAndOriginal = new IdentityHashMap(this.objectsDeletedDuringCommit.size());
             }
-            Iterator iterator = this.objectsDeletedDuringCommit.keySet().iterator();
+            Iterator<Object> iterator = this.objectsDeletedDuringCommit.keySet().iterator();
             Map cloneToOriginals = getCloneToOriginals();
             while (iterator.hasNext()) {
                 Object deletedObject = iterator.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/coordination/CommandPropagator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/coordination/CommandPropagator.java
index 5f8f17a..9397a86 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/coordination/CommandPropagator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/coordination/CommandPropagator.java
@@ -87,7 +87,7 @@
      */
     public void synchronousPropagateCommand() {
         rcm.logDebug("sync_propagation", null);
-        Iterator connections = rcm.getTransportManager().getConnectionsToExternalServicesForCommandPropagation().values().iterator();
+        Iterator<RemoteConnection> connections = rcm.getTransportManager().getConnectionsToExternalServicesForCommandPropagation().values().iterator();
 
         while (connections.hasNext()) {
             connection = (RemoteConnection)connections.next();
@@ -197,8 +197,8 @@
                 this.rcm.getCommandProcessor().endOperationProfile(SessionProfiler.CacheCoordination);
             }
         } else {
-            Map mapConnections = this.rcm.getTransportManager().getConnectionsToExternalServicesForCommandPropagation();
-            Iterator iterator = mapConnections.values().iterator();
+            Map<String, RemoteConnection> mapConnections = this.rcm.getTransportManager().getConnectionsToExternalServicesForCommandPropagation();
+            Iterator<RemoteConnection> iterator = mapConnections.values().iterator();
             if (mapConnections.size() == 1) {
                 // There is only one connection - no need for yet another thread.
                 // Set the connection into the current one
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
index 8acd1bb..34a5cb7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/DirectToXMLTypeMappingHelper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -38,7 +38,7 @@
             Class helperClass = null;
 
             try {
-                helperClass = new PrivilegedClassForName("org.eclipse.persistence.sessions.factories.OracleDirectToXMLTypeMappingHelper").run();
+                helperClass = new PrivilegedClassForName<>("org.eclipse.persistence.sessions.factories.OracleDirectToXMLTypeMappingHelper").run();
             } catch (Throwable cnfe) {
                 helperClass = DirectToXMLTypeMappingHelper.class;
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
index 1696cb8..a63ac32 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/MissingDescriptorListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -67,7 +67,7 @@
                 Class javaClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try{
-                        javaClass = AccessController.doPrivileged(new PrivilegedClassForName(XML_INTERACTION_CLASS));
+                        javaClass = AccessController.doPrivileged(new PrivilegedClassForName<>(XML_INTERACTION_CLASS));
                     }catch (PrivilegedActionException ex){
                         if (ex.getCause() instanceof ClassNotFoundException){
                             throw (ClassNotFoundException) ex.getCause();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolvableProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolvableProject.java
index 6688fc4..3dbf3b6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolvableProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/NamespaceResolvableProject.java
@@ -24,6 +24,7 @@
 import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
 
 // EclipseLink imports
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.oxm.XMLDescriptor;
 import org.eclipse.persistence.sessions.Project;
 
@@ -114,7 +115,7 @@
     protected abstract void buildDescriptors();
 
     protected void setNamespaceResolverOnDescriptors() {
-        for (Iterator descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
             XMLDescriptor descriptor = (XMLDescriptor)descriptors.next();
             descriptor.setNamespaceResolver(ns);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
index 8c8e103..0c9b851 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject.java
@@ -307,7 +307,7 @@
         addDescriptor(buildDirectToFieldMappingDescriptor());
         addDescriptor(buildXMLDirectMappingDescriptor());
         try {
-            Class typesafeenumClass = new PrivilegedClassForName("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run();
+            Class<Object> typesafeenumClass = new PrivilegedClassForName<>("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run();
             addDescriptor(buildTypesafeEnumConverterDescriptor(typesafeenumClass));
         }
         catch (ClassNotFoundException cnfe) {
@@ -450,8 +450,8 @@
             @Override
             public Object getAttributeValueFromObject(Object object) {
                 AggregateCollectionMapping mapping = (AggregateCollectionMapping)object;
-                List sourceFields = mapping.getSourceKeyFields();
-                List targetFields = mapping.getTargetForeignKeyFields();
+                List<DatabaseField> sourceFields = mapping.getSourceKeyFields();
+                List<DatabaseField> targetFields = mapping.getTargetForeignKeyFields();
                 List associations = new ArrayList(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(targetFields.get(index), sourceFields.get(index)));
@@ -579,7 +579,7 @@
                  * changed getAggregateToSourceFieldAssociations to hold String->DatabaseField associations
                  */
                 AggregateObjectMapping mapping = (AggregateObjectMapping)object;
-                Vector associations = mapping.getAggregateToSourceFieldAssociations();
+                Vector<Association> associations = mapping.getAggregateToSourceFieldAssociations();
                 Vector translations = new Vector(associations.size());
                 for (int index = 0; index < associations.size(); index++) {
                     Association association = (Association)associations.get(index);
@@ -762,7 +762,7 @@
                 }
 
                 Object attributeValue;
-                Class attributeClass = (Class) session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
+                Class attributeClass = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
@@ -2608,8 +2608,8 @@
         sourceToReferenceKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
             @Override
             public Object getAttributeValueFromObject(Object object) {
-                List sourceFields = ((DirectCollectionMapping)object).getSourceKeyFields();
-                List referenceFields = ((DirectCollectionMapping)object).getReferenceKeyFields();
+                List<DatabaseField> sourceFields = ((DirectCollectionMapping)object).getSourceKeyFields();
+                List<DatabaseField> referenceFields = ((DirectCollectionMapping)object).getReferenceKeyFields();
                 List associations = new ArrayList(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(referenceFields.get(index), sourceFields.get(index)));
@@ -3112,7 +3112,7 @@
         descriptor.getInheritancePolicy().addClassIndicator(TypeConversionConverter.class, getPrimaryNamespaceXPath() + "type-conversion-converter");
         descriptor.getInheritancePolicy().addClassIndicator(SerializedObjectConverter.class, getPrimaryNamespaceXPath() + "serialized-object-converter");
         try {
-            Class typesafeenumClass = new PrivilegedClassForName("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run();
+            Class<Object> typesafeenumClass = new PrivilegedClassForName<>("org.eclipse.persistence.jaxb.JAXBTypesafeEnumConverter").run();
             descriptor.getInheritancePolicy().addClassIndicator(typesafeenumClass, getPrimaryNamespaceXPath() + "typesafe-enumeration-converter");
         }
         catch (ClassNotFoundException cnfe) {
@@ -3219,8 +3219,8 @@
         sourceToRelationKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
             @Override
             public Object getAttributeValueFromObject(Object object) {
-                List sourceFields = ((ManyToManyMapping)object).getSourceKeyFields();
-                List relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields();
+                List<DatabaseField> sourceFields = ((ManyToManyMapping)object).getSourceKeyFields();
+                List<DatabaseField> relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields();
                 List associations = new ArrayList(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(relationFields.get(index), sourceFields.get(index)));
@@ -3252,8 +3252,8 @@
         targetToRelationKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
             @Override
             public Object getAttributeValueFromObject(Object object) {
-                List targetFields = ((ManyToManyMapping)object).getTargetKeyFields();
-                List relationFields = ((ManyToManyMapping)object).getTargetRelationKeyFields();
+                List<DatabaseField> targetFields = ((ManyToManyMapping)object).getTargetKeyFields();
+                List<DatabaseField> relationFields = ((ManyToManyMapping)object).getTargetRelationKeyFields();
                 List associations = new ArrayList(targetFields.size());
                 for (int index = 0; index < targetFields.size(); index++) {
                     associations.add(new Association(relationFields.get(index), targetFields.get(index)));
@@ -3505,8 +3505,8 @@
         sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
             @Override
             public Object getAttributeValueFromObject(Object object) {
-                List sourceFields = ((OneToManyMapping)object).getSourceKeyFields();
-                List targetFields = ((OneToManyMapping)object).getTargetForeignKeyFields();
+                List<DatabaseField> sourceFields = ((OneToManyMapping)object).getSourceKeyFields();
+                List<DatabaseField> targetFields = ((OneToManyMapping)object).getTargetForeignKeyFields();
                 List associations = new ArrayList(sourceFields.size());
                 for (int index = 0; index < sourceFields.size(); index++) {
                     associations.add(new Association(targetFields.get(index), sourceFields.get(index)));
@@ -3605,9 +3605,9 @@
         sourceToTargetKeyFieldAssociationsMapping.setAttributeAccessor(new AttributeAccessor() {
             @Override
             public Object getAttributeValueFromObject(Object object) {
-                Map sourceToTargetKeyFields = ((OneToOneMapping)object).getSourceToTargetKeyFields();
+                Map<DatabaseField, DatabaseField> sourceToTargetKeyFields = ((OneToOneMapping)object).getSourceToTargetKeyFields();
                 List associations = new ArrayList(sourceToTargetKeyFields.size());
-                Iterator iterator = sourceToTargetKeyFields.entrySet().iterator();
+                Iterator<Map.Entry<DatabaseField, DatabaseField>> iterator = sourceToTargetKeyFields.entrySet().iterator();
                 while (iterator.hasNext()) {
                     Map.Entry entry = (Map.Entry)iterator.next();
                     associations.add(new Association(entry.getKey(), entry.getValue()));
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
index 87d85d8..440e34a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/ObjectPersistenceRuntimeXMLProject_11_1_1.java
@@ -995,9 +995,9 @@
         @Override
         public Object getAttributeValueFromObject(Object anObject) throws DescriptorException {
             StoredProcedureCall spc = (StoredProcedureCall)anObject;
-            List parameterTypes = spc.getParameterTypes();
+            List<Integer> parameterTypes = spc.getParameterTypes();
             List parameters = spc.getParameters();
-            List procedureArgumentNames = spc.getProcedureArgumentNames();
+            List<String> procedureArgumentNames = spc.getProcedureArgumentNames();
             List storedProcedureArguments = new Vector();
             for (int i = spc.getFirstParameterIndexForCallString(); i < parameterTypes.size(); i++) {
                 StoredProcedureArgument spa = null;
@@ -1713,9 +1713,9 @@
          fieldsMapping.setAttributeAccessor(new AttributeAccessor() {
              @Override
             public Object getAttributeValueFromObject(Object object) {
-                 Map fields = ((OracleObjectType) object).getFields();
+                 Map<String, DatabaseType> fields = ((OracleObjectType) object).getFields();
                  List associations = new ArrayList(fields.size());
-                 Iterator iterator = fields.entrySet().iterator();
+                 Iterator<Map.Entry<String, DatabaseType>> iterator = fields.entrySet().iterator();
                  while (iterator.hasNext()) {
                      Map.Entry entry = (Map.Entry)iterator.next();
                      associations.add(new ObjectTypeFieldAssociation(entry.getKey().toString(),  wrapType((DatabaseType) entry.getValue())));
@@ -1725,12 +1725,12 @@
              @Override
             public void setAttributeValueInObject(Object object, Object value) {
                  OracleObjectType objectType = (OracleObjectType) object;
-                 List associations = (List) value;
-                 Map fieldMap = new LinkedHashMap<String, DatabaseType>(associations.size() + 1);
-                 Iterator iterator = associations.iterator();
+                 List<ObjectTypeFieldAssociation> associations = (List<ObjectTypeFieldAssociation>) value;
+                 Map<String, DatabaseType> fieldMap = new LinkedHashMap<>(associations.size() + 1);
+                 Iterator<ObjectTypeFieldAssociation> iterator = associations.iterator();
                  while (iterator.hasNext()) {
                      ObjectTypeFieldAssociation association = (ObjectTypeFieldAssociation)iterator.next();
-                     fieldMap.put(association.getKey(), unwrapType((DatabaseTypeWrapper)association.getValue()));
+                     fieldMap.put((String) association.getKey(), unwrapType((DatabaseTypeWrapper)association.getValue()));
                  }
                  objectType.setFields(fieldMap);
              }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
index 9105b8c..c489f24 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/SessionsFactory.java
@@ -197,11 +197,12 @@
         String sessionCustomizerClassName = sessionConfig.getSessionCustomizerClass();
         if (sessionCustomizerClassName != null) {
             try {
-                Class sessionCustomizerClass = m_classLoader.loadClass(sessionCustomizerClassName);
+                @SuppressWarnings({"unchecked"})
+                Class<SessionCustomizer> sessionCustomizerClass = (Class<SessionCustomizer>) m_classLoader.loadClass(sessionCustomizerClassName);
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    ((SessionCustomizer)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(sessionCustomizerClass))).customize(session);
+                    AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(sessionCustomizerClass)).customize(session);
                 }else{
-                    ((SessionCustomizer)PrivilegedAccessHelper.newInstanceFromClass(sessionCustomizerClass)).customize(session);
+                    PrivilegedAccessHelper.newInstanceFromClass(sessionCustomizerClass).customize(session);
                 }
             } catch (Exception exception) {
                 throw SessionLoaderException.failedToLoadTag("session-customizer-class", sessionCustomizerClassName, exception);
@@ -342,6 +343,7 @@
      * Load a projectConfig from the session.xml file. This method will determine
      * the proper loading scheme, that is, for a class or xml project.
      */
+    @SuppressWarnings({"unchecked"})
     protected Project loadProjectConfig(ProjectConfig projectConfig) {
         Project project = null;
         String projectString = projectConfig.getProjectString().trim();
@@ -349,9 +351,9 @@
         if (projectConfig.isProjectClassConfig()) {
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    project = (Project) AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(m_classLoader.loadClass(projectString)));
+                    project = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>((Class<Project>) m_classLoader.loadClass(projectString)));
                 }else{
-                    project = (Project) PrivilegedAccessHelper.newInstanceFromClass(m_classLoader.loadClass(projectString));
+                    project = PrivilegedAccessHelper.newInstanceFromClass((Class<Project>)m_classLoader.loadClass(projectString));
                 }
             } catch (Exception exception) {
                 throw SessionLoaderException.failedToLoadProjectClass(projectString, exception);
@@ -403,12 +405,13 @@
         String specClassName = eisLoginConfig.getConnectionSpecClass();
         if (specClassName != null) {
             try {
-                Class specClass = m_classLoader.loadClass(specClassName);
+                @SuppressWarnings({"unchecked"})
+                Class<EISConnectionSpec> specClass = (Class<EISConnectionSpec>) m_classLoader.loadClass(specClassName);
                 EISConnectionSpec spec = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    spec = (EISConnectionSpec)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(specClass));
+                    spec = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(specClass));
                 }else{
-                    spec = (EISConnectionSpec)PrivilegedAccessHelper.newInstanceFromClass(specClass);
+                    spec = PrivilegedAccessHelper.newInstanceFromClass(specClass);
                 }
                 eisLogin.setConnectionSpec(spec);
             } catch (Exception exception) {
@@ -454,7 +457,7 @@
         String driverClassName = databaseLoginConfig.getDriverClass();
         if (driverClassName != null) {
             try {
-                Class driverClass = m_classLoader.loadClass(driverClassName);
+                Class<?> driverClass = m_classLoader.loadClass(driverClassName);
                 databaseLogin.setDriverClass(driverClass);
             } catch (Exception exception) {
                 throw SessionLoaderException.failedToLoadTag("driver-class", driverClassName, exception);
@@ -543,25 +546,26 @@
     /**
      * INTERNAL:
      */
+    @SuppressWarnings({"unchecked"})
     protected void processStructConverterConfig(StructConverterConfig converterClassConfig, DatabaseLogin login) {
         if (converterClassConfig != null) {
             Platform platform = login.getDatasourcePlatform();
             if (platform instanceof DatabasePlatform){
-                Iterator i = converterClassConfig.getStructConverterClasses().iterator();
+                Iterator<String> i = converterClassConfig.getStructConverterClasses().iterator();
 
                 while (i.hasNext()) {
                     String converterClassName = (String)i.next();
                     try {
-                        Class converterClass = m_classLoader.loadClass(converterClassName);
+                        Class<StructConverter> converterClass = (Class<StructConverter>) m_classLoader.loadClass(converterClassName);
                         StructConverter converter = null;
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                             try{
-                                converter = (StructConverter)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(converterClass));
+                                converter = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(converterClass));
                             }catch (PrivilegedActionException ex){
                                 throw (Exception)ex.getCause();
                             }
                         }else{
-                            converter = (StructConverter)PrivilegedAccessHelper.newInstanceFromClass(converterClass);
+                            converter = PrivilegedAccessHelper.newInstanceFromClass(converterClass);
                         }
                         ((DatabasePlatform)platform).addStructConverter(converter);
                     } catch (Exception exception) {
@@ -581,11 +585,12 @@
         String platformClassName = loginConfig.getPlatformClass();
         if (platformClassName != null) {
             try {
-                Class platformClass = m_classLoader.loadClass(platformClassName);
+                @SuppressWarnings({"unchecked"})
+                Class<DatasourcePlatform> platformClass = (Class<DatasourcePlatform>) m_classLoader.loadClass(platformClassName);
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    login.usePlatform((DatasourcePlatform)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(platformClass)));
+                    login.usePlatform(AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(platformClass)));
                 }else{
-                    login.usePlatform((DatasourcePlatform)PrivilegedAccessHelper.newInstanceFromClass(platformClass));
+                    login.usePlatform(PrivilegedAccessHelper.newInstanceFromClass(platformClass));
                 }
             } catch (Exception exception) {
                 throw SessionLoaderException.failedToLoadTag("platform-class", platformClassName, exception);
@@ -736,13 +741,14 @@
         // Server class - XML schema default is org.eclipse.persistence.platform.server.CustomServerPlatform
         String serverClassName = platformConfig.getServerClassName();
         try {
-            Class serverClass = m_classLoader.loadClass(serverClassName);
+            @SuppressWarnings({"unchecked"})
+            Class<ServerPlatform> serverClass = (Class<ServerPlatform>) m_classLoader.loadClass(serverClassName);
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(serverClass, new Class[] { org.eclipse.persistence.sessions.DatabaseSession.class }, false));
-                platform = (ServerPlatform)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, new Object[] { session }));
+                Constructor<ServerPlatform> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(serverClass, new Class[] { org.eclipse.persistence.sessions.DatabaseSession.class }, false));
+                platform = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(constructor, new Object[] { session }));
             }else{
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(serverClass, new Class[] { org.eclipse.persistence.sessions.DatabaseSession.class }, false);
-                platform = (ServerPlatform)PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] { session });
+                Constructor<ServerPlatform> constructor = PrivilegedAccessHelper.getConstructorFor(serverClass, new Class[] { org.eclipse.persistence.sessions.DatabaseSession.class }, false);
+                platform = PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] { session });
             }
         } catch (Exception e) {
             throw SessionLoaderException.failedToLoadTag("server-class", serverClassName, e);
@@ -854,11 +860,12 @@
         String exceptionHandlerClassName = sessionConfig.getExceptionHandlerClass();
         if (exceptionHandlerClassName != null) {
             try {
-                Class exceptionHandlerClass = m_classLoader.loadClass(exceptionHandlerClassName);
+                @SuppressWarnings({"unchecked"})
+                Class<ExceptionHandler> exceptionHandlerClass = (Class<ExceptionHandler>) m_classLoader.loadClass(exceptionHandlerClassName);
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    session.setExceptionHandler((ExceptionHandler)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(exceptionHandlerClass)));
+                    session.setExceptionHandler(AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(exceptionHandlerClass)));
                 }else{
-                    session.setExceptionHandler((ExceptionHandler)PrivilegedAccessHelper.newInstanceFromClass(exceptionHandlerClass));
+                    session.setExceptionHandler(PrivilegedAccessHelper.newInstanceFromClass(exceptionHandlerClass));
                 }
             } catch (Exception e) {
                 throw SessionLoaderException.failedToLoadTag("exception-handler-class", exceptionHandlerClassName, e);
@@ -998,8 +1005,9 @@
         } else if (sequenceConfig instanceof XMLFileSequenceConfig) {
             try {
                 // Can no longer reference class directly as in a different project.
-                Class xmlClass = Class.forName("org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence");
-                Sequence sequence = (Sequence)xmlClass.getConstructor().newInstance();
+                @SuppressWarnings({"unchecked"})
+                Class<Sequence> xmlClass = (Class<Sequence>) Class.forName("org.eclipse.persistence.eis.adapters.xmlfile.XMLFileSequence");
+                Sequence sequence = xmlClass.getConstructor().newInstance();
                 sequence.setName(name);
                 sequence.setInitialValue(size);
                 return sequence;
@@ -1077,13 +1085,14 @@
     protected void buildOc4jJGroupsTransportManagerConfig(Oc4jJGroupsTransportManagerConfig tmConfig, RemoteCommandManager rcm) {
         TransportManager tm = null;
         try {
-            Class tmClass = m_classLoader.loadClass(tmConfig.getTransportManagerClassName());
+            @SuppressWarnings({"unchecked"})
+            Class<TransportManager> tmClass = (Class<TransportManager>) m_classLoader.loadClass(tmConfig.getTransportManagerClassName());
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(tmClass, new Class[] { RemoteCommandManager.class, boolean.class, String.class }, false));
-                tm = (TransportManager)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, new Object[] { rcm, tmConfig.useSingleThreadedNotification(), tmConfig.getTopicName() }));
+                Constructor<TransportManager> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(tmClass, new Class[] { RemoteCommandManager.class, boolean.class, String.class }, false));
+                tm = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(constructor, new Object[] { rcm, tmConfig.useSingleThreadedNotification(), tmConfig.getTopicName() }));
             }else{
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(tmClass, new Class[] { RemoteCommandManager.class, boolean.class, String.class }, false);
-                tm = (TransportManager)PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] { rcm, tmConfig.useSingleThreadedNotification(), tmConfig.getTopicName() });
+                Constructor<TransportManager> constructor = PrivilegedAccessHelper.getConstructorFor(tmClass, new Class[] { RemoteCommandManager.class, boolean.class, String.class }, false);
+                tm = PrivilegedAccessHelper.invokeConstructor(constructor, new Object[] { rcm, tmConfig.useSingleThreadedNotification(), tmConfig.getTopicName() });
             }
         } catch (Exception e) {
             throw SessionLoaderException.failedToParseXML("Oc4jJGroupsTransportManager class is invalid: " + tmConfig.getTransportManagerClassName(), e);
@@ -1106,11 +1115,12 @@
         String transportManagerClassName = tmConfig.getTransportClass();
         if (transportManagerClassName != null) {
             try {
-                Class transportManagerClass = m_classLoader.loadClass(transportManagerClassName);
+                @SuppressWarnings({"unchecked"})
+                Class<TransportManager> transportManagerClass = (Class<TransportManager>) m_classLoader.loadClass(transportManagerClassName);
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    tm = (TransportManager)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(transportManagerClass));
+                    tm = AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(transportManagerClass));
                 }else{
-                    tm = (TransportManager)PrivilegedAccessHelper.newInstanceFromClass(transportManagerClass);
+                    tm = PrivilegedAccessHelper.newInstanceFromClass(transportManagerClass);
                 }
             } catch (Exception exception) {
                 throw SessionLoaderException.failedToLoadTag("transport-class", transportManagerClassName, exception);
@@ -1201,13 +1211,14 @@
                 String listenerClassName = (String)e.nextElement();
 
                 try {
-                    Class listenerClass = m_classLoader.loadClass(listenerClassName);
+                    @SuppressWarnings({"unchecked"})
+                    Class<SessionEventListener> listenerClass = (Class<SessionEventListener>) m_classLoader.loadClass(listenerClassName);
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                        session.getEventManager().addListener((SessionEventListener)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(listenerClass)));
+                        session.getEventManager().addListener(AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(listenerClass)));
                     }else{
 
                     }
-                    session.getEventManager().addListener((SessionEventListener)PrivilegedAccessHelper.newInstanceFromClass(listenerClass));
+                    session.getEventManager().addListener(PrivilegedAccessHelper.newInstanceFromClass(listenerClass));
                 } catch (Exception exception) {
                     throw SessionLoaderException.failedToLoadTag("event-listener-class", listenerClassName, exception);
                 }
@@ -1239,7 +1250,7 @@
             // use ConversionManager to avoid loading the JDK 1.4 class unless it is needed.
             ConversionManager conversionManager = new ConversionManager();
             conversionManager.setLoader(getClass().getClassLoader());
-            javaLog = (SessionLog)((Class)conversionManager.convertObject("org.eclipse.persistence.logging.JavaLog", Class.class)).getConstructor().newInstance();
+            javaLog = ((Class<SessionLog>)conversionManager.convertObject("org.eclipse.persistence.logging.JavaLog", Class.class)).getConstructor().newInstance();
             javaLog.setSession(session);
         } catch (Exception exception) {
             throw ValidationException.unableToLoadClass("org.eclipse.persistence.logging.JavaLog", exception);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
index 4ba6b91..0b1d559 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject.java
@@ -234,7 +234,7 @@
         namespaceResolver.put("xsi", W3C_XML_SCHEMA_INSTANCE_NS_URI);
         namespaceResolver.put("xsd", W3C_XML_SCHEMA_NS_URI);
 
-        for (Iterator descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
             XMLDescriptor descriptor = (XMLDescriptor)descriptors.next();
             descriptor.setNamespaceResolver(namespaceResolver);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject_11_1_1.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject_11_1_1.java
index daf14d0..b5b1733 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject_11_1_1.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/factories/XMLSessionConfigProject_11_1_1.java
@@ -88,7 +88,7 @@
         namespaceResolver.put("xsi", W3C_XML_SCHEMA_INSTANCE_NS_URI);
         namespaceResolver.put("xsd", W3C_XML_SCHEMA_NS_URI);
 
-        for (Iterator descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
+        for (Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator(); descriptors.hasNext();) {
             XMLDescriptor descriptor = (XMLDescriptor)descriptors.next();
             descriptor.setNamespaceResolver(namespaceResolver);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteConnection.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteConnection.java
index 24c715f..da58610 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteConnection.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/sessions/remote/RemoteConnection.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -285,7 +285,7 @@
      */
     public void fixObjectReferences(Transporter remoteCursoredStream, ObjectLevelReadQuery query, DistributedSession session) {
         RemoteCursoredStream stream = (RemoteCursoredStream)remoteCursoredStream.getObject();
-        List remoteObjectCollection = stream.getObjectCollection();
+        List<Object> remoteObjectCollection = stream.getObjectCollection();
         if (query.isReadAllQuery() && (!query.isReportQuery())) {// could be DataReadQuery
             Vector clientObjectCollection = new Vector(remoteObjectCollection.size());
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/DefaultSessionLog.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/DefaultSessionLog.java
index 747f0f9..4ba6f51 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/DefaultSessionLog.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/DefaultSessionLog.java
@@ -60,7 +60,7 @@
      * Represents the Map that stores log levels per the name space strings. The
      * keys are category names. The values are log levels.
      */
-    private Map<String, Integer> categoryLogLevelMap = new HashMap();
+    private final Map<String, Integer> categoryLogLevelMap = new HashMap<>();
 
     public DefaultSessionLog() {
         super();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/JavaLog.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/JavaLog.java
index 8ad1f09..fac673b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/JavaLog.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/JavaLog.java
@@ -57,7 +57,7 @@
      * Represents the HashMap that stores all the name space strings.
      * The keys are category names.  The values are namespace strings.
      */
-    private Map nameSpaceMap  = new HashMap();
+    private final Map<String, String> nameSpaceMap  = new HashMap<>();
 
     /**
      * Stores the namespace for session, i.e."{@code org.eclipse.persistence.session.<sessionname>}".
@@ -69,7 +69,7 @@
      */
     private Logger sessionLogger;
 
-    private Map categoryloggers = new HashMap<String, Logger>();
+    private final Map<String, Logger> categoryloggers = new HashMap<>();
 
     /**
      * INTERNAL:
@@ -92,7 +92,7 @@
      * INTERNAL:
      * Return catagoryloggers
      */
-     public Map getCategoryLoggers() {
+     public Map<String, Logger> getCategoryLoggers() {
          return categoryloggers;
      }
 
@@ -160,7 +160,7 @@
     @Override
     public void setWriter(OutputStream fileOutputStream){
         StreamHandler sh = new StreamHandler(fileOutputStream,new LogFormatter());
-        ((Logger)categoryloggers.get(DEFAULT_TOPLINK_NAMESPACE)).addHandler(sh);
+        categoryloggers.get(DEFAULT_TOPLINK_NAMESPACE).addHandler(sh);
         if(sessionLogger!=null){
             sessionLogger.addHandler(sh);
         }
@@ -176,7 +176,7 @@
         } else if ((category == null) || (category.length() == 0)) {
             return sessionNameSpace;
         } else {
-            return  (String)nameSpaceMap.get(category);
+            return nameSpaceMap.get(category);
         }
     }
 
@@ -186,11 +186,11 @@
      */
     protected Logger getLogger(String category) {
         if (session == null) {
-            return (Logger)categoryloggers.get(DEFAULT_TOPLINK_NAMESPACE);
+            return categoryloggers.get(DEFAULT_TOPLINK_NAMESPACE);
         } else if ((category == null) || (category.length() == 0) || !this.categoryloggers.containsKey(category)) {
-            return (Logger) categoryloggers.get(sessionNameSpace);
+            return categoryloggers.get(sessionNameSpace);
         } else {
-            Logger logger = (Logger) categoryloggers.get(category);
+            Logger logger = categoryloggers.get(category);
             // If session != null, categoryloggers should have an entry for this category
             assert logger != null;
             return logger;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogCategory.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogCategory.java
index 1095d77..fdbd649 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogCategory.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogCategory.java
@@ -124,7 +124,7 @@
      * @param id   Logging category ID.
      * @param name Logging category name.
      */
-    private LogCategory(final byte id, final String name) {
+    LogCategory(final byte id, final String name) {
         this.id = id;
         this.name = name;
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogFormatter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogFormatter.java
index ef3f14f..cae451d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogFormatter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogFormatter.java
@@ -34,7 +34,7 @@
     Date dat = new Date();
     private final static String format = "{0,date} {0,time}";
     private MessageFormat formatter;
-    private Object[] args = new Object[1];
+    private final Object[] args = new Object[1];
 
     // Line separator string.  This is the value of the line.separator
     // property at the moment that the SimpleFormatter was created.
@@ -52,7 +52,8 @@
         } else {
             EclipseLinkLogRecord record = (EclipseLinkLogRecord)record0;
 
-            StringBuffer sb = new StringBuffer();
+            //method is synchronized
+            StringBuilder sb = new StringBuilder();
 
             if (record.shouldPrintDate()) {
                 // Minimize memory allocations here.
@@ -81,11 +82,11 @@
             }
             if (record.getConnection() != null) {
                 sb.append(" ");
-                sb.append(AbstractSessionLog.CONNECTION_STRING + "(" + String.valueOf(System.identityHashCode(record.getConnection())) + ")");
+                sb.append(AbstractSessionLog.CONNECTION_STRING + "(").append(System.identityHashCode(record.getConnection())).append(")");
             }
             if (record.shouldPrintThread()) {
                 sb.append(" ");
-                sb.append(AbstractSessionLog.THREAD_STRING + "(" + String.valueOf(record.getThreadID()) + ")");
+                sb.append(AbstractSessionLog.THREAD_STRING + "(").append(record.getThreadID()).append(")");
             }
             sb.append(lineSeparator);
             String message = formatMessage(record);
@@ -106,7 +107,7 @@
                             pw.write(lineSeparator);
                         }
                     }
-                    sb.append(sw.toString());
+                    sb.append(sw);
                 }
             }
             return sb.toString();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogLevel.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogLevel.java
index aac7988..cff8a9b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogLevel.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/LogLevel.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -87,7 +87,7 @@
     }
 
     /** Array for id to {@link LogLevel} lookup. */
-    private static final LogLevel idValues[] = new LogLevel[length];
+    private static final LogLevel[] idValues = new LogLevel[length];
 
     // Initialize id to LogLevel lookup array.
     static {
@@ -102,7 +102,7 @@
      * @return {@link LogLevel} object holding the value represented by the string argument or {@code null} when
      *         there exists no corresponding {@link LogLevel} object to provided argument value.
      */
-    public static final LogLevel toValue(final String name) {
+    public static LogLevel toValue(final String name) {
         return name != null ? stringValuesMap.get(name.toUpperCase()) : null;
     }
 
@@ -113,7 +113,7 @@
      * @return {@link LogLevel} object holding the value represented by the string argument or {@code fallBack} when
      *         there exists no corresponding {@link LogLevel} object to provided argument value.
      */
-    public static final LogLevel toValue(final String name, final LogLevel fallBack) {
+    public static LogLevel toValue(final String name, final LogLevel fallBack) {
         if (name != null) {
             final LogLevel level = stringValuesMap.get(name.toUpperCase());
             return level != null ? level : fallBack;
@@ -128,10 +128,10 @@
      * @return {@link LogLevel} object holding the value represented by the {@code id} argument.
      * @throws IllegalArgumentException when {@link LogLevel} ID is out of valid {@link LogLevel} IDs range.
      */
-    public static final LogLevel toValue(final int id) {
+    public static LogLevel toValue(final int id) {
         if (id < 0 || id >= length) {
             throw new IllegalArgumentException(
-                    "Log level ID " + id + "is out of range <0, " + Integer.toString(length) + ">.");
+                    "Log level ID " + id + "is out of range <0, " + length + ">.");
         }
         return idValues[id];
     }
@@ -144,7 +144,7 @@
      *         when provided ID is not valid {@link LogLevel} ID.
      * @throws IllegalArgumentException when {@link LogLevel} ID is out of valid {@link LogLevel} IDs range.
      */
-    public static final LogLevel toValue(final int id, final LogLevel fallBack) {
+    public static LogLevel toValue(final int id, final LogLevel fallBack) {
         if (id >= 0 && id < length) {
             return idValues[id];
         }
@@ -163,7 +163,7 @@
      * @param id   Logging level ID.
      * @param name Logging level name.
      */
-    private LogLevel(final byte id, final String name) {
+    LogLevel(final byte id, final String name) {
         this.id = id;
         this.name = name;
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/XMLLogFormatter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/XMLLogFormatter.java
index 45b2199..9737cce 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/XMLLogFormatter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/logging/XMLLogFormatter.java
@@ -138,7 +138,7 @@
 
             if (record.getConnection() != null) {
                 sb.append("  <connection>");
-                sb.append(String.valueOf(System.identityHashCode(record.getConnection())));
+                sb.append(System.identityHashCode(record.getConnection()));
                 sb.append("</connection>\n");
             }
 
@@ -161,7 +161,10 @@
             // bundle name, and params.
             ResourceBundle bundle = record.getResourceBundle();
             try {
-                if ((bundle != null) && (bundle.getString(record.getMessage()) != null)) {
+                if ((bundle != null)) {
+                    //check for missing entry in the bundle,
+                    //throws exception if not found
+                    bundle.getString(record.getMessage());
                     sb.append("  <key>");
                     escape(sb, record.getMessage());
                     sb.append("</key>\n");
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
index ccb485f..47165f1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateCollectionMapping.java
@@ -1369,7 +1369,7 @@
     public AbstractRecord getAggregateRow(ObjectLevelModifyQuery query, Object object) {
         Vector referenceObjectKeys = getReferenceObjectKeys(query);
         AbstractRecord aggregateRow = new DatabaseRecord();
-        Vector keys = getTargetForeignKeyFields();
+        Vector<DatabaseField> keys = getTargetForeignKeyFields();
         for (int keyIndex = 0; keyIndex < keys.size(); keyIndex++) {
             aggregateRow.put(keys.elementAt(keyIndex), referenceObjectKeys.elementAt(keyIndex));
         }
@@ -1387,7 +1387,7 @@
         Expression criteria = null;
         Expression builder = new ExpressionBuilder();
 
-        for (Iterator keys = getTargetForeignKeyToSourceKeys().keySet().iterator(); keys.hasNext();) {
+        for (Iterator<DatabaseField> keys = getTargetForeignKeyToSourceKeys().keySet().iterator(); keys.hasNext();) {
             DatabaseField targetForeignKey = (DatabaseField)keys.next();
             DatabaseField sourceKey = getTargetForeignKeyToSourceKeys().get(targetForeignKey);
 
@@ -1454,8 +1454,8 @@
         //For CR#2587-S.M.  For nested aggregate collections the source keys can easily be read from the original query.
         AbstractRecord translationRow = query.getTranslationRow();
 
-        for (Enumeration sourcekeys = getSourceKeyFields().elements();
-                 sourcekeys.hasMoreElements();) {
+        for (Enumeration<DatabaseField> sourcekeys = getSourceKeyFields().elements();
+             sourcekeys.hasMoreElements();) {
             DatabaseField sourceKey = (DatabaseField)sourcekeys.nextElement();
 
             // CR#2587.  Try first to get the source key from the original query.  If that fails try to get it from the object.
@@ -1478,8 +1478,8 @@
      */
     public Vector getSourceKeyFieldNames() {
         Vector fieldNames = new Vector(getSourceKeyFields().size());
-        for (Enumeration fieldsEnum = getSourceKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getSourceKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -1501,8 +1501,8 @@
      */
     public Vector getTargetForeignKeyFieldNames() {
         Vector fieldNames = new Vector(getTargetForeignKeyFields().size());
-        for (Enumeration fieldsEnum = getTargetForeignKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getTargetForeignKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -2029,7 +2029,7 @@
         Expression criteria;
         Expression builder = new ExpressionBuilder();
 
-        for (Iterator keys = getTargetForeignKeyToSourceKeys().keySet().iterator(); keys.hasNext();) {
+        for (Iterator<DatabaseField> keys = getTargetForeignKeyToSourceKeys().keySet().iterator(); keys.hasNext();) {
             DatabaseField targetForeignKey = (DatabaseField)keys.next();
             DatabaseField sourceKey = getTargetForeignKeyToSourceKeys().get(targetForeignKey);
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
index 828d56c..90b5536 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateMapping.java
@@ -377,7 +377,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        setReferenceClass(AccessController.doPrivileged(new PrivilegedClassForName(getReferenceClassName(), true, classLoader)));
+                        setReferenceClass(AccessController.doPrivileged(new PrivilegedClassForName<>(getReferenceClassName(), true, classLoader)));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getReferenceClassName(), exception.getException());
                     }
@@ -1084,8 +1084,8 @@
         if (attributeValue == null) {
             return true;
         }
-        for (Enumeration mappings = getReferenceDescriptor(attributeValue, session).getMappings().elements();
-                 mappings.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappings = getReferenceDescriptor(attributeValue, session).getMappings().elements();
+             mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (!mapping.verifyDelete(attributeValue, session)) {
                 return false;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateObjectMapping.java
index 5de646f..7149937 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/AggregateObjectMapping.java
@@ -306,7 +306,7 @@
      * row are NULL.
      */
     protected boolean allAggregateFieldsAreNull(AbstractRecord databaseRow) {
-        Vector fields = getReferenceFields();
+        Vector<DatabaseField> fields = getReferenceFields();
         int size = fields.size();
         for (int index = 0; index < size; index++) {
             DatabaseField field = (DatabaseField)fields.get(index);
@@ -554,7 +554,7 @@
         if ((value != null) && !referenceDescriptor.getJavaClass().isInstance(value)) {
             throw QueryException.incorrectClassForObjectComparison(expression, value, this);
         }
-        Enumeration mappings = referenceDescriptor.getMappings().elements();
+        Enumeration<DatabaseMapping> mappings = referenceDescriptor.getMappings().elements();
         for (; mappings.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
             if (value == null) {
@@ -581,7 +581,7 @@
         Expression attributeByAttributeComparison = null;
 
         //Enumeration mappingsEnum = getSourceToTargetKeyFields().elements();
-        Enumeration mappingsEnum = getReferenceDescriptor().getMappings().elements();
+        Enumeration<DatabaseMapping> mappingsEnum = getReferenceDescriptor().getMappings().elements();
         for (; mappingsEnum.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping)mappingsEnum.nextElement();
             String attributeName = mapping.getAttributeName();
@@ -1166,8 +1166,8 @@
      */
     public Vector<Association> getAggregateToSourceFieldAssociations() {
         Vector<Association> associations = new Vector(getAggregateToSourceFields().size());
-        Iterator aggregateEnum = getAggregateToSourceFields().keySet().iterator();
-        Iterator sourceEnum = getAggregateToSourceFields().values().iterator();
+        Iterator<String> aggregateEnum = getAggregateToSourceFields().keySet().iterator();
+        Iterator<DatabaseField> sourceEnum = getAggregateToSourceFields().values().iterator();
         while (aggregateEnum.hasNext()) {
             associations.addElement(new Association(aggregateEnum.next(), sourceEnum.next()));
         }
@@ -1613,7 +1613,7 @@
         // Use the mapping reference descriptor when initialized, otherwise find the uninitialized one.
         ClassDescriptor referencedDescriptor = getReferenceDescriptor();
         if (referencedDescriptor == null) {
-            Iterator ordered = project.getOrderedDescriptors().iterator();
+            Iterator<ClassDescriptor> ordered = project.getOrderedDescriptors().iterator();
             while (ordered.hasNext() && referencedDescriptor == null){
                 ClassDescriptor descriptor = (ClassDescriptor)ordered.next();
                 if (descriptor.getJavaClassName().equals(getReferenceClassName())){
@@ -1627,7 +1627,7 @@
             }
             // Also check subclasses.
             if (referencedDescriptor.hasInheritance()) {
-                for (Iterator iterator = referencedDescriptor.getInheritancePolicy().getChildDescriptors().iterator(); iterator.hasNext(); ) {
+                for (Iterator<ClassDescriptor> iterator = referencedDescriptor.getInheritancePolicy().getChildDescriptors().iterator(); iterator.hasNext(); ) {
                     ClassDescriptor subclassDescriptor = (ClassDescriptor)iterator.next();
                     if (!subclassDescriptor.supportsChangeTracking(project)) {
                         return false;
@@ -1758,9 +1758,9 @@
             }
             AbstractRecord aggregateRow = new DatabaseRecord();
             int size = row.size();
-            List fields = row.getFields();
+            List<DatabaseField> fields = row.getFields();
             List values = row.getValues();
-            List aggregateFields = getReferenceFields();
+            List<DatabaseField> aggregateFields = getReferenceFields();
             for(int i=0; i < size; i++) {
                 DatabaseField field = (DatabaseField)fields.get(i);
                 if(aggregateFields.contains(field)) {
@@ -1888,8 +1888,8 @@
      */
     public void setAggregateToSourceFieldAssociations(Vector<Association> fieldAssociations) {
         Hashtable fieldNames = new Hashtable(fieldAssociations.size() + 1);
-        for (Enumeration associationsEnum = fieldAssociations.elements();
-                 associationsEnum.hasMoreElements();) {
+        for (Enumeration<Association> associationsEnum = fieldAssociations.elements();
+             associationsEnum.hasMoreElements();) {
             Association association = (Association)associationsEnum.nextElement();
             fieldNames.put(association.getKey(), association.getValue());
         }
@@ -2013,7 +2013,7 @@
     protected void translateFields(ClassDescriptor clonedDescriptor, AbstractSession session) {
         // EL Bug 326977
         Vector fieldsToTranslate = (Vector) clonedDescriptor.getFields().clone();
-        for (Iterator qkIterator = clonedDescriptor.getQueryKeys().values().iterator(); qkIterator.hasNext();) {
+        for (Iterator<QueryKey> qkIterator = clonedDescriptor.getQueryKeys().values().iterator(); qkIterator.hasNext();) {
             QueryKey queryKey = (QueryKey)qkIterator.next();
             if (queryKey.isDirectQueryKey()) {
                 DatabaseField field = ((DirectQueryKey)queryKey).getField();
@@ -2023,7 +2023,7 @@
 
         // EL Bug 332080 - translate foreign reference mapping source key fields
         if (!clonedDescriptor.getObjectBuilder().isSimple()) {
-            for (Iterator dcIterator = clonedDescriptor.getMappings().iterator(); dcIterator.hasNext();) {
+            for (Iterator<DatabaseMapping> dcIterator = clonedDescriptor.getMappings().iterator(); dcIterator.hasNext();) {
                 DatabaseMapping mapping = (DatabaseMapping)dcIterator.next();
                 if (mapping.isForeignReferenceMapping()) {
                     Collection fkFields = ((ForeignReferenceMapping)mapping).getFieldsForTranslationInAggregate();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
index 71e13a7..c9e04a2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/CollectionMapping.java
@@ -1794,7 +1794,7 @@
         // no need for private owned check.  This code is only registered for private owned mappings.
         // targets are added to and/or removed to/from the source.
         CollectionChangeRecord collectionChangeRecord = (CollectionChangeRecord)changeRecord;
-        Iterator it = collectionChangeRecord.getRemoveObjectList().values().iterator();
+        Iterator<ObjectChangeSet> it = collectionChangeRecord.getRemoveObjectList().values().iterator();
         while(it.hasNext()) {
             ObjectChangeSet ocs = (ObjectChangeSet)it.next();
             containerPolicy.postCalculateChanges(ocs, referenceDescriptor, this, uow);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
index 63be30f..c6e525d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DatabaseMapping.java
@@ -562,7 +562,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            valueType = AccessController.doPrivileged(new PrivilegedClassForName(valueTypeName, true, classLoader));
+                            valueType = AccessController.doPrivileged(new PrivilegedClassForName<>(valueTypeName, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(valueTypeName, exception.getException());
                         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
index d2c24fe..9b5629b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/DirectCollectionMapping.java
@@ -955,7 +955,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        valueConverterClass = AccessController.doPrivileged(new PrivilegedClassForName(valueConverterClassName, true, classLoader));
+                        valueConverterClass = AccessController.doPrivileged(new PrivilegedClassForName<>(valueConverterClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(valueConverterClassName, exception.getException());
                     }
@@ -986,7 +986,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                         try {
-                            attributeClassification = AccessController.doPrivileged(new PrivilegedClassForName(attributeClassificationName, true, classLoader));
+                            attributeClassification = AccessController.doPrivileged(new PrivilegedClassForName<>(attributeClassificationName, true, classLoader));
                         } catch (PrivilegedActionException pae) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(attributeClassificationName, pae.getException());
                         }
@@ -1350,8 +1350,8 @@
      */
     public Vector getReferenceKeyFieldNames() {
         Vector fieldNames = new Vector(getReferenceKeyFields().size());
-        for (Enumeration fieldsEnum = getReferenceKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getReferenceKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -1417,8 +1417,8 @@
      */
     public Vector getSourceKeyFieldNames() {
         Vector fieldNames = new Vector(getSourceKeyFields().size());
-        for (Enumeration fieldsEnum = getSourceKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getSourceKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -1751,8 +1751,8 @@
         SQLInsertStatement statement = new SQLInsertStatement();
         statement.setTable(getReferenceTable());
         AbstractRecord directRow = new DatabaseRecord();
-        for (Enumeration referenceEnum = getReferenceKeyFields().elements();
-                 referenceEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> referenceEnum = getReferenceKeyFields().elements();
+             referenceEnum.hasMoreElements();) {
             directRow.put((DatabaseField)referenceEnum.nextElement(), null);
         }
         directRow.put(getDirectField(), null);
@@ -1780,7 +1780,7 @@
             throw DescriptorException.noReferenceKeyIsSpecified(this);
         }
 
-        for (Enumeration referenceEnum = getReferenceKeyFields().elements(); referenceEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> referenceEnum = getReferenceKeyFields().elements(); referenceEnum.hasMoreElements();) {
             DatabaseField field = (DatabaseField)referenceEnum.nextElement();
 
             // Update the field first if the mapping is on a table per tenant entity.
@@ -2653,8 +2653,8 @@
     @Override
     protected void prepareTranslationRow(AbstractRecord translationRow, Object object, ClassDescriptor descriptor, AbstractSession session) {
         // Make sure that each source key field is in the translation row.
-        for (Enumeration sourceFieldsEnum = getSourceKeyFields().elements();
-                 sourceFieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> sourceFieldsEnum = getSourceKeyFields().elements();
+             sourceFieldsEnum.hasMoreElements();) {
             DatabaseField sourceKey = (DatabaseField)sourceFieldsEnum.nextElement();
             if (!translationRow.containsKey(sourceKey)) {
                 Object value = descriptor.getObjectBuilder().extractValueFromObjectForField(object, sourceKey, session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
index 06cdb86..40e490d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ForeignReferenceMapping.java
@@ -425,7 +425,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName(getReferenceClassName(), true, classLoader));
+                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getReferenceClassName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getReferenceClassName(), exception.getException());
                     }
@@ -729,7 +729,7 @@
                 }
             }
 
-            List nestedJoins = extractNestedNonAggregateExpressions(joinManager.getJoinedAttributeExpressions(), nestedQuery.getExpressionBuilder(), false);
+            List<Expression> nestedJoins = extractNestedNonAggregateExpressions(joinManager.getJoinedAttributeExpressions(), nestedQuery.getExpressionBuilder(), false);
             if (nestedJoins.size() > 0) {
                 // Recompute the joined indexes based on the nested join expressions.
                 nestedQuery.getJoinedAttributeManager().clear();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ManyToManyMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ManyToManyMapping.java
index a4e8682..207e7a9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ManyToManyMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/ManyToManyMapping.java
@@ -955,8 +955,8 @@
     @Override
     protected void prepareTranslationRow(AbstractRecord translationRow, Object object, ClassDescriptor descriptor, AbstractSession session) {
         // Make sure that each source key field is in the translation row.
-        for (Enumeration sourceFieldsEnum = getSourceKeyFields().elements();
-                 sourceFieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> sourceFieldsEnum = getSourceKeyFields().elements();
+             sourceFieldsEnum.hasMoreElements();) {
             DatabaseField sourceKey = (DatabaseField)sourceFieldsEnum.nextElement();
             if (!translationRow.containsKey(sourceKey)) {
                 Object value = descriptor.getObjectBuilder().extractValueFromObjectForField(object, sourceKey, session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToManyMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToManyMapping.java
index eb5849b..7b0a04d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToManyMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToManyMapping.java
@@ -246,8 +246,8 @@
         Expression selectionCriteria = null;
         Expression builder = new ExpressionBuilder();
 
-        for (Iterator keys = getTargetForeignKeysToSourceKeys().keySet().iterator();
-                 keys.hasNext();) {
+        for (Iterator<DatabaseField> keys = getTargetForeignKeysToSourceKeys().keySet().iterator();
+             keys.hasNext();) {
             DatabaseField targetForeignKey = (DatabaseField)keys.next();
             DatabaseField sourceKey = getTargetForeignKeysToSourceKeys().get(targetForeignKey);
 
@@ -273,9 +273,9 @@
         Expression selectionCriteria = null;
         Expression builder = new ExpressionBuilder();
 
-        Enumeration sourceKeys = getSourceKeyFields().elements();
-        for (Enumeration targetForeignKeys = getTargetForeignKeyFields().elements();
-                 targetForeignKeys.hasMoreElements();) {
+        Enumeration<DatabaseField> sourceKeys = getSourceKeyFields().elements();
+        for (Enumeration<DatabaseField> targetForeignKeys = getTargetForeignKeyFields().elements();
+             targetForeignKeys.hasMoreElements();) {
             DatabaseField targetForeignKey = (DatabaseField)targetForeignKeys.nextElement();
             DatabaseField sourceKey = (DatabaseField)sourceKeys.nextElement();
             Expression targetExpression = builder.getField(targetForeignKey);
@@ -472,8 +472,8 @@
      */
     public Vector getSourceKeyFieldNames() {
         Vector fieldNames = new Vector(getSourceKeyFields().size());
-        for (Enumeration fieldsEnum = getSourceKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getSourceKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -515,8 +515,8 @@
      */
     public Vector getTargetForeignKeyFieldNames() {
         Vector fieldNames = new Vector(getTargetForeignKeyFields().size());
-        for (Enumeration fieldsEnum = getTargetForeignKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getTargetForeignKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -734,7 +734,7 @@
             throw DescriptorException.multipleTargetForeignKeyTables(this.getDescriptor(), this, tables);
         }
 
-        List defaultTablePrimaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
+        List<DatabaseField> defaultTablePrimaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
         if(this.targetForeignKeyTable.equals(getReferenceDescriptor().getDefaultTable())) {
             this.targetPrimaryKeyFields = defaultTablePrimaryKeyFields;
         } else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToOneMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToOneMapping.java
index 9e13492..085fc05 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToOneMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/OneToOneMapping.java
@@ -156,7 +156,7 @@
      */
     @Override
     public void addFieldsForMapKey(AbstractRecord joinRow){
-        Iterator i = getForeignKeyFields().iterator();
+        Iterator<DatabaseField> i = getForeignKeyFields().iterator();
         while (i.hasNext()){
             joinRow.put((DatabaseField)i.next(), null);
         }
@@ -307,7 +307,7 @@
                     }
                 }
 
-                Iterator keyIterator = Arrays.asList(((CacheId)extractKeyFromReferenceObject(value, session)).getPrimaryKey()).iterator();
+                Iterator<Object> keyIterator = Arrays.asList(((CacheId)extractKeyFromReferenceObject(value, session)).getPrimaryKey()).iterator();
                 for (DatabaseField field : getSourceToTargetKeyFields().keySet()) {
                     Expression join = null;
                     join = base.getField(field).equal(keyIterator.next());
@@ -379,8 +379,8 @@
         Expression foreignKeyJoin = null;
         if(this.mechanism == null) {
             if (expression==argument){
-                for (Iterator sourceFieldsEnum = getSourceToTargetKeyFields().keySet().iterator();
-                         sourceFieldsEnum.hasNext();) {
+                for (Iterator<DatabaseField> sourceFieldsEnum = getSourceToTargetKeyFields().keySet().iterator();
+                     sourceFieldsEnum.hasNext();) {
                     DatabaseField field = (DatabaseField)sourceFieldsEnum.next();
                     Expression join = base.getField(field);
                     join = join.equal(join);
@@ -391,9 +391,9 @@
                     }
                 }
             }else{
-                Iterator targetFieldsEnum = getSourceToTargetKeyFields().values().iterator();
-                for (Iterator sourceFieldsEnum = getSourceToTargetKeyFields().keySet().iterator();
-                         sourceFieldsEnum.hasNext();) {
+                Iterator<DatabaseField> targetFieldsEnum = getSourceToTargetKeyFields().values().iterator();
+                for (Iterator<DatabaseField> sourceFieldsEnum = getSourceToTargetKeyFields().keySet().iterator();
+                     sourceFieldsEnum.hasNext();) {
                     DatabaseField sourceField = (DatabaseField)sourceFieldsEnum.next();
                     DatabaseField targetField = (DatabaseField)targetFieldsEnum.next();
                     Expression join = null;
@@ -750,7 +750,7 @@
      */
     @Override
     public Object extractPrimaryKeysForReferenceObjectFromRow(AbstractRecord row) {
-        List primaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields();
         Object[] result = new  Object[primaryKeyFields.size()];
         for (int index = 0; index < primaryKeyFields.size(); index++) {
             DatabaseField targetKeyField = (DatabaseField)primaryKeyFields.get(index);
@@ -919,8 +919,8 @@
      */
     public Vector getForeignKeyFieldNames() {
         Vector fieldNames = new Vector(getForeignKeyFields().size());
-        for (Enumeration fieldsEnum = getForeignKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getForeignKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -999,7 +999,7 @@
      * as the corresponding primary key fields are in their descriptor.
      */
     public Vector getOrderedForeignKeyFields() {
-        List primaryKeyFields = getPrimaryKeyDescriptor().getPrimaryKeyFields();
+        List<DatabaseField> primaryKeyFields = getPrimaryKeyDescriptor().getPrimaryKeyFields();
         Vector result = new Vector(primaryKeyFields.size());
 
         for (int index = 0; index < primaryKeyFields.size(); index++) {
@@ -1051,8 +1051,8 @@
      */
     public Vector getSourceToTargetKeyFieldAssociations() {
         Vector associations = new Vector(getSourceToTargetKeyFields().size());
-        Iterator sourceFieldEnum = getSourceToTargetKeyFields().keySet().iterator();
-        Iterator targetFieldEnum = getSourceToTargetKeyFields().values().iterator();
+        Iterator<DatabaseField> sourceFieldEnum = getSourceToTargetKeyFields().keySet().iterator();
+        Iterator<DatabaseField> targetFieldEnum = getSourceToTargetKeyFields().values().iterator();
         while (sourceFieldEnum.hasNext()) {
             Object fieldValue = ((DatabaseField)sourceFieldEnum.next()).getQualifiedName();
             Object attributeValue = ((DatabaseField)targetFieldEnum.next()).getQualifiedName();
@@ -1404,7 +1404,7 @@
                 throw DescriptorException.noForeignKeysAreSpecified(this);
             }
 
-            for (Iterator keys = getSourceToTargetKeyFields().keySet().iterator(); keys.hasNext();) {
+            for (Iterator<DatabaseField> keys = getSourceToTargetKeyFields().keySet().iterator(); keys.hasNext();) {
                 DatabaseField foreignKey = (DatabaseField)keys.next();
                 DatabaseField targetKey = getSourceToTargetKeyFields().get(foreignKey);
 
@@ -1449,7 +1449,7 @@
         ClassDescriptor descriptor = getReferenceDescriptor();
         AbstractRecord targetRow = new DatabaseRecord();
 
-        for (Iterator keys = getSourceToTargetKeyFields().keySet().iterator(); keys.hasNext();) {
+        for (Iterator<DatabaseField> keys = getSourceToTargetKeyFields().keySet().iterator(); keys.hasNext();) {
             DatabaseField foreignKey = (DatabaseField)keys.next();
             DatabaseField targetKey = getSourceToTargetKeyFields().get(foreignKey);
 
@@ -1764,7 +1764,7 @@
     @Override
     public void writeFromAttributeIntoRow(Object attribute, AbstractRecord row, AbstractSession session)
     {
-          for (Enumeration fieldsEnum = getForeignKeyFields().elements(); fieldsEnum.hasMoreElements();) {
+          for (Enumeration<DatabaseField> fieldsEnum = getForeignKeyFields().elements(); fieldsEnum.hasMoreElements();) {
                   DatabaseField sourceKey = (DatabaseField) fieldsEnum.nextElement();
                   DatabaseField targetKey = getSourceToTargetKeyFields().get(sourceKey);
                   Object referenceValue = null;
@@ -2078,8 +2078,8 @@
             return;
         }
 
-        for (Enumeration fieldsEnum = getForeignKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getForeignKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             DatabaseField sourceKey = (DatabaseField)fieldsEnum.nextElement();
             databaseRow.add(sourceKey, null);
         }
@@ -2095,7 +2095,7 @@
             return;
         }
 
-        for (Enumeration fieldsEnum = getForeignKeyFields().elements(); fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getForeignKeyFields().elements(); fieldsEnum.hasMoreElements();) {
             DatabaseField sourceKey = (DatabaseField)fieldsEnum.nextElement();
 
             if (shouldWriteField(sourceKey, WriteType.INSERT)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/RelationTableMechanism.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/RelationTableMechanism.java
index 6b418f8..f577eb3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/RelationTableMechanism.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/RelationTableMechanism.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -316,8 +316,8 @@
      */
     public Vector getSourceKeyFieldNames() {
         Vector fieldNames = new Vector(getSourceKeyFields().size());
-        for (Enumeration fieldsEnum = getSourceKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getSourceKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -417,8 +417,8 @@
      */
     public Vector getSourceRelationKeyFieldNames() {
         Vector fieldNames = new Vector(getSourceRelationKeyFields().size());
-        for (Enumeration fieldsEnum = getSourceRelationKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getSourceRelationKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -440,8 +440,8 @@
      */
     public Vector getTargetKeyFieldNames() {
         Vector fieldNames = new Vector(getTargetKeyFields().size());
-        for (Enumeration fieldsEnum = getTargetKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getTargetKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -475,8 +475,8 @@
      */
     public Vector getTargetRelationKeyFieldNames() {
         Vector fieldNames = new Vector(getTargetRelationKeyFields().size());
-        for (Enumeration fieldsEnum = getTargetRelationKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getTargetRelationKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -733,7 +733,7 @@
             throw DescriptorException.noSourceRelationKeysSpecified(mapping);
         }
 
-        for (Enumeration entry = getSourceRelationKeyFields().elements(); entry.hasMoreElements();) {
+        for (Enumeration<DatabaseField> entry = getSourceRelationKeyFields().elements(); entry.hasMoreElements();) {
             DatabaseField field = (DatabaseField)entry.nextElement();
 
             // Update the fields table first if the mapping is from a table per tenant entity.
@@ -780,7 +780,7 @@
             throw DescriptorException.noTargetRelationKeysSpecified(mapping);
         }
 
-        for (Enumeration targetEnum = getTargetRelationKeyFields().elements(); targetEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> targetEnum = getTargetRelationKeyFields().elements(); targetEnum.hasMoreElements();) {
             DatabaseField field = (DatabaseField)targetEnum.nextElement();
 
             // Update the fields table first if the mapping is from a table per tenant entity.
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/UnidirectionalOneToManyMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/UnidirectionalOneToManyMapping.java
index 5f3294e..a605bb5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/UnidirectionalOneToManyMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/UnidirectionalOneToManyMapping.java
@@ -245,7 +245,7 @@
     public void postCalculateChanges(org.eclipse.persistence.sessions.changesets.ChangeRecord changeRecord, UnitOfWorkImpl uow) {
         // targets are added to and/or removed to/from the source.
         CollectionChangeRecord collectionChangeRecord = (CollectionChangeRecord)changeRecord;
-        Iterator it = collectionChangeRecord.getAddObjectList().values().iterator();
+        Iterator<ObjectChangeSet> it = collectionChangeRecord.getAddObjectList().values().iterator();
         while(it.hasNext()) {
             ObjectChangeSet change = (ObjectChangeSet)it.next();
             if(!change.hasChanges()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
index fa28eba..e534ab9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/VariableOneToOneMapping.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -194,7 +194,7 @@
             sourceToTarget.put(clonedField, getSourceToTargetQueryKeyNames().get(field));
         }
 
-        for (Enumeration enumtr = getForeignKeyFields().elements(); enumtr.hasMoreElements();) {
+        for (Enumeration<DatabaseField> enumtr = getForeignKeyFields().elements(); enumtr.hasMoreElements();) {
             DatabaseField field = (DatabaseField)enumtr.nextElement();
             foreignKeys.addElement(setOfKeys.get(field));
         }
@@ -323,7 +323,7 @@
             return null;
         }
         // Search any of the implementor descriptors for a mapping for the query-key.
-        Iterator iterator = getReferenceDescriptor().getInterfacePolicy().getChildDescriptors().iterator();
+        Iterator<ClassDescriptor> iterator = getReferenceDescriptor().getInterfacePolicy().getChildDescriptors().iterator();
         if (iterator.hasNext()) {
             ClassDescriptor firstChild = (ClassDescriptor)iterator.next();
             DatabaseMapping mapping = firstChild.getObjectBuilder().getMappingForAttributeName(queryKey);
@@ -345,8 +345,8 @@
      */
     public Vector getForeignKeyFieldNames() {
         Vector fieldNames = new Vector(getForeignKeyFields().size());
-        for (Enumeration fieldsEnum = getForeignKeyFields().elements();
-                 fieldsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseField> fieldsEnum = getForeignKeyFields().elements();
+             fieldsEnum.hasMoreElements();) {
             fieldNames.addElement(((DatabaseField)fieldsEnum.nextElement()).getQualifiedName());
         }
 
@@ -475,7 +475,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName(referenceClassName, true, classLoader));
+                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName<>(referenceClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(referenceClassName, exception.getException());
                     }
@@ -822,7 +822,7 @@
             return;
         }
         if (isForeignKeyRelationship()) {
-            Enumeration foreignKeys = getForeignKeyFields().elements();
+            Enumeration<DatabaseField> foreignKeys = getForeignKeyFields().elements();
             while (foreignKeys.hasMoreElements()) {
                 record.put((DatabaseField)foreignKeys.nextElement(), null);
                 // EL Bug 319759 - if a field is null, then the update call cache should not be used
@@ -853,7 +853,7 @@
             writeFromNullObjectIntoRow(record);
         } else {
             if (isForeignKeyRelationship()) {
-                Enumeration sourceFields = getForeignKeyFields().elements();
+                Enumeration<DatabaseField> sourceFields = getForeignKeyFields().elements();
                 ClassDescriptor descriptor = session.getDescriptor(referenceObject.getClass());
                 while (sourceFields.hasMoreElements()) {
                     DatabaseField sourceKey = (DatabaseField)sourceFields.nextElement();
@@ -894,7 +894,7 @@
         } else {
             Object referenceObject = changeSet.getUnitOfWorkClone();
             if (isForeignKeyRelationship()) {
-                Enumeration sourceFields = getForeignKeyFields().elements();
+                Enumeration<DatabaseField> sourceFields = getForeignKeyFields().elements();
                 ClassDescriptor descriptor = session.getDescriptor(referenceObject.getClass());
                 while (sourceFields.hasMoreElements()) {
                     DatabaseField sourceKey = (DatabaseField)sourceFields.nextElement();
@@ -972,7 +972,7 @@
             writeFromNullObjectIntoRow(record);
         } else {
             if (isForeignKeyRelationship()) {
-                Enumeration sourceFields = getForeignKeyFields().elements();
+                Enumeration<DatabaseField> sourceFields = getForeignKeyFields().elements();
                 ClassDescriptor descriptor = query.getSession().getDescriptor(referenceObject.getClass());
                 while (sourceFields.hasMoreElements()) {
                     DatabaseField sourceKey = (DatabaseField)sourceFields.nextElement();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ClassInstanceConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ClassInstanceConverter.java
index a05630b..972c756 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ClassInstanceConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ClassInstanceConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -52,7 +52,7 @@
     public Object convertDataValueToObjectValue(Object fieldValue, Session session) {
         Object attributeValue = null;
         if (fieldValue != null) {
-            Class attributeClass = (Class) session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
+            Class attributeClass = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.CLASS);
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ConverterClass.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ConverterClass.java
index 492b259..ef6a3cb 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ConverterClass.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ConverterClass.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2019 Payara Services Ltd.
  *
  * This program and the accompanying materials are made available under the
@@ -122,17 +122,16 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
     private Class<T> getAttributeConverterClass(ClassLoader classLoader) {
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
-                    return AccessController.doPrivileged(new PrivilegedClassForName(attributeConverterClassName, true, classLoader));
+                    return AccessController.doPrivileged(new PrivilegedClassForName<T>(attributeConverterClassName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(attributeConverterClassName, exception.getException());
                 }
             } else {
-                return PrivilegedAccessHelper.getClassForName(attributeConverterClassName, true, classLoader);
+                return PrivilegedAccessHelper.<T>getClassForName(attributeConverterClassName, true, classLoader);
             }
         } catch (ClassNotFoundException exception) {
             throw ValidationException.classNotFoundWhileConvertingClassNames(attributeConverterClassName, exception);
@@ -143,7 +142,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    fieldClassification = AccessController.doPrivileged(new PrivilegedClassForName(fieldClassificationName, true, classLoader));
+                    fieldClassification = AccessController.doPrivileged(new PrivilegedClassForName<>(fieldClassificationName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(fieldClassificationName, exception.getException());
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/EnumTypeConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/EnumTypeConverter.java
index 19f32b0..f1d3868 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/EnumTypeConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/EnumTypeConverter.java
@@ -117,7 +117,7 @@
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
                         m_enumClass = AccessController.doPrivileged(
-                            new PrivilegedClassForName(m_enumClassName, true, classLoader));
+                            new PrivilegedClassForName<>(m_enumClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(
                             m_enumClassName, exception.getException());
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ObjectTypeConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ObjectTypeConverter.java
index eac8609..618d1b3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ObjectTypeConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/ObjectTypeConverter.java
@@ -197,7 +197,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    return AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                    return AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                 } catch (PrivilegedActionException e) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(className, e.getException());
                 }
@@ -418,7 +418,7 @@
     private Object initObject(Class type, String value, boolean isData) {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             try {
-                Constructor constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(type, new Class[] {String.class}, false));
+                Constructor<Class<?>> constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(type, new Class[] {String.class}, false));
                 return AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, new Object[] {value}));
             } catch (PrivilegedActionException exception) {
                 throwInitObjectException(exception, type, value, isData);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/SerializedObjectConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/SerializedObjectConverter.java
index 34469b1..3857e6d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/SerializedObjectConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/SerializedObjectConverter.java
@@ -96,7 +96,7 @@
             if (this.serializerClassName != null) {
                 Class serializerClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                    serializerClass = AccessController.doPrivileged(new PrivilegedClassForName(this.serializerClassName, true, classLoader));
+                    serializerClass = AccessController.doPrivileged(new PrivilegedClassForName<>(this.serializerClassName, true, classLoader));
                 } else {
                     serializerClass = PrivilegedAccessHelper.getClassForName(this.serializerClassName, true, classLoader);
                 }
@@ -133,7 +133,7 @@
         } else if (this.serializer.getType() == ClassConstants.STRING) {
             String text;
             try {
-                text = (String) session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.STRING);
+                text = session.getDatasourcePlatform().convertObject(fieldValue, ClassConstants.STRING);
             } catch (ConversionException exception) {
                 throw ConversionException.couldNotBeConverted(this.mapping, this.mapping.getDescriptor(), exception);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/TypeConversionConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/TypeConversionConverter.java
index 7675482..1666123 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/TypeConversionConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/converters/TypeConversionConverter.java
@@ -78,7 +78,7 @@
             if (dataClassName != null){
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        dataClass = AccessController.doPrivileged(new PrivilegedClassForName(dataClassName, true, classLoader));
+                        dataClass = AccessController.doPrivileged(new PrivilegedClassForName<>(dataClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(dataClassName, exception.getException());
                     }
@@ -94,7 +94,7 @@
             if (objectClassName != null){
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        objectClass = AccessController.doPrivileged(new PrivilegedClassForName(objectClassName, true, classLoader));
+                        objectClass = AccessController.doPrivileged(new PrivilegedClassForName<>(objectClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(objectClassName, exception.getException());
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
index d010594..437974e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractColumnMapping.java
@@ -148,7 +148,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        converterClass = AccessController.doPrivileged(new PrivilegedClassForName(converterClassName, true, classLoader));
+                        converterClass = AccessController.doPrivileged(new PrivilegedClassForName<>(converterClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(converterClassName, exception.getException());
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractDirectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractDirectMapping.java
index 7a68602..52aabcc 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractDirectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractDirectMapping.java
@@ -463,7 +463,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        attributeClass = AccessController.doPrivileged(new PrivilegedClassForName(getAttributeClassificationName(), true, classLoader));
+                        attributeClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getAttributeClassificationName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(getAttributeClassificationName(), exception.getException());
                     }
@@ -481,7 +481,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        fieldClassification = AccessController.doPrivileged(new PrivilegedClassForName(fieldClassificationClassName, true, classLoader));
+                        fieldClassification = AccessController.doPrivileged(new PrivilegedClassForName<>(fieldClassificationClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(fieldClassificationClassName, exception.getException());
                     }
@@ -952,7 +952,7 @@
             }
         }
 
-        Map nullValues = session.getPlatform(this.descriptor.getJavaClass()).getConversionManager().getDefaultNullValues();
+        Map<Class<?>, Object> nullValues = session.getPlatform(this.descriptor.getJavaClass()).getConversionManager().getDefaultNullValues();
         bypassDefaultNullValueCheck = (!this.attributeClassification.isPrimitive()) &&
                 ((nullValues == null) || (!nullValues.containsKey(this.attributeClassification)));
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
index 1d207ee..cac226d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/foundation/AbstractTransformationMapping.java
@@ -559,7 +559,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        attributeTransformerClass = AccessController.doPrivileged(new PrivilegedClassForName(attributeTransformerClassName, true, classLoader));
+                        attributeTransformerClass = AccessController.doPrivileged(new PrivilegedClassForName<>(attributeTransformerClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(attributeTransformerClassName, exception.getException());
                     }
@@ -584,7 +584,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                         try {
-                            transformerClass = AccessController.doPrivileged(new PrivilegedClassForName(transformerClassName, true, classLoader));
+                            transformerClass = AccessController.doPrivileged(new PrivilegedClassForName<>(transformerClassName, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(transformerClassName, exception.getException());
                         }
@@ -802,7 +802,7 @@
      */
     public Hashtable getFieldNameToMethodNames() {
         Hashtable table = new Hashtable(getFieldTransformations().size());
-        Iterator transformations = getFieldTransformations().iterator();
+        Iterator<FieldTransformation> transformations = getFieldTransformations().iterator();
         while (transformations.hasNext()) {
             FieldTransformation transformation = (FieldTransformation)transformations.next();
             if (transformation instanceof MethodBasedFieldTransformation) {
@@ -850,7 +850,7 @@
                 } else if (field.getColumnDefinition() != null) {
                     // Search for the type for this field definition.
                     if (session.getDatasourcePlatform() instanceof DatabasePlatform) {
-                        Iterator iterator = session.getPlatform().getFieldTypes().entrySet().iterator();
+                        Iterator<Map.Entry<Class, FieldTypeDefinition>> iterator = session.getPlatform().getFieldTypes().entrySet().iterator();
                         while (iterator.hasNext()) {
                             Map.Entry entry = (Map.Entry)iterator.next();
                             if (((FieldTypeDefinition)entry.getValue()).getName().equals(field.getColumnDefinition())) {
@@ -1161,7 +1161,7 @@
      */
     public Vector getFieldNameToMethodNameAssociations() {
         Vector associations = new Vector();
-        for (Iterator source = getFieldTransformations().iterator(); source.hasNext();) {
+        for (Iterator<FieldTransformation> source = getFieldTransformations().iterator(); source.hasNext();) {
             FieldTransformation tf = (FieldTransformation)source.next();
             if (tf instanceof MethodBasedFieldTransformation) {
                 Association ass = new Association();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/querykeys/ForeignReferenceQueryKey.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/querykeys/ForeignReferenceQueryKey.java
index 7aef98a..4ec7f0e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/querykeys/ForeignReferenceQueryKey.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/mappings/querykeys/ForeignReferenceQueryKey.java
@@ -58,7 +58,7 @@
             if (referenceClassName != null){
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName(referenceClassName, true, classLoader));
+                        referenceClass = AccessController.doPrivileged(new PrivilegedClassForName<>(referenceClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(referenceClassName, exception.getException());
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLContext.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLContext.java
index 2537d03..f720116 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLContext.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLContext.java
@@ -454,7 +454,7 @@
     */
     public void applyORMMetadata(AbstractSession ormSession) {
         //Iterate over the ORM descriptors and check for matching OXM descriptors
-        Iterator ormDescriptors = ormSession.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> ormDescriptors = ormSession.getDescriptors().values().iterator();
         while(ormDescriptors.hasNext()) {
             ClassDescriptor ormDescriptor = (ClassDescriptor)ormDescriptors.next();
             Class javaClass = ormDescriptor.getJavaClass();
@@ -732,7 +732,7 @@
          */
         private void addSession(DatabaseSession sessionToAdd) {
             if ((sessionToAdd.getDatasourceLogin() == null) || !(sessionToAdd.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) {
-                XMLPlatform platform = new SAXPlatform();
+                XMLPlatform<org.eclipse.persistence.internal.oxm.XMLUnmarshaller> platform = new SAXPlatform();
                 sessionToAdd.setLogin(new XMLLogin(platform));
             }
             DatabaseSession session = sessionToAdd.getProject().createDatabaseSession();
@@ -772,7 +772,7 @@
                 dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, privilegedGetClassLoaderForClass(this.getClass()), false, false, false);
             }
             if ((dbSession.getDatasourceLogin() == null) || !(dbSession.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) {
-                XMLPlatform platform = new SAXPlatform();
+                XMLPlatform<org.eclipse.persistence.internal.oxm.XMLUnmarshaller> platform = new SAXPlatform();
                 dbSession.setLogin(new XMLLogin(platform));
             }
             DatabaseSession session = dbSession.getProject().createDatabaseSession();
@@ -896,7 +896,7 @@
         @Override
         protected void preLogin(Project project, ClassLoader classLoader) {
             if ((project.getDatasourceLogin() == null) || !(project.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) {
-                XMLPlatform platform = new SAXPlatform();
+                XMLPlatform<org.eclipse.persistence.internal.oxm.XMLUnmarshaller> platform = new SAXPlatform();
                 platform.getConversionManager().setLoader(classLoader);
                 project.setLogin(new XMLLogin(platform));
             }
@@ -905,7 +905,7 @@
         private void setupDocumentPreservationPolicy(DatabaseSession session) {
             XMLLogin login = (XMLLogin) session.getDatasourceLogin();
             if (login.getDocumentPreservationPolicy() == null) {
-                Iterator iterator = session.getProject().getOrderedDescriptors().iterator();
+                Iterator<ClassDescriptor> iterator = session.getProject().getOrderedDescriptors().iterator();
                 while (iterator.hasNext()) {
                     Descriptor xmlDescriptor = (Descriptor) iterator.next();
                     if (xmlDescriptor.shouldPreserveDocument()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLDescriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLDescriptor.java
index d2d1013..9c5d5f2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLDescriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLDescriptor.java
@@ -583,7 +583,7 @@
         setInitializationStage(PREINITIALIZED);
 
         // Allow mapping pre init, must be done before validate.
-        for (Enumeration mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
             try {
                 DatabaseMapping mapping = (DatabaseMapping) mappingsEnum.nextElement();
                 mapping.preInitialize(session);
@@ -764,7 +764,7 @@
             }
         }
 
-        for (Enumeration mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
+        for (Enumeration<DatabaseMapping> mappingsEnum = getMappings().elements(); mappingsEnum.hasMoreElements();) {
             DatabaseMapping mapping = (DatabaseMapping) mappingsEnum.nextElement();
             validateMappingType(mapping);
             mapping.initialize(session);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLMarshaller.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLMarshaller.java
index caf8fa3..90b9b47 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLMarshaller.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLMarshaller.java
@@ -147,7 +147,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             if(result instanceof ExtendedResult){
                 MarshalRecord writerRecord = ((ExtendedResult)result).createRecord();
                 if(object instanceof Collection){
@@ -374,7 +374,7 @@
                 }
             }
         }else{
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             session = context.getSession(objectClass);
             descriptor = getDescriptor(objectClass, session);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLUnionField.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLUnionField.java
index 1a6f733..3b38acc 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLUnionField.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/XMLUnionField.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -247,7 +247,7 @@
                 return theClass;
             }
         }
-        Class javaClass = conversionManager.javaType(qname);
+        Class<Object> javaClass = conversionManager.javaType(qname);
         return XMLConversionManager.getObjectClass(javaClass);
     }
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAbstractAnyMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAbstractAnyMapping.java
index 1f41c52..e6fff6f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAbstractAnyMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAbstractAnyMapping.java
@@ -36,7 +36,6 @@
 import org.eclipse.persistence.queries.ObjectBuildingQuery;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.Text;
 
 /**
  * <p><b>Purpose:</b> An abstract superclass for XMLAnyObjectMapping and XMLAnyCollectionMapping.
@@ -154,7 +153,7 @@
                 Object convertedValue = stringValue;
                 if (schemaTypeQName != null) {
                     ConversionManager conversionManager = (ConversionManager) session.getDatasourcePlatform().getConversionManager();
-                    Class theClass = conversionManager.javaType(schemaTypeQName);
+                    Class<Object> theClass = conversionManager.javaType(schemaTypeQName);
                     if (theClass != null) {
                         convertedValue = conversionManager.convertObject(convertedValue, theClass, schemaTypeQName);
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
index 971c289..8a541c3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyAttributeMapping.java
@@ -196,7 +196,7 @@
         }
         ContainerPolicy cp = getContainerPolicy();
         if (cp != null && cp.getContainerClass() == null) {
-            Class cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
+            Class<Object> cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
             cp.setContainerClass(cls);
         }
     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
index 1866fc3..17aefba 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyCollectionMapping.java
@@ -754,7 +754,7 @@
         }
         XMLDescriptor parentDesc = (XMLDescriptor) this.getDescriptor();
         XMLField field = (XMLField) this.getField();
-        Iterator mappings = parentDesc.getMappings().iterator();
+        Iterator<DatabaseMapping> mappings = parentDesc.getMappings().iterator();
         int mappingsInContext = 0;
         while (mappings.hasNext()) {
             DatabaseMapping next = (DatabaseMapping) mappings.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
index 473af49..38d71a2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLAnyObjectMapping.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -573,7 +573,7 @@
         }
         XMLDescriptor parentDesc = (XMLDescriptor) this.getDescriptor();
         XMLField field = (XMLField) this.getField();
-        Iterator mappings = parentDesc.getMappings().iterator();
+        Iterator<DatabaseMapping> mappings = parentDesc.getMappings().iterator();
         int mappingsInContext = 0;
         while (mappings.hasNext()) {
             DatabaseMapping next = (DatabaseMapping) mappings.next();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
index f180055..9f026b1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceCollectionMapping.java
@@ -346,7 +346,7 @@
     }
 
     private XMLField getFieldForName(String localName, String namespaceUri) {
-        Iterator fields = getFields().iterator();
+        Iterator<DatabaseField> fields = getFields().iterator();
         while(fields.hasNext()) {
             XMLField nextField = (XMLField)fields.next();
             XPathFragment fragment = nextField.getXPathFragment();
@@ -614,7 +614,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                        elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                     }
@@ -637,7 +637,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                        elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                     }
@@ -659,7 +659,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                            elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                         }
@@ -679,7 +679,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                            elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                         }
@@ -771,7 +771,7 @@
                  XMLBinaryDataCollectionMapping xmlMapping = new XMLBinaryDataCollectionMapping();
                  xmlMapping.setField(xmlField);
                  xmlMapping.setAttributeAccessor(temporaryAccessor);
-                 Class theClass = XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(className);
+                 Class<Object> theClass = XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(className);
                  xmlMapping.setAttributeElementClass(theClass);
                  this.choiceElementMappings.put(xmlField, xmlMapping);
                  this.choiceElementMappingsByClassName.put(className, xmlMapping);
@@ -973,7 +973,7 @@
         }
         XMLField field = new XMLField(xpath);
         XMLCompositeDirectCollectionMapping xmlMapping = new XMLCompositeDirectCollectionMapping();
-        Class theClass = ClassConstants.STRING;
+        Class<String> theClass = ClassConstants.STRING;
         xmlMapping.setAttributeElementClass(theClass);
         xmlMapping.setField(field);
         xmlMapping.setAttributeAccessor(temporaryAccessor);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
index 4f6982f..3240233 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLChoiceObjectMapping.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -269,7 +269,7 @@
     @Override
     public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) throws DescriptorException {
         Object value = getAttributeValueFromObject(object);
-        Class valueClass = value.getClass();
+        Class<? extends Object> valueClass = value.getClass();
         if(valueClass == XMLRoot.class) {
             //look for a nested mapping based on the Root's QName
             XMLRoot root = (XMLRoot)value;
@@ -508,7 +508,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                        elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                     }
@@ -532,7 +532,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                        elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                     }
@@ -555,7 +555,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                            elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                         }
@@ -578,7 +578,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                            elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                         }
@@ -598,7 +598,7 @@
                 try {
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                         try {
-                            elementType = AccessController.doPrivileged(new PrivilegedClassForName(className, true, classLoader));
+                            elementType = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, classLoader));
                         } catch (PrivilegedActionException exception) {
                             throw ValidationException.classNotFoundWhileConvertingClassNames(className, exception.getException());
                         }
@@ -691,7 +691,7 @@
              if(isBinaryType(className)) {
                  XMLBinaryDataMapping xmlMapping = new XMLBinaryDataMapping();
                  xmlMapping.setField(xmlField);
-                 Class theClass = XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(className);
+                 Class<Object> theClass = XMLConversionManager.getDefaultXMLManager().convertClassNameToClass(className);
                  xmlMapping.setAttributeClassification(theClass);
                  xmlMapping.setAttributeAccessor(temporaryAccessor);
                  if(this.choiceElementMappings.get(xmlField) == null) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCollectionReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCollectionReferenceMapping.java
index 596a6b9..6564e72 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCollectionReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCollectionReferenceMapping.java
@@ -274,7 +274,7 @@
         ContainerPolicy cp = getContainerPolicy();
         if (cp != null) {
             if (cp.getContainerClass() == null) {
-                Class cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
+                Class<Object> cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
                 cp.setContainerClass(cls);
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeCollectionMapping.java
index b1901cc..fd758f1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeCollectionMapping.java
@@ -60,7 +60,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
 
 /**
  * <p>Composite collection XML mappings map an attribute that contains a homogeneous collection of objects
@@ -326,7 +325,7 @@
         ContainerPolicy cp = getContainerPolicy();
         if (cp != null) {
             if (cp.getContainerClass() == null) {
-                Class cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
+                Class<Object> cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
                 cp.setContainerClass(cls);
             }
             if (cp instanceof MapContainerPolicy) {
@@ -620,7 +619,7 @@
             typeFragment.setNamespaceURI(namespaceURI);
             QName schemaTypeQName = new QName(namespaceURI, typeFragment.getLocalName());
             ConversionManager conversionManager = (ConversionManager) executionSession.getDatasourcePlatform().getConversionManager();
-            Class theClass = conversionManager.javaType(schemaTypeQName);
+            Class<Object> theClass = conversionManager.javaType(schemaTypeQName);
             if (theClass != null) {
                 objectToAdd = conversionManager.convertObject(stringValue, theClass, schemaTypeQName);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeDirectCollectionMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeDirectCollectionMapping.java
index e3543e9..0d9a2b2 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeDirectCollectionMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeDirectCollectionMapping.java
@@ -283,7 +283,7 @@
         ContainerPolicy cp = getContainerPolicy();
         if (cp != null) {
             if (cp.getContainerClass() == null) {
-                Class cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
+                Class<Object> cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName());
                 cp.setContainerClass(cls);
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeObjectMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeObjectMapping.java
index fb9bb72..9b5e81a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeObjectMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLCompositeObjectMapping.java
@@ -55,7 +55,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
 
 /**
  * <p>Composite object XML mappings represent a relationship between two classes.  In XML, the "owned"
@@ -610,7 +609,7 @@
 
             QName schemaTypeQName = new QName(namespaceURI, typeFragment.getLocalName());
             ConversionManager conversionManager = (ConversionManager) executionSession.getDatasourcePlatform().getConversionManager();
-            Class theClass = conversionManager.javaType(schemaTypeQName);
+            Class<Object> theClass = conversionManager.javaType(schemaTypeQName);
             if (theClass != null) {
                 toReturn = conversionManager.convertObject(stringValue, theClass, schemaTypeQName);
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLObjectReferenceMapping.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLObjectReferenceMapping.java
index 17abadf..30cef4c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLObjectReferenceMapping.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/XMLObjectReferenceMapping.java
@@ -163,7 +163,7 @@
             }
             primaryKeys.set(0, object);
         } else {
-            Vector pkFieldNames = referenceDescriptor.getPrimaryKeyFieldNames();
+            Vector<String> pkFieldNames = referenceDescriptor.getPrimaryKeyFieldNames();
             // if reference is null, create a new instance and set it on the resolver
             if (reference == null) {
                 primaryKeys = new CacheId(new Object[pkFieldNames.size()]);
@@ -302,7 +302,7 @@
      *
      */
     protected String getValueToWrite(QName schemaType, Object value, AbstractSession session) {
-        return (String) ((XMLConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, ClassConstants.STRING, schemaType);
+        return ((XMLConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, ClassConstants.STRING, schemaType);
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/converters/XMLListConverter.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/converters/XMLListConverter.java
index 8ff677b..fc9a660 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/converters/XMLListConverter.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/converters/XMLListConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -60,7 +60,7 @@
         try {
             if (getObjectClassName() != null) {
                 ClassLoader loader = session.getDatasourcePlatform().getConversionManager().getLoader();
-                Class aClass = AccessController.doPrivileged(new PrivilegedClassForName(getObjectClassName(), true, loader));
+                Class<Object> aClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getObjectClassName(), true, loader));
                 setObjectClass(aClass);
             }
         } catch (PrivilegedActionException pae) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/nullpolicy/IsSetNullPolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/nullpolicy/IsSetNullPolicy.java
index edaf678..6d8b174 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/nullpolicy/IsSetNullPolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/mappings/nullpolicy/IsSetNullPolicy.java
@@ -161,7 +161,7 @@
      */
     private boolean isSet(Object object) {
         try {
-            Boolean isSet = (Boolean) PrivilegedAccessHelper.invokeMethod(getIsSetMethod(object.getClass()), object, isSetParameters);
+            Boolean isSet = PrivilegedAccessHelper.invokeMethod(getIsSetMethod(object.getClass()), object, isSetParameters);
             return isSet;
         } catch (Exception e) {
             throw new RuntimeException(e);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JSONWriterRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JSONWriterRecord.java
index 03384f3..cd593b3 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JSONWriterRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JSONWriterRecord.java
@@ -485,7 +485,7 @@
          } else if(value.getClass() == String.class){
              //if schemaType is set and it's a numeric or boolean type don't treat as a string
              if(schemaType != null && isNumericOrBooleanType(schemaType)){
-                 String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+                 String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
                  characters(convertedValue, false, isAttribute);
              }else if(isCDATA){
                  cdata((String)value);
@@ -494,8 +494,8 @@
              }
         }else{
             ConversionManager conversionManager = getConversionManager();
-            String convertedValue = (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
-            Class theClass = conversionManager.javaType(schemaType);
+            String convertedValue = conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+            Class<Object> theClass = conversionManager.javaType(schemaType);
 
             if(schemaType == null || theClass == null){
                 if(value.getClass() == CoreClassConstants.BOOLEAN || CoreClassConstants.NUMBER.isAssignableFrom(value.getClass())){
@@ -740,7 +740,7 @@
         }
         CoreConversionManager xmlConversionManager = getSession().getDatasourcePlatform().getConversionManager();
 
-        return (String) xmlConversionManager.convertObject(qName, String.class);
+        return xmlConversionManager.convertObject(qName, String.class);
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonBuilderRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonBuilderRecord.java
index c996b5e..e7ae969 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonBuilderRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonBuilderRecord.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -137,11 +137,11 @@
             jsonObjectBuilder.add(keyName, (String)value);
         }else{
             ConversionManager conversionManager = getConversionManager();
-            String convertedValue = (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
-            Class theClass = conversionManager.javaType(schemaType);
+            String convertedValue = conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+            Class<Object> theClass = conversionManager.javaType(schemaType);
             if((schemaType == null || theClass == null) && (CoreClassConstants.NUMBER.isAssignableFrom(value.getClass()))){
                 //if it's still a number and falls through the cracks we dont want "" around the value
-                    BigDecimal convertedNumberValue = ((BigDecimal) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType));
+                    BigDecimal convertedNumberValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType);
                     jsonObjectBuilder.add(keyName, convertedNumberValue);
             }else{
                 jsonObjectBuilder.add(keyName, convertedValue);
@@ -175,11 +175,11 @@
             jsonArrayBuilder.add((String)value);
         }else{
             ConversionManager conversionManager = getConversionManager();
-            String convertedValue = (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
-            Class theClass = conversionManager.javaType(schemaType);
+            String convertedValue = conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+            Class<Object> theClass = conversionManager.javaType(schemaType);
             if((schemaType == null || theClass == null) && (CoreClassConstants.NUMBER.isAssignableFrom(value.getClass()))){
                 //if it's still a number and falls through the cracks we dont want "" around the value
-                    BigDecimal convertedNumberValue = ((BigDecimal) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType));
+                    BigDecimal convertedNumberValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType);
                     jsonArrayBuilder.add(convertedNumberValue);
             }else{
                 jsonArrayBuilder.add(convertedValue);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java
index 4bc12a9..9297087 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonGeneratorRecord.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -120,11 +120,11 @@
             jsonGenerator.write(keyName, (String)value);
         }else{
             ConversionManager conversionManager = getConversionManager();
-            String convertedValue = (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
-            Class theClass = conversionManager.javaType(schemaType);
+            String convertedValue = conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+            Class<Object> theClass = conversionManager.javaType(schemaType);
             if((schemaType == null || theClass == null) && (CoreClassConstants.NUMBER.isAssignableFrom(value.getClass()))){
                 //if it's still a number and falls through the cracks we dont want "" around the value
-                    BigDecimal convertedNumberValue = ((BigDecimal) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType));
+                    BigDecimal convertedNumberValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType);
                     jsonGenerator.write(keyName, convertedNumberValue);
             }else{
                 jsonGenerator.write(keyName, convertedValue);
@@ -157,11 +157,11 @@
             jsonGenerator.write((String)value);
         }else{
             ConversionManager conversionManager = getConversionManager();
-            String convertedValue = (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
-            Class theClass = conversionManager.javaType(schemaType);
+            String convertedValue = conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+            Class<Object> theClass = conversionManager.javaType(schemaType);
             if((schemaType == null || theClass == null) && (CoreClassConstants.NUMBER.isAssignableFrom(value.getClass()))){
                 //if it's still a number and falls through the cracks we dont want "" around the value
-                    BigDecimal convertedNumberValue = ((BigDecimal) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType));
+                    BigDecimal convertedNumberValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.BIGDECIMAL, schemaType);
                     jsonGenerator.write(convertedNumberValue);
 
             }else{
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonRecord.java
index bc80787..dba805c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/JsonRecord.java
@@ -357,15 +357,15 @@
                 if (value.getClass() == CoreClassConstants.BOOLEAN || CoreClassConstants.NUMBER.isAssignableFrom(value.getClass())) {
                     writeValue(value, schemaType, isAttribute);
                 } else {
-                    String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+                    String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
                     writeValue(convertedValue, schemaType, isAttribute);
                 }
             } else if (schemaType != null && !isNumericOrBooleanType(schemaType)) {
                 //if schemaType exists and is not boolean or number do write quotes (convert to string)
-                String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+                String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
                 writeValue(convertedValue, schemaType, isAttribute);
             } else if (isCDATA) {
-                String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+                String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
                 cdata(convertedValue);
             } else {
                 writeValue(value, schemaType, isAttribute);
@@ -508,7 +508,7 @@
         }
         CoreConversionManager xmlConversionManager = getSession().getDatasourcePlatform().getConversionManager();
 
-        return (String) xmlConversionManager.convertObject(qName, String.class);
+        return xmlConversionManager.convertObject(qName, String.class);
     }
 
     /**
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/MarshalRecord.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/MarshalRecord.java
index edcd3a0..0d1a19d 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/MarshalRecord.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/oxm/record/MarshalRecord.java
@@ -365,7 +365,7 @@
              String convertedValue = getStringForQName((QName)value);
              attribute(xPathFragment, namespaceResolver, convertedValue);
          } else{
-             String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+             String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
              attribute(xPathFragment, namespaceResolver, convertedValue);
          }
     }
@@ -389,7 +389,7 @@
             String convertedValue = getStringForQName((QName)value);
             characters(convertedValue);
         }else{
-            String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType));
+            String convertedValue = ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType);
             if(isCDATA){
                 cdata(convertedValue);
             }else{
@@ -408,7 +408,7 @@
         }else if(value.getClass() == String.class){
             return (String) value;
         }
-        return (String) conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
+        return conversionManager.convertObject(value, CoreClassConstants.STRING, schemaType);
     }
 
     protected String getStringForQName(QName qName){
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/DB2ZPlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/DB2ZPlatform.java
index eaf7649..b6e2b5c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/DB2ZPlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/DB2ZPlatform.java
@@ -158,18 +158,18 @@
     @Override
     public void registerOutputParameter(CallableStatement statement, String name, int jdbcType) throws SQLException {
         try {
-            Class clazz = null;
+            Class<?> clazz = null;
             Method method = null;
             String methodName = "registerJccOutParameterAtName";
-            Class[] methodArgs = new Class[] {String.class, int.class};
+            Class<?>[] methodArgs = (Class<?>[]) new Class[] {String.class, int.class};
             Object[] parameters = new Object[] {name, jdbcType};
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
                     ClassLoader cl = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-                    clazz = AccessController.doPrivileged(new PrivilegedClassForName(DB2_CALLABLESTATEMENT_CLASS, true, cl));
+                    clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(DB2_CALLABLESTATEMENT_CLASS, true, cl));
                     method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, methodName, methodArgs, true));
                     Object o = statement.unwrap(clazz);
-                    AccessController.doPrivileged(new PrivilegedMethodInvoker(method, o, parameters));
+                    AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, o, parameters));
                 } catch (PrivilegedActionException ex) {
                     if (ex.getCause() instanceof ClassNotFoundException) {
                         throw (ClassNotFoundException) ex.getCause();
@@ -197,18 +197,18 @@
     @Override
     public void registerOutputParameter(CallableStatement statement, String name, int jdbcType, String typeName) throws SQLException {
         try {
-            Class clazz = null;
+            Class<?> clazz = null;
             Method method = null;
             String methodName = "registerJccOutParameterAtName";
-            Class[] methodArgs = new Class[] {String.class, int.class, String.class};
+            Class<?>[] methodArgs = (Class<?>[]) new Class[] {String.class, int.class, String.class};
             Object[] parameters = new Object[] {name, jdbcType, typeName};
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
                     ClassLoader cl = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-                    clazz = AccessController.doPrivileged(new PrivilegedClassForName(DB2_CALLABLESTATEMENT_CLASS, true, cl));
+                    clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(DB2_CALLABLESTATEMENT_CLASS, true, cl));
                     method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, methodName, methodArgs, true));
                     Object o = statement.unwrap(clazz);
-                    AccessController.doPrivileged(new PrivilegedMethodInvoker(method, o, parameters));
+                    AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, o, parameters));
                 } catch (PrivilegedActionException ex) {
                     if (ex.getCause() instanceof ClassNotFoundException) {
                         throw (ClassNotFoundException) ex.getCause();
@@ -235,7 +235,7 @@
             throws SQLException {
 
         String methodName = null;
-        Class[] methodArgs = null;
+        Class<?>[] methodArgs = null;
         Object[] parameters = null;
 
         // Process common types first.
@@ -244,101 +244,101 @@
             if (usesStringBinding() && (((String)parameter).length() > getStringBindingSize())) {
                 CharArrayReader reader = new CharArrayReader(((String)parameter).toCharArray());
                 methodName = "setJccCharacterStreamAtName";
-                methodArgs = new Class[] {String.class, java.io.Reader.class, int.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, java.io.Reader.class, int.class};
                 parameters = new Object[] {name, reader, ((String)parameter).length()};
             } else {
                 //TODO find shouldUseGetSetNString() support for DB2/Z
                 methodName = "setJccStringAtName";
-                methodArgs = new Class[] {String.class, String.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, String.class};
                 parameters = new Object[] {name, parameter};
             }
         } else if (parameter instanceof Number) {
             Number number = (Number) parameter;
             if (number instanceof Integer) {
                 methodName = "setJccIntAtName";
-                methodArgs = new Class[] {String.class, int.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, int.class};
                 parameters = new Object[] {name, number.intValue()};
             } else if (number instanceof Long) {
                 methodName = "setJccLongAtName";
-                methodArgs = new Class[] {String.class, long.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, long.class};
                 parameters = new Object[] {name, number.longValue()};
             }  else if (number instanceof BigDecimal) {
                 methodName = "setJccBigDecimalAtName";
-                methodArgs = new Class[] {String.class, BigDecimal.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, BigDecimal.class};
                 parameters = new Object[] {name, number};
             } else if (number instanceof Double) {
                 methodName = "setJccDoubleAtName";
-                methodArgs = new Class[] {String.class, double.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, double.class};
                 parameters = new Object[] {name, number.doubleValue()};
             } else if (number instanceof Float) {
                 methodName = "setJccFloatAtName";
-                methodArgs = new Class[] {String.class, float.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, float.class};
                 parameters = new Object[] {name, number.floatValue()};
             } else if (number instanceof Short) {
                 methodName = "setJccShortAtName";
-                methodArgs = new Class[] {String.class, short.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, short.class};
                 parameters = new Object[] {name, number.shortValue()};
             } else if (number instanceof Byte) {
                 methodName = "setJccByteAtName";
-                methodArgs = new Class[] {String.class, byte.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, byte.class};
                 parameters = new Object[] {name, number.byteValue()};
             } else if (number instanceof BigInteger) {
                 // Convert to BigDecimal.
                 methodName = "setJccBigDecimalAtName";
-                methodArgs = new Class[] {String.class, BigDecimal.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, BigDecimal.class};
                 parameters = new Object[] {name, new BigDecimal((BigInteger) number)};
             } else {
                 methodName = "setJccObjectAtName";
-                methodArgs = new Class[] {String.class, Object.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, Object.class};
                 parameters = new Object[] {name, parameter};
             }
         } else if (parameter instanceof java.sql.Date){
             methodName = "setJccDateAtName";
-            methodArgs = new Class[] {String.class, java.sql.Date.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Date.class};
             parameters = new Object[] {name, parameter};
         } else if (parameter instanceof java.time.LocalDate){
             // Convert to java.sql.Date
             methodName = "setJccDateAtName";
-            methodArgs = new Class[] {String.class, java.sql.Date.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Date.class};
             parameters = new Object[] {name, java.sql.Date.valueOf((java.time.LocalDate) parameter)};
         } else if (parameter instanceof java.sql.Timestamp){
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, parameter};
         } else if (parameter instanceof java.time.LocalDateTime){
             // Convert to java.sql.Timestamp
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, java.sql.Timestamp.valueOf((java.time.LocalDateTime) parameter)};
         } else if (parameter instanceof java.time.OffsetDateTime) {
             // Convert to java.sql.Timestamp
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, java.sql.Timestamp.from(((java.time.OffsetDateTime) parameter).toInstant())};
         } else if (parameter instanceof java.sql.Time){
             methodName = "setJccTimeAtName";
-            methodArgs = new Class[] {String.class, java.sql.Time.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Time.class};
             parameters = new Object[] {name, parameter};
         } else if (parameter instanceof java.time.LocalTime){
             java.time.LocalTime lt = (java.time.LocalTime) parameter;
             java.sql.Timestamp ts = java.sql.Timestamp.valueOf(java.time.LocalDateTime.of(java.time.LocalDate.ofEpochDay(0), lt));
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, ts};
         } else if (parameter instanceof java.time.OffsetTime) {
             java.time.OffsetTime ot = (java.time.OffsetTime) parameter;
             java.sql.Timestamp ts = java.sql.Timestamp.valueOf(java.time.LocalDateTime.of(java.time.LocalDate.ofEpochDay(0), ot.toLocalTime()));
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, ts};
         } else if (parameter instanceof Boolean) {
             methodName = "setJccBooleanAtName";
-            methodArgs = new Class[] {String.class, boolean.class};
-            parameters = new Object[] {name, (Boolean) parameter};
+            methodArgs = (Class<?>[]) new Class[] {String.class, boolean.class};
+            parameters = new Object[] {name, parameter};
         } else if (parameter == null) {
             // Normally null is passed as a DatabaseField so the type is included, but in some case may be passed directly.
             methodName = "setJccNullAtName";
-            methodArgs = new Class[] {String.class, int.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, int.class};
             parameters = new Object[] {name, getJDBCType((Class)null)};
         } else if (parameter instanceof DatabaseField) {
             setNullFromDatabaseField((DatabaseField)parameter, statement, name);
@@ -346,42 +346,42 @@
             if (usesStreamsForBinding()) {
                 ByteArrayInputStream inputStream = new ByteArrayInputStream((byte[])parameter);
                 methodName = "setJccBinaryStreamAtName";
-                methodArgs = new Class[] {String.class, java.io.InputStream.class, int.class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, java.io.InputStream.class, int.class};
                 parameters = new Object[] {name, inputStream, ((byte[])parameter).length};
             } else {
                 methodName = "setJccBytesAtName";
-                methodArgs = new Class[] {String.class, byte[].class};
+                methodArgs = (Class<?>[]) new Class[] {String.class, byte[].class};
                 parameters = new Object[] {name, parameter};
             }
         }
         // Next process types that need conversion.
         else if (parameter instanceof Calendar) {
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, Helper.timestampFromDate(((Calendar)parameter).getTime())};
         } else if (parameter.getClass() == ClassConstants.UTILDATE) {
             methodName = "setJccTimestampAtName";
-            methodArgs = new Class[] {String.class, java.sql.Timestamp.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.Timestamp.class};
             parameters = new Object[] {name, Helper.timestampFromDate((java.util.Date) parameter)};
         } else if (parameter instanceof Character) {
             methodName = "setJccStringAtName";
-            methodArgs = new Class[] {String.class, String.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, String.class};
             parameters = new Object[] {name, ((Character)parameter).toString()};
         } else if (parameter instanceof char[]) {
             methodName = "setJccStringAtName";
-            methodArgs = new Class[] {String.class, String.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, String.class};
             parameters = new Object[] {name, new String((char[])parameter)};
         } else if (parameter instanceof Character[]) {
             methodName = "setJccStringAtName";
-            methodArgs = new Class[] {String.class, String.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, String.class};
             parameters = new Object[] {name, convertObject(parameter, ClassConstants.STRING)};
         } else if (parameter instanceof Byte[]) {
             methodName = "setJccBytesAtName";
-            methodArgs = new Class[] {String.class, byte[].class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, byte[].class};
             parameters = new Object[] {name, convertObject(parameter, ClassConstants.APBYTE)};
         } else if (parameter instanceof java.sql.SQLXML) {
             methodName = "setJccSQLXMLAtName";
-            methodArgs = new Class[] {String.class, java.sql.SQLXML.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, java.sql.SQLXML.class};
             parameters = new Object[] {name, parameter};
         } else if (parameter instanceof BindCallCustomParameter) {
             ((BindCallCustomParameter)(parameter)).set(this, statement, name, session);
@@ -389,25 +389,25 @@
             StructConverter converter = typeConverters.get(parameter.getClass());
             java.sql.Struct struct = converter.convertToStruct(parameter, getConnection(session, statement.getConnection()));
             methodName = "setJccObjectAtName";
-            methodArgs = new Class[] {String.class, Object.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, Object.class};
             parameters = new Object[] {name, struct};
         } else {
             methodName = "setJccObjectAtName";
-            methodArgs = new Class[] {String.class, Object.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, Object.class};
             parameters = new Object[] {name, parameter};
         }
 
         if(methodName != null) {
             try {
-                Class clazz = null;
+                Class<?> clazz = null;
                 Method method = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
                         ClassLoader cl = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-                        clazz = AccessController.doPrivileged(new PrivilegedClassForName(DB2_PREPAREDSTATEMENT_CLASS, true, cl));
+                        clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(DB2_PREPAREDSTATEMENT_CLASS, true, cl));
                         method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, methodName, methodArgs, true));
                         Object o = statement.unwrap(clazz);
-                        AccessController.doPrivileged(new PrivilegedMethodInvoker(method, o, parameters));
+                        AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, o, parameters));
                     } catch (PrivilegedActionException ex) {
                         if (ex.getCause() instanceof ClassNotFoundException) {
                             throw (ClassNotFoundException) ex.getCause();
@@ -432,30 +432,30 @@
     @Override
     protected void setNullFromDatabaseField(DatabaseField databaseField, CallableStatement statement, String name) throws SQLException {
         String methodName = null;
-        Class[] methodArgs = null;
+        Class<?>[] methodArgs = null;
         Object[] parameters = null;
         if (databaseField instanceof ObjectRelationalDatabaseField) {
             ObjectRelationalDatabaseField field = (ObjectRelationalDatabaseField)databaseField;
             methodName = "setJccNullAtName";
-            methodArgs = new Class[] {String.class, int.class, String.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, int.class, String.class};
             parameters = new Object[] {name, field.getSqlType(), field.getSqlTypeName()};
         } else {
             int jdbcType = getJDBCTypeForSetNull(databaseField);
             methodName = "setJccNullAtName";
-            methodArgs = new Class[] {String.class, int.class};
+            methodArgs = (Class<?>[]) new Class[] {String.class, int.class};
             parameters = new Object[] {name, jdbcType};
         }
 
         try {
-            Class clazz = null;
+            Class<?> clazz = null;
             Method method = null;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
                     ClassLoader cl = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-                    clazz = AccessController.doPrivileged(new PrivilegedClassForName(DB2_PREPAREDSTATEMENT_CLASS, true, cl));
+                    clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(DB2_PREPAREDSTATEMENT_CLASS, true, cl));
                     method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, methodName, methodArgs, true));
                     Object o = statement.unwrap(clazz);
-                    AccessController.doPrivileged(new PrivilegedMethodInvoker(method, o, parameters));
+                    AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, o, parameters));
                 } catch (PrivilegedActionException ex) {
                     if (ex.getCause() instanceof ClassNotFoundException) {
                         throw (ClassNotFoundException) ex.getCause();
@@ -480,24 +480,24 @@
     public Object getParameterValueFromDatabaseCall(CallableStatement statement, String name, AbstractSession session)
                 throws SQLException {
         String methodName = null;
-        Class[] methodArgs = null;
+        Class<?>[] methodArgs = null;
         Object[] parameters = null;
 
         methodName = "getJccObjectAtName";
-        methodArgs = new Class[] {String.class};
+        methodArgs = (Class<?>[]) new Class[] {String.class};
         parameters = new Object[] {name};
 
         if(methodName != null) {
             try {
-                Class clazz = null;
+                Class<?> clazz = null;
                 Method method = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
                         ClassLoader cl = AccessController.doPrivileged(new PrivilegedGetContextClassLoader(Thread.currentThread()));
-                        clazz = AccessController.doPrivileged(new PrivilegedClassForName(DB2_CALLABLESTATEMENT_CLASS, true, cl));
+                        clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(DB2_CALLABLESTATEMENT_CLASS, true, cl));
                         method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, methodName, methodArgs, true));
                         Object o = statement.unwrap(clazz);
-                        return AccessController.doPrivileged(new PrivilegedMethodInvoker(method, o, parameters));
+                        return AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, o, parameters));
                     } catch (PrivilegedActionException ex) {
                         if (ex.getCause() instanceof ClassNotFoundException) {
                             throw (ClassNotFoundException) ex.getCause();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/jdbc/JDBCTypes.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/jdbc/JDBCTypes.java
index 20cd96a..c31258a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/jdbc/JDBCTypes.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/jdbc/JDBCTypes.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -48,11 +48,9 @@
 import static java.sql.Types.TINYINT;
 import static java.sql.Types.VARBINARY;
 import static java.sql.Types.VARCHAR;
+import static org.eclipse.persistence.internal.core.helper.CoreClassConstants.OBJECT;
+import static org.eclipse.persistence.internal.core.helper.CoreClassConstants.SQLDATE;
 import static org.eclipse.persistence.internal.helper.ClassConstants.BIGDECIMAL;
-import static org.eclipse.persistence.internal.helper.ClassConstants.JavaSqlDate_Class;
-import static org.eclipse.persistence.internal.helper.ClassConstants.JavaSqlTime_Class;
-import static org.eclipse.persistence.internal.helper.ClassConstants.JavaSqlTimestamp_Class;
-import static org.eclipse.persistence.internal.helper.ClassConstants.Object_Class;
 import static org.eclipse.persistence.internal.helper.ClassConstants.SHORT;
 import static org.eclipse.persistence.internal.helper.ClassConstants.STRING;
 import static org.eclipse.persistence.internal.helper.ClassConstants.Void_Class;
@@ -64,6 +62,7 @@
 import java.util.List;
 import java.util.ListIterator;
 
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.internal.helper.DatabaseType;
@@ -437,16 +436,16 @@
                 case JAVA_OBJECT :
                 case OTHER :
                 case REF :
-                    clz = Object_Class;
+                    clz = OBJECT;
                     break;
                 case NULL :
                     clz = Void_Class;
                     break;
                 case DATE :
-                    clz = JavaSqlDate_Class;
+                    clz = SQLDATE;
                     break;
                 case TIMESTAMP :
-                    clz = JavaSqlTimestamp_Class;
+                    clz = CoreClassConstants.TIMESTAMP;
                     break;
                 case DOUBLE :
                     clz = ClassConstants.DOUBLE;
@@ -467,7 +466,7 @@
                     clz = Struct.class;
                     break;
                 case TIME :
-                    clz = JavaSqlTime_Class;
+                    clz = CoreClassConstants.TIME;
                     break;
                 default:
                     clz = STRING;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/oracle/plsql/PLSQLStoredProcedureCall.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/oracle/plsql/PLSQLStoredProcedureCall.java
index 8c02172..04d568b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/oracle/plsql/PLSQLStoredProcedureCall.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/oracle/plsql/PLSQLStoredProcedureCall.java
@@ -1152,7 +1152,7 @@
             return outputRow;
         }
         // re-order elements in outputRow to conform to original indices
-        Vector outputRowFields = outputRow.getFields();
+        Vector<DatabaseField> outputRowFields = outputRow.getFields();
         Vector outputRowValues = outputRow.getValues();
         DatabaseRecord newOutputRow = new DatabaseRecord();
         List<PLSQLargument> outArguments = getArguments(arguments, OUT);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/ServerPlatformUtils.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/ServerPlatformUtils.java
index 38f1c86..29ba202 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/ServerPlatformUtils.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/ServerPlatformUtils.java
@@ -109,7 +109,7 @@
         if (platformClass == null) {
             throw ServerPlatformException.invalidServerPlatformClass(null, null);
         }
-        Class cls = null;
+        Class<? extends ServerPlatform> cls = null;
         try {
             //try the supplied classloader
             cls = findClass(platformClass, loader);
@@ -132,17 +132,17 @@
         ServerPlatform platform = null;
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
             try {
-                Constructor constructor = AccessController.doPrivileged(
-                        new PrivilegedGetConstructorFor(cls, paramTypes, false));
-                platform = (ServerPlatform) AccessController.doPrivileged(
-                        new PrivilegedInvokeConstructor(constructor, params));
+                Constructor<? extends ServerPlatform> constructor = AccessController.doPrivileged(
+                        new PrivilegedGetConstructorFor<>(cls, paramTypes, false));
+                platform = AccessController.doPrivileged(
+                        new PrivilegedInvokeConstructor<>(constructor, params));
             } catch (PrivilegedActionException ex) {
                 throw ServerPlatformException.invalidServerPlatformClass(platformClass, ex);
             }
         } else {
             try {
-                Constructor constructor = PrivilegedAccessHelper.getConstructorFor(cls, paramTypes, false);
-                platform = (ServerPlatform) PrivilegedAccessHelper.invokeConstructor(constructor, params);
+                Constructor<? extends ServerPlatform> constructor = PrivilegedAccessHelper.getConstructorFor(cls, paramTypes, false);
+                platform = PrivilegedAccessHelper.invokeConstructor(constructor, params);
             } catch (NoSuchMethodException | IllegalAccessException
                     | InvocationTargetException | InstantiationException ex) {
                 throw ServerPlatformException.invalidServerPlatformClass(platformClass, ex);
@@ -151,9 +151,9 @@
         return platform;
     }
 
-    private static Class findClass(String className, ClassLoader loader) throws ClassNotFoundException, PrivilegedActionException {
+    private static Class<? extends ServerPlatform> findClass(String className, ClassLoader loader) throws ClassNotFoundException, PrivilegedActionException {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-            return AccessController.doPrivileged(new PrivilegedClassForName(className, false, loader));
+            return AccessController.doPrivileged(new PrivilegedClassForName<>(className, false, loader));
         } else {
             return PrivilegedAccessHelper.getClassForName(className, false, loader);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/glassfish/GlassfishPlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/glassfish/GlassfishPlatform.java
index afe083b..744096b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/glassfish/GlassfishPlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/glassfish/GlassfishPlatform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -132,7 +132,7 @@
         // If GlassFish behavior changes, both reflective call below should be cached.
         Connection unwrappedConnection = null;
         try {
-            Class connectionWrapperClass = connection.getClass().getClassLoader().loadClass("com.sun.gjc.spi.base.ConnectionHolder");
+            Class<?> connectionWrapperClass = connection.getClass().getClassLoader().loadClass("com.sun.gjc.spi.base.ConnectionHolder");
             if(connectionWrapperClass.isInstance(connection) ) {
                 Method unwrapMethod = connectionWrapperClass.getDeclaredMethod("getConnection");
                 unwrappedConnection = (Connection) unwrapMethod.invoke(connection);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSpherePlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSpherePlatform.java
index 2e0813f..b7e88e7 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSpherePlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSpherePlatform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -95,7 +95,7 @@
     protected Class getWebsphereUtilClass() {
         if (this.websphereUtilClass == null) {
             try {
-                this.websphereUtilClass = (Class) getDatabaseSession().getPlatform().convertObject("com.ibm.ws.rsadapter.jdbc.WSJdbcUtil", Class.class);
+                this.websphereUtilClass = getDatabaseSession().getPlatform().convertObject("com.ibm.ws.rsadapter.jdbc.WSJdbcUtil", Class.class);
             } catch (Throwable exception) {
                 getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
                 this.websphereUtilClass = void.class;
@@ -110,7 +110,7 @@
     protected Class getWebsphereConnectionClass() {
         if (this.websphereConnectionClass == null) {
             try {
-                this.websphereConnectionClass = (Class) getDatabaseSession().getPlatform().convertObject("com.ibm.ws.rsadapter.jdbc.WSJdbcConnection", Class.class);
+                this.websphereConnectionClass = getDatabaseSession().getPlatform().convertObject("com.ibm.ws.rsadapter.jdbc.WSJdbcConnection", Class.class);
             } catch (Throwable exception) {
                 getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
                 this.websphereConnectionClass = void.class;
@@ -143,7 +143,7 @@
     public Connection unwrapConnection(Connection connection) {
         if (getWebsphereConnectionClass().isInstance(connection) && getVendorConnectionMethod() != null) {
             try {
-                return (Connection) PrivilegedAccessHelper.invokeMethod(getVendorConnectionMethod(), null, new Object[]{connection});
+                return PrivilegedAccessHelper.invokeMethod(getVendorConnectionMethod(), null, new Object[]{connection});
             } catch (IllegalAccessException exception) {
                 getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
             } catch (InvocationTargetException exception) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSphere_7_Platform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSphere_7_Platform.java
index 46e423d..bc94a11 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSphere_7_Platform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/was/WebSphere_7_Platform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2018 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -90,13 +90,13 @@
                 log = AccessController.doPrivileged(new PrivilegedExceptionAction<SessionLog>() {
                     @Override
                     public SessionLog run() throws Exception {
-                        Class<?> cls = PrivilegedAccessHelper.getClassForName(SERVER_LOG_CLASS);
+                        Class<SessionLog> cls = PrivilegedAccessHelper.getClassForName(SERVER_LOG_CLASS);
                         Constructor<SessionLog> ctor = PrivilegedAccessHelper.getConstructorFor(cls, null, false);
                         return ctor.newInstance();
                     }
                 });
             } else {
-                Class<?> cls = PrivilegedAccessHelper.getClassForName(SERVER_LOG_CLASS);
+                Class<SessionLog> cls = PrivilegedAccessHelper.getClassForName(SERVER_LOG_CLASS);
                 Constructor<SessionLog> ctor = PrivilegedAccessHelper.getConstructorFor(cls, null, false);
                 log = ctor.newInstance();
             }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatform.java
index f58f6e0..8cbe733 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -85,9 +85,9 @@
     @Override
     public void initializeServerNameAndVersion() {
         try {
-            Class clazz = PrivilegedAccessHelper.getClassForName("weblogic.version");
+            Class<Object> clazz = PrivilegedAccessHelper.getClassForName("weblogic.version");
             Method method = PrivilegedAccessHelper.getMethod(clazz, "getReleaseBuildVersion", null, false);
-            this.serverNameAndVersion = (String) PrivilegedAccessHelper.invokeMethod(method, null, null);
+            this.serverNameAndVersion = PrivilegedAccessHelper.invokeMethod(method, null, null);
             this.shouldClearStatementCache = Helper.compareVersions(this.serverNameAndVersion, "10.3.4") < 0;
         } catch (Exception exception) {
             getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
@@ -119,7 +119,7 @@
     protected Class getWebLogicConnectionClass() {
         if (this.weblogicConnectionClass == null) {
             try {
-                this.weblogicConnectionClass = (Class) getDatabaseSession().getPlatform().convertObject("weblogic.jdbc.extensions.WLConnection", Class.class);
+                this.weblogicConnectionClass = getDatabaseSession().getPlatform().convertObject("weblogic.jdbc.extensions.WLConnection", Class.class);
             } catch (Throwable exception) {
                 getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
                 this.weblogicConnectionClass = void.class;
@@ -150,7 +150,7 @@
     public Connection unwrapConnection(Connection connection) {
         if (getWebLogicConnectionClass().isInstance(connection) && getVendorConnectionMethod() != null) {
             try {
-                return (Connection) PrivilegedAccessHelper.invokeMethod(getVendorConnectionMethod(), connection);
+                return PrivilegedAccessHelper.invokeMethod(getVendorConnectionMethod(), connection);
             } catch (IllegalAccessException exception) {
                 getDatabaseSession().getSessionLog().logThrowable(SessionLog.WARNING, SessionLog.SERVER, exception);
             } catch (InvocationTargetException exception) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatformDetector.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatformDetector.java
index 5f9bb3c..7146fa4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatformDetector.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogicPlatformDetector.java
@@ -75,7 +75,7 @@
      */
     private String getServerNameAndVersionInternal() {
         try {
-            Class versionCls = Class.forName("weblogic.version");
+            Class<?> versionCls = Class.forName("weblogic.version");
             Method method = versionCls.getMethod("getReleaseBuildVersion");
             return (String) method.invoke(null);
         } catch (Throwable t) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogic_12_Platform.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogic_12_Platform.java
index 50dfe81..134d168 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogic_12_Platform.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/server/wls/WebLogic_12_Platform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -111,7 +111,7 @@
                 cicManagerInstance = PrivilegedAccessHelper.invokeMethod(getInstance, managerClass);
                 // Get component invocation context
                 getCurrentCicMethod = PrivilegedAccessHelper.getMethod(managerClass, "getCurrentComponentInvocationContext", new Class[]{}, true);
-                final Class cicClass = PrivilegedAccessHelper.getClassForName(contextClassName);
+                final Class<Object> cicClass = PrivilegedAccessHelper.getClassForName(contextClassName);
                 getPartitionIdMethod = PrivilegedAccessHelper.getDeclaredMethod(cicClass, "getPartitionId", new Class[]{});
                 getPartitionNameMethod = PrivilegedAccessHelper.getDeclaredMethod(cicClass, "getPartitionName", new Class[]{});
                 isGlobalRuntimeMethod = PrivilegedAccessHelper.getDeclaredMethod(cicClass, "isGlobalRuntime", new Class[]{});
@@ -164,7 +164,7 @@
                         public String run() {
                             try {
                                 final Object cicInstance = PrivilegedAccessHelper.invokeMethod(getCurrentCicMethod, cicManagerInstance);
-                                return (String) PrivilegedAccessHelper.invokeMethod(methodToCall, cicInstance);
+                                return PrivilegedAccessHelper.invokeMethod(methodToCall, cicInstance);
                             } catch (ReflectiveOperationException ex) {
                                 AbstractSessionLog.getLog().logThrowable(SessionLog.WARNING, null, ex);
                                 return "UNKNOWN";
@@ -173,7 +173,7 @@
                     });
                 } else {
                     final Object cicInstance = PrivilegedAccessHelper.invokeMethod(getCurrentCicMethod, cicManagerInstance);
-                    return (String) PrivilegedAccessHelper.invokeMethod(methodToCall, cicInstance);
+                    return PrivilegedAccessHelper.invokeMethod(methodToCall, cicInstance);
                 }
             } catch (ReflectiveOperationException ex) {
                 AbstractSessionLog.getLog().logThrowable(SessionLog.WARNING, null, ex);
@@ -193,7 +193,7 @@
                         public Boolean run() {
                             try {
                                 final Object cicInstance = PrivilegedAccessHelper.invokeMethod(getCurrentCicMethod, cicManagerInstance);
-                                return (Boolean) PrivilegedAccessHelper.invokeMethod(isGlobalRuntimeMethod, cicInstance);
+                                return PrivilegedAccessHelper.invokeMethod(isGlobalRuntimeMethod, cicInstance);
                             } catch (ReflectiveOperationException ex) {
                                 AbstractSessionLog.getLog().logThrowable(SessionLog.WARNING, null, ex);
                                 return true;
@@ -202,7 +202,7 @@
                     });
                 } else {
                     final Object cicInstance = PrivilegedAccessHelper.invokeMethod(getCurrentCicMethod, cicManagerInstance);
-                    return (boolean) PrivilegedAccessHelper.invokeMethod(isGlobalRuntimeMethod, cicInstance);
+                    return PrivilegedAccessHelper.invokeMethod(isGlobalRuntimeMethod, cicInstance);
                 }
             } catch (ReflectiveOperationException ex) {
                 AbstractSessionLog.getLog().logThrowable(SessionLog.WARNING, null, ex);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
index c9f0740..ac0e3fb 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/xml/XMLPlatformFactory.java
@@ -29,7 +29,7 @@
     public static final String XDK_PLATFORM_CLASS_NAME = "org.eclipse.persistence.platform.xml.xdk.XDKPlatform";
     public static final String JAXP_PLATFORM_CLASS_NAME = "org.eclipse.persistence.platform.xml.jaxp.JAXPPlatform";
     private static XMLPlatformFactory instance;
-    private Class xmlPlatformClass;
+    private Class<? extends XMLPlatform> xmlPlatformClass;
 
     private XMLPlatformFactory() {
         super();
@@ -52,7 +52,7 @@
      * Return the implementation class for the XMLPlatform.
      * @return the implementation class for the XMLPlatform.
      */
-    public Class getXMLPlatformClass() throws XMLPlatformException {
+    public Class<? extends XMLPlatform> getXMLPlatformClass() throws XMLPlatformException {
         if (null != xmlPlatformClass) {
             return xmlPlatformClass;
         }
@@ -80,7 +80,8 @@
             if (classLoader == null) {
                 classLoader = ClassLoader.getSystemClassLoader();
             }
-            Class newXMLPlatformClass = classLoader.loadClass(newXMLPlatformClassName);
+            @SuppressWarnings({"unchecked"})
+            Class<? extends XMLPlatform> newXMLPlatformClass = (Class<? extends XMLPlatform>) classLoader.loadClass(newXMLPlatformClassName);
             setXMLPlatformClass(newXMLPlatformClass);
             return xmlPlatformClass;
         } catch (ClassNotFoundException e) {
@@ -92,7 +93,7 @@
      * PUBLIC:
      * Set the implementation of XMLPlatform.
      */
-    public void setXMLPlatformClass(Class xmlPlatformClass) {
+    public void setXMLPlatformClass(Class<? extends XMLPlatform> xmlPlatformClass) {
         this.xmlPlatformClass = xmlPlatformClass;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorReportItem.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorReportItem.java
index 7a4298f..8c3940b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorReportItem.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorReportItem.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -196,7 +196,7 @@
                 Constructor constructor = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(getResultType(), constructorArgTypes, true));
+                        constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(getResultType(), constructorArgTypes, true));
                     } catch (PrivilegedActionException exception) {
                         throw QueryException.exceptionWhileUsingConstructorExpression(exception.getException(), query);
                     }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorResult.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorResult.java
index 359013f..07691e1 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorResult.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ConstructorResult.java
@@ -117,7 +117,7 @@
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        targetClass = AccessController.doPrivileged(new PrivilegedClassForName(targetClassName, true, classLoader));
+                        targetClass = AccessController.doPrivileged(new PrivilegedClassForName<>(targetClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(targetClassName, exception.getException());
                     }
@@ -200,7 +200,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 try {
-                    constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(targetClass, constructorArgTypes, true));
+                    constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<Class<?>>(targetClass, constructorArgTypes, true));
                 } catch (PrivilegedActionException exception) {
                     throw QueryException.exceptionWhileInitializingConstructor(exception.getException(), query, targetClass);
                 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DatabaseQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DatabaseQuery.java
index 0584e11..fa81b34 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DatabaseQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DatabaseQuery.java
@@ -974,7 +974,7 @@
             // Bug 3256198 - lazily initialize the argument types from their
             // class names
             if (this.argumentTypeNames != null) {
-                Iterator args = this.argumentTypeNames.iterator();
+                Iterator<String> args = this.argumentTypeNames.iterator();
                 while (args.hasNext()) {
                     String argumentTypeName = (String) args.next();
                     this.argumentTypes.add(Helper.getObjectClass(ConversionManager.loadClass(argumentTypeName)));
@@ -2017,8 +2017,8 @@
      * types.
      */
     public List<DatabaseField> buildArgumentFields() {
-        List arguments = getArguments();
-        List argumentTypes = getArgumentTypes();
+        List<String> arguments = getArguments();
+        List<Class> argumentTypes = getArgumentTypes();
         List argumentFields = new ArrayList(arguments.size());
         int size = arguments.size();
         for (int index = 0; index < size; index++) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DeleteObjectQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DeleteObjectQuery.java
index 2a65e35..d075c70 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DeleteObjectQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DeleteObjectQuery.java
@@ -175,7 +175,7 @@
 
             // Check for deletion dependencies.
             if (isUnitOfWork) {
-                Set dependencies = ((UnitOfWorkImpl)session).getDeletionDependencies(object);
+                Set<Object> dependencies = ((UnitOfWorkImpl)session).getDeletionDependencies(object);
                 if (dependencies != null) {
                     for (Object dependency : dependencies) {
                         if (!commitManager.isCommitCompletedInPostOrIgnore(dependency)) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DoesExistQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DoesExistQuery.java
index d82646f..036eab0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DoesExistQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/DoesExistQuery.java
@@ -163,7 +163,7 @@
             }
 
             CacheKey cacheKey;
-            Class objectClass = object.getClass();
+            Class<? extends Object> objectClass = object.getClass();
             AbstractSession tempSession = session;
             if (tempSession.isUnitOfWork()){
                 cacheKey = tempSession.getIdentityMapAccessorInstance().getCacheKeyForObjectForLock(primaryKey, objectClass, descriptor);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/EntityResult.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/EntityResult.java
index 0616dba..523d139 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/EntityResult.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/EntityResult.java
@@ -97,7 +97,7 @@
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    entityClass = AccessController.doPrivileged(new PrivilegedClassForName(entityClassName, true, classLoader));
+                    entityClass = AccessController.doPrivileged(new PrivilegedClassForName<>(entityClassName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(entityClassName, exception.getException());
                 }
@@ -180,7 +180,7 @@
                 descriptor = query.getSession().getDescriptor(classValue);
             }
         }
-        for (Iterator mappings = descriptor.getMappings().iterator(); mappings.hasNext();) {
+        for (Iterator<DatabaseMapping> mappings = descriptor.getMappings().iterator(); mappings.hasNext();) {
             DatabaseMapping mapping = (DatabaseMapping)mappings.next();
             FieldResult fieldResult = (FieldResult)this.getFieldResults().get(mapping.getAttributeName());
             if (fieldResult != null){
@@ -190,7 +190,7 @@
                     getValueFromRecordForMapping(entityRecord,mapping,fieldResult,record);
                 }
             } else {
-                for (Iterator fields = mapping.getFields().iterator(); fields.hasNext();) {
+                for (Iterator<DatabaseField> fields = mapping.getFields().iterator(); fields.hasNext();) {
                     DatabaseField field = (DatabaseField)fields.next();
                     entityRecord.put(field, record.get(field));
                 }
@@ -224,7 +224,7 @@
             return;
         }
         /** This processes each FieldResult stored in the collection of FieldResults individually */
-        Iterator fieldResults = fieldResult.getFieldResults().iterator();
+        Iterator<FieldResult> fieldResults = fieldResult.getFieldResults().iterator();
         while (fieldResults.hasNext()){
             FieldResult tempFieldResult = ((FieldResult)fieldResults.next());
             DatabaseField dbfield = processValueFromRecordForMapping(currentDescriptor,tempFieldResult.getMultipleFieldIdentifiers(),1);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectBuildingQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectBuildingQuery.java
index bf98c07..eef358e 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectBuildingQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectBuildingQuery.java
@@ -21,6 +21,7 @@
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.exceptions.ValidationException;
+import org.eclipse.persistence.expressions.Expression;
 import org.eclipse.persistence.internal.expressions.ForUpdateClause;
 import org.eclipse.persistence.internal.expressions.QueryKeyExpression;
 import org.eclipse.persistence.internal.identitymaps.CacheKey;
@@ -147,7 +148,7 @@
         try{
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    referenceClass = AccessController.doPrivileged(new PrivilegedClassForName(getReferenceClassName(), true, classLoader));
+                    referenceClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getReferenceClassName(), true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(getReferenceClassName(), exception.getException());
                 }
@@ -489,7 +490,7 @@
      * Fetch/trigger indirection on the clone passed in, based on join expressions in the joinManager.
      */
     private void triggerJoinExpressions(UnitOfWorkImpl unitOfWork, JoinedAttributeManager joinManager, Object clone, ClassDescriptor concreteDescriptor) {
-        List joinExpressions = joinManager.getJoinedAttributeExpressions();
+        List<Expression> joinExpressions = joinManager.getJoinedAttributeExpressions();
         int size = joinExpressions.size();
         if ((size == 0) || (clone == null)) {
             return;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectLevelReadQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectLevelReadQuery.java
index 9092285..9db41ac 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectLevelReadQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ObjectLevelReadQuery.java
@@ -358,8 +358,8 @@
             if (!query.hasJoining()) {
                 return false;
             }
-            List joinedAttributes = getJoinedAttributeManager().getJoinedAttributeExpressions();
-            List otherJoinedAttributes = query.getJoinedAttributeManager().getJoinedAttributeExpressions();
+            List<Expression> joinedAttributes = getJoinedAttributeManager().getJoinedAttributeExpressions();
+            List<Expression> otherJoinedAttributes = query.getJoinedAttributeManager().getJoinedAttributeExpressions();
             int size = joinedAttributes.size();
             if (size != otherJoinedAttributes.size()) {
                 return false;
@@ -376,8 +376,8 @@
             if (!query.hasOrderByExpressions()) {
                 return false;
             }
-            List orderBys = getOrderByExpressions();
-            List otherOrderBys = query.getOrderByExpressions();
+            List<Expression> orderBys = getOrderByExpressions();
+            List<Expression> otherOrderBys = query.getOrderByExpressions();
             int size = orderBys.size();
             if (size != otherOrderBys.size()) {
                 return false;
@@ -1644,7 +1644,7 @@
         }
 
         //Add attribute fields
-        for(Iterator it = getPartialAttributeExpressions().iterator();it.hasNext();){
+        for(Iterator<Expression> it = getPartialAttributeExpressions().iterator(); it.hasNext();){
             Expression expression = (Expression)it.next();
             if (expression.isQueryKeyExpression()) {
                 expression.getBuilder().setSession(session.getRootSession(null));
@@ -1682,7 +1682,7 @@
         }
         //Build fields in same order as the fields of the descriptor to ensure field and join indexes match.
         Vector selectionFields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance();
-        for (Iterator iterator = getDescriptor().getFields().iterator(); iterator.hasNext();) {
+        for (Iterator<DatabaseField> iterator = getDescriptor().getFields().iterator(); iterator.hasNext();) {
             DatabaseField field = (DatabaseField)iterator.next();
             if (localFields.contains(field)) {
                 selectionFields.add(field);
@@ -1724,7 +1724,7 @@
             }
         }
         // Add specified fields.
-        for (Iterator iterator = getExecutionFetchGroup().getAttributeNames().iterator(); iterator.hasNext();) {
+        for (Iterator<String> iterator = getExecutionFetchGroup().getAttributeNames().iterator(); iterator.hasNext();) {
             String attribute = (String)iterator.next();
             DatabaseMapping mapping = getDescriptor().getObjectBuilder().getMappingForAttributeName(attribute);
             if (mapping == null) {
@@ -1759,7 +1759,7 @@
 
         // Build field list in the same order as descriptor's fields so that the fields printed in the usual order in SELECT clause.
         List<DatabaseField> fields = new ArrayList(fetchedFields.size());
-        for (Iterator iterator = getDescriptor().getFields().iterator(); iterator.hasNext();) {
+        for (Iterator<DatabaseField> iterator = getDescriptor().getFields().iterator(); iterator.hasNext();) {
             DatabaseField field = (DatabaseField)iterator.next();
             if (fetchedFields.contains(field)) {
                 fields.add(field);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/QueryByExamplePolicy.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/QueryByExamplePolicy.java
index 407abb9..b6e1fb0 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/QueryByExamplePolicy.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/QueryByExamplePolicy.java
@@ -229,7 +229,7 @@
                     throw (RuntimeException) ex.getCause();
                 }
             }else{
-                expression = (Expression)PrivilegedAccessHelper.invokeMethod(anOperator, expression, args);
+                expression = PrivilegedAccessHelper.invokeMethod(anOperator, expression, args);
             }
         } catch (NoSuchMethodException nsme) {
             Class superClass = attributeValueClass.getSuperclass();
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReadAllQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReadAllQuery.java
index 019a16d..169c655 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReadAllQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReadAllQuery.java
@@ -406,7 +406,7 @@
         // Wrapping is done automatically.
         // Make sure a vector of exactly the right size is returned.
         Object conformedResult = cp.containerInstance(indexedInterimResult.size() + fromDatabase.size());
-        for (Iterator enumtr = indexedInterimResult.values().iterator(); enumtr.hasNext();) {
+        for (Iterator<Object> enumtr = indexedInterimResult.values().iterator(); enumtr.hasNext();) {
             Object eachClone = enumtr.next();
             cp.addInto(eachClone, conformedResult, unitOfWork);
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQuery.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQuery.java
index ec2432e..9db0615 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQuery.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQuery.java
@@ -1163,8 +1163,8 @@
             return false;
         }
         ReportQuery query = (ReportQuery) object;
-        List items = getItems();
-        List otherItems = query.getItems();
+        List<ReportItem> items = getItems();
+        List<ReportItem> otherItems = query.getItems();
         int size = items.size();
         if (size != otherItems.size()) {
             return false;
@@ -1175,8 +1175,8 @@
             }
         }
         if (hasGroupByExpressions() && query.hasGroupByExpressions()) {
-            List groupBys = getGroupByExpressions();
-            List otherGroupBys = query.getGroupByExpressions();
+            List<Expression> groupBys = getGroupByExpressions();
+            List<Expression> otherGroupBys = query.getGroupByExpressions();
             size = groupBys.size();
             if (size != otherGroupBys.size()) {
                 return false;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQueryResult.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQueryResult.java
index 7c4f564..322e729 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQueryResult.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/queries/ReportQueryResult.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2019, 2020 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -722,7 +722,7 @@
      * Converts the ReportQueryResult to a simple array of values.
      */
     public Object[] toArray(){
-       List list = getResults();
+       List<Object> list = getResults();
        return (list == null) ? null : list.toArray();
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/ClassSummaryDetailBase.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/ClassSummaryDetailBase.java
index 7550d3a..cb16f8f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/ClassSummaryDetailBase.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/ClassSummaryDetailBase.java
@@ -62,7 +62,7 @@
     private String parentClassName;
 
     // The corresponding CompositeType for this class
-    protected static CompositeType cType_= null;
+    protected static CompositeType cType_;
 
     protected static final String[] itemNames_=
         {"Class Name", "Cache Type", "Configured Size",
@@ -70,7 +70,7 @@
 
     static {
         try {
-            OpenType[] itemTypes = {
+            OpenType<?>[] itemTypes = {
                     SimpleType.STRING,
                     SimpleType.STRING,
                     SimpleType.STRING,
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/DevelopmentServices.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/DevelopmentServices.java
index ae996f3..b17f02f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/DevelopmentServices.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/DevelopmentServices.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -21,6 +21,7 @@
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.internal.helper.ClassConstants;
+import org.eclipse.persistence.internal.identitymaps.IdentityMap;
 import org.eclipse.persistence.internal.security.PrivilegedAccessHelper;
 import org.eclipse.persistence.internal.security.PrivilegedClassForName;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
@@ -64,7 +65,7 @@
      * @exception ClassNotFoundException thrown then the IdenityMap for that class name could not be found
      */
     public void initializeIdentityMap(String className) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         getSession().getIdentityMapAccessorInstance().initializeIdentityMap(classToChange);
     }
 
@@ -86,11 +87,11 @@
      * @exception ClassNotFoundException thrown then the IdenityMap for that class name could not be found
      */
     public void setIdentityMapForClass(String className, String identityMapClassType, int maxSize) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
-        Class identityMapClass = null;
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class<IdentityMap> identityMapClass = null;
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
             try{
-                identityMapClass = AccessController.doPrivileged(new PrivilegedClassForName(identityMapClassType));
+                identityMapClass = AccessController.doPrivileged(new PrivilegedClassForName<>(identityMapClassType));
             }catch (PrivilegedActionException ex){
                 throw (RuntimeException)ex.getCause();
             }
@@ -120,7 +121,7 @@
      * @exception ClassNotFoundException thrown then the IdenityMap for that class name could not be found
      */
     public void updateCacheSize(String className, int newSize) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         getSession().getIdentityMapAccessorInstance().getIdentityMap(classToChange).updateMaxSize(newSize);
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/RuntimeServices.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/RuntimeServices.java
index e5d9850..5dd21e5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/RuntimeServices.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/services/RuntimeServices.java
@@ -239,9 +239,9 @@
     public List getAvailableConnectionPools() {
         Vector list = null;
         if (ClassConstants.ServerSession_Class.isAssignableFrom(getSession().getClass())) {
-            Map pools = ((ServerSession)getSession()).getConnectionPools();
+            Map<String, ConnectionPool> pools = ((ServerSession)getSession()).getConnectionPools();
             list = new Vector(pools.size());
-            Iterator poolNames = pools.keySet().iterator();
+            Iterator<String> poolNames = pools.keySet().iterator();
             while (poolNames.hasNext()) {
                 list.add(poolNames.next());
             }
@@ -300,7 +300,7 @@
      */
     public void resetAllConnections() {
         if (ClassConstants.ServerSession_Class.isAssignableFrom(getSession().getClass())) {
-            Iterator enumtr = ((ServerSession)getSession()).getConnectionPools().values().iterator();
+            Iterator<ConnectionPool> enumtr = ((ServerSession)getSession()).getConnectionPools().values().iterator();
             while (enumtr.hasNext()) {
                 ConnectionPool pool = (ConnectionPool)enumtr.next();
                 pool.shutDown();
@@ -328,11 +328,11 @@
      * @exception ClassNotFoundException thrown then the IdentityMap for that class name could not be found
      */
     public List getObjectsInIdentityMap(String className) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         IdentityMap map = getSession().getIdentityMapAccessorInstance().getIdentityMap(classToChange);
 
         Vector results = new Vector(map.getSize());
-        Enumeration objects = map.keys();
+        Enumeration<CacheKey> objects = map.keys();
         while (objects.hasMoreElements()) {
             results.add(((CacheKey)objects.nextElement()).getObject());
         }
@@ -345,7 +345,7 @@
      * @exception ClassNotFoundException thrown then the IdentityMap for that class name could not be found
      */
     public Integer getNumberOfObjectsInIdentityMap(String className) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         return getSession().getIdentityMapAccessorInstance().getIdentityMap(classToChange).getSize();
     }
 
@@ -358,7 +358,7 @@
      * @exception ClassNotFoundException thrown then the IdentityMap for that class name could not be found
      */
     public List getObjectsInIdentityMapSubCacheAsMap(String className) throws ClassNotFoundException {
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         IdentityMap map = getSession().getIdentityMapAccessorInstance().getIdentityMap(classToChange);
 
         //CR3855
@@ -378,7 +378,7 @@
     public Integer getNumberOfObjectsInIdentityMapSubCache(String className) throws ClassNotFoundException {
         //This needs to use the Session's active class loader (not implemented yet)
         Integer result = 0;
-        Class classToChange = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+        Class classToChange = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
         IdentityMap map = getSession().getIdentityMapAccessorInstance().getIdentityMap(classToChange);
         if (map.getClass().isAssignableFrom(ClassConstants.HardCacheWeakIdentityMap_Class)) {
             List subCache = ((HardCacheWeakIdentityMap)map).getReferenceCache();
@@ -450,7 +450,7 @@
          Class registeredClass;
 
          //get identity map, and initialize
-         registeredClass = (Class)getSession().getDatasourcePlatform().getConversionManager()
+         registeredClass = getSession().getDatasourcePlatform().getConversionManager()
              .convertObject(className, ClassConstants.CLASS);
          getSession().getIdentityMapAccessor().initializeIdentityMap(registeredClass);
          ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_identity_map_initialized", className);
@@ -467,7 +467,7 @@
       *        This method will log the instance level locks in the Identity Map for the given class in the session.
       */
       public void printIdentityMapLocks(String registeredClassName) {
-          Class registeredClass = (Class)getSession().getDatasourcePlatform().getConversionManager()
+          Class registeredClass = getSession().getDatasourcePlatform().getConversionManager()
               .convertObject(registeredClassName, ClassConstants.CLASS);
           getSession().getIdentityMapAccessorInstance().getIdentityMapManager().printLocks(registeredClass);
       }
@@ -757,15 +757,15 @@
       *
       * @return java.util.Vector
       */
-     private Vector getMappedClassNames() {
-         Map alreadyAdded = new HashMap();
-         Vector mappedClassNames = new Vector();
+     private Vector<String> getMappedClassNames() {
+         Map<String, Boolean> alreadyAdded = new HashMap<>();
+         Vector<String> mappedClassNames = new Vector<>();
          String mappedClassName = null;
 
-         Iterator descriptorsIterator = getSession().getProject().getDescriptors()
+         Iterator<ClassDescriptor> descriptorsIterator = getSession().getProject().getDescriptors()
                  .values().iterator();
          while (descriptorsIterator.hasNext()) {
-             ClassDescriptor nextDescriptor = (ClassDescriptor) descriptorsIterator.next();
+             ClassDescriptor nextDescriptor = descriptorsIterator.next();
 
              // differentiate between a generated class and not, by comparing the descriptor's Java class
              if (nextDescriptor.getCMPPolicy() != null) {
@@ -795,15 +795,15 @@
      *   @param filter A comma separated list of strings to match against.
      *   @return A Vector of class names that match the filter.
      */
-     public Vector getMappedClassNamesUsingFilter(String filter) {
+     public Vector<String> getMappedClassNamesUsingFilter(String filter) {
          //Output Vector
-         Vector outputVector = new Vector();
+         Vector<String> outputVector = new Vector<>();
 
          //Input mapped class names
-         Vector mappedClassNames = getMappedClassNames();
+         Vector<String> mappedClassNames = getMappedClassNames();
 
          //Input filter values
-         ArrayList filters = new ArrayList();
+         List<String> filters = new ArrayList<>();
          StringTokenizer lineTokens = new StringTokenizer(filter, ",");
          while (lineTokens.hasMoreTokens()) {
              filters.add(lineTokens.nextToken());
@@ -996,8 +996,8 @@
      */
      public void printAvailableConnectionPools() {
          if (ClassConstants.ServerSession_Class.isAssignableFrom(getSession().getClass())) {
-             Map pools = ((ServerSession)getSession()).getConnectionPools();
-             Iterator poolNames = pools.keySet().iterator();
+             Map<String, ConnectionPool> pools = ((ServerSession)getSession()).getConnectionPools();
+             Iterator<String> poolNames = pools.keySet().iterator();
              while (poolNames.hasNext()) {
                  String poolName = poolNames.next().toString();
                  ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_pool_name", poolName);
@@ -1063,7 +1063,7 @@
      * @exception ClassNotFoundException thrown then the IdentityMap for that class name could not be found
      */
      public void printObjectsInIdentityMap(String className) throws ClassNotFoundException {
-         Class classWithMap = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
+         Class classWithMap = getSession().getDatasourcePlatform().getConversionManager().convertObject(className, ClassConstants.CLASS);
          IdentityMap map = getSession().getIdentityMapAccessorInstance().getIdentityMap(classWithMap);
 
          //check if the identity map exists
@@ -1073,7 +1073,7 @@
          }
 
          //check if there are any objects in the identity map. Print if so.
-         Enumeration objects = map.keys();
+         Enumeration<CacheKey> objects = map.keys();
          if (!objects.hasMoreElements()) {
              ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_identity_map_empty", className);
          }
@@ -1105,7 +1105,7 @@
          //get each identity map, and log the type
          for (int index = 0; index < classesRegistered.size(); index++) {
              registeredClassName = (String)classesRegistered.elementAt(index);
-             registeredClass = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(registeredClassName, ClassConstants.CLASS);
+             registeredClass = getSession().getDatasourcePlatform().getConversionManager().convertObject(registeredClassName, ClassConstants.CLASS);
              IdentityMap map = getSession().getIdentityMapAccessorInstance().getIdentityMap(registeredClass);
              ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_identity_map_class",
                      registeredClassName, map.getClass());
@@ -1176,7 +1176,7 @@
          ClassDescriptor currentDescriptor;
 
          //use a table to eliminate duplicate classes. Ignore Aggregates
-         Iterator descriptors = getSession().getProject().getDescriptors().values().iterator();
+         Iterator<ClassDescriptor> descriptors = getSession().getProject().getDescriptors().values().iterator();
          while (descriptors.hasNext()) {
              currentDescriptor = (ClassDescriptor)descriptors.next();
              if (!currentDescriptor.isAggregateDescriptor()) {
@@ -1287,7 +1287,7 @@
          //get each identity map, and invalidate
          for (int index = 0; index < classesRegistered.size(); index++) {
              registeredClassName = (String)classesRegistered.elementAt(index);
-             registeredClass = (Class)getSession().getDatasourcePlatform().getConversionManager()
+             registeredClass = getSession().getDatasourcePlatform().getConversionManager()
                  .convertObject(registeredClassName, ClassConstants.CLASS);
              getSession().getIdentityMapAccessor().invalidateClass(registeredClass);
              ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_identity_map_invalidated", registeredClassName);
@@ -1327,7 +1327,7 @@
          Class registeredClass;
 
          //get identity map, and invalidate
-         registeredClass = (Class)getSession().getDatasourcePlatform().getConversionManager()
+         registeredClass = getSession().getDatasourcePlatform().getConversionManager()
              .convertObject(className, ClassConstants.CLASS);
          getSession().getIdentityMapAccessor().invalidateClass(registeredClass);
          ((AbstractSession)session).log(SessionLog.INFO, SessionLog.SERVER, "jmx_mbean_runtime_services_identity_map_invalidated", className);
@@ -1400,37 +1400,23 @@
       * @param filter A comma separated list of strings to match against.
       * @return A ArrayList of instance of ClassSummaryDetail containing class information for the class names that match the filter.
       */
-     /**
-      * Provide a list of instance of ClassSummaryDetail containing information about the
-      * classes in the session whose class names match the provided filter.
-      *
-      * ClassSummaryDetail is a model specific class that can be used internally by the Portable JMX Framework to
-      * convert class attribute to JMX required open type, it has:-
-      *    1. model specific type that needs to be converted : ["Class Name", "Parent Class Name",  "Cache Type", "Configured Size", "Current Size"]
-      *    2. convert methods.
-      *
-      * @param filter A comma separated list of strings to match against.
-      * @return A ArrayList of instance of ClassSummaryDetail containing class information for the class names that match the filter.
-      */
-     public List <ClassSummaryDetailBase>  getClassSummaryDetailsUsingFilterArray(String filter) {
-         // if the filter is null, return all the details
-         if (filter == null) {
-             return getClassSummaryDetailsArray();
-         }
-
+     public List<ClassSummaryDetailBase>  getClassSummaryDetailsUsingFilterArray(String filter) {
          try {
-             Vector mappedClassNames = getMappedClassNamesUsingFilter(filter);
+             // if the filter is null, return all the details
+             Vector<String> mappedClassNames = getMappedClassNamesUsingFilter(filter);
              String mappedClassName;
-             List classSummaryDetails = new ArrayList<ClassSummaryDetailBase>();
+             List<ClassSummaryDetailBase> classSummaryDetails = new ArrayList<>();
              // Check if there aren't any classes mapped
              if (mappedClassNames.size() == 0) {
                  return null;
              }
-
+             CompositeType type = buildCompositeTypeForClassSummaryDetails();
              // get details for each class, and add the details to the summary
              for (int index = 0; index < mappedClassNames.size(); index++) {
                  mappedClassName = (String)mappedClassNames.elementAt(index);
-                 classSummaryDetails.add(buildLowlevelDetailsFor(mappedClassName));
+                 Map<String, String> data = buildLowlevelDetailsFor(mappedClassName);
+                 final CompositeDataSupport support = new CompositeDataSupport(type, buildLowlevelDetailsFor(mappedClassName));
+                 classSummaryDetails.add(ClassSummaryDetailBase.from(support));
              }
              return classSummaryDetails;
          } catch (Exception openTypeException) {
@@ -1453,29 +1439,9 @@
       *
       * @return A List of instance of ClassSummaryDetail objects containing class information for the class names that match the filter.
       */
-     public List <ClassSummaryDetailBase> getClassSummaryDetailsArray() {
-         try {
-             Vector mappedClassNames = getMappedClassNames();
-             List classSummaryDetails = new ArrayList<ClassSummaryDetailBase>();
-             // Check if there aren't any classes mapped
-             if (mappedClassNames.size() == 0) {
-                 return null;
-             }
-
-             // get details for each class, and add the details to the summary
-             for (int index = 0; index < mappedClassNames.size(); index++) {
-                 String mappedClassName = (String)mappedClassNames.elementAt(index);
-                 classSummaryDetails.add(buildLowlevelDetailsFor(mappedClassName));
-             }
-
-             return classSummaryDetails;
-         } catch (Exception openTypeException) {
-             AbstractSessionLog.getLog().log(SessionLog.SEVERE, "jmx_enabled_platform_mbean_runtime_exception", PLATFORM_NAME, openTypeException);
-             openTypeException.printStackTrace();
-         }
-
+     public List<ClassSummaryDetailBase> getClassSummaryDetailsArray() {
          // wait to get requirements from EM
-         return null;
+         return getClassSummaryDetailsUsingFilterArray(".*");
      }
 
      /**
@@ -1515,8 +1481,8 @@
 
       * @return HashMap
       */
-     private HashMap buildLowlevelDetailsFor(String mappedClassName) {
-         Class mappedClass = (Class)getSession().getDatasourcePlatform().getConversionManager().convertObject(mappedClassName, ClassConstants.CLASS);
+     private Map<String, String> buildLowlevelDetailsFor(String mappedClassName) {
+         Class mappedClass = getSession().getDatasourcePlatform().getConversionManager().convertObject(mappedClassName, ClassConstants.CLASS);
          ClassDescriptor descriptor = getSession().getProject().getDescriptor(mappedClass);
 
          String cacheType = "";
@@ -1542,7 +1508,7 @@
 
          boolean isChildDescriptor = descriptor.isChildDescriptor();
 
-         HashMap details = new HashMap(5);
+         Map<String, String> details = new HashMap<>(5);
          details.put("Class Name", mappedClassName);
          details.put("Cache Type", (isChildDescriptor ? "" : cacheType));
          details.put("Configured Size", (isChildDescriptor ? "" : configuredSize));
@@ -1576,7 +1542,7 @@
          }
 
          try {
-             Vector mappedClassNames = getMappedClassNamesUsingFilter(filter);
+             Vector<String> mappedClassNames = getMappedClassNamesUsingFilter(filter);
              String mappedClassName;
              TabularDataSupport rowData = new TabularDataSupport(buildTabularTypeForClassSummaryDetails());
              // Check if there aren't any classes mapped
@@ -1614,7 +1580,7 @@
       */
      private TabularData buildClassSummaryDetails() {
          try {
-             Vector mappedClassNames = getMappedClassNames();
+             Vector<String> mappedClassNames = getMappedClassNames();
              String mappedClassName;
              TabularDataSupport rowData = new TabularDataSupport(buildTabularTypeForClassSummaryDetails());
              // Check if there aren't any classes mapped
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/DefaultConnector.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/DefaultConnector.java
index 3901a8e..ea12ca6 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/DefaultConnector.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/DefaultConnector.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -250,7 +250,7 @@
             if(session != null) {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        driverClass = AccessController.doPrivileged(new PrivilegedClassForName(this.getDriverClassName(), true, session.getPlatform().getConversionManager().getLoader()));
+                        driverClass = AccessController.doPrivileged(new PrivilegedClassForName<>(this.getDriverClassName(), true, session.getPlatform().getConversionManager().getLoader()));
                     } catch (PrivilegedActionException exception) {
                         throw DatabaseException.configurationErrorClassNotFound(this.getDriverClassName());
                     }
@@ -260,7 +260,7 @@
             } else {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        driverClass = AccessController.doPrivileged(new PrivilegedClassForName(this.getDriverClassName(), true, ConversionManager.getDefaultManager().getLoader()));
+                        driverClass = AccessController.doPrivileged(new PrivilegedClassForName<>(this.getDriverClassName(), true, ConversionManager.getDefaultManager().getLoader()));
                     } catch (PrivilegedActionException exception) {
                         throw DatabaseException.configurationErrorClassNotFound(this.getDriverClassName());                }
                 } else {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Project.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Project.java
index 8cd122f..0252cdc 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Project.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Project.java
@@ -59,6 +59,7 @@
 import org.eclipse.persistence.internal.helper.Helper;
 import org.eclipse.persistence.internal.helper.NonSynchronizedVector;
 import org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap;
+import org.eclipse.persistence.internal.identitymaps.IdentityMap;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
 import org.eclipse.persistence.queries.AttributeGroup;
@@ -84,17 +85,17 @@
 public class Project extends CoreProject<ClassDescriptor, Login, DatabaseSession> implements Serializable, Cloneable {
     protected String name;
     protected Login datasourceLogin;
-    protected Map<Class, ClassDescriptor> descriptors;
+    protected Map<Class<?>, ClassDescriptor> descriptors;
     protected List<ClassDescriptor> orderedDescriptors;
 
     // Currently only one is supported.
     protected MultitenantPolicy multitenantPolicy;
 
     /** Holds the default set of read-only classes that apply to each UnitOfWork. */
-    protected Vector defaultReadOnlyClasses;
+    protected Vector<Class<?>> defaultReadOnlyClasses;
 
     /** Cache the EJBQL descriptor aliases. */
-    protected Map aliasDescriptors;
+    protected Map<String, ClassDescriptor> aliasDescriptors;
 
     /** Cache if any descriptor is isolated. (set during initialization) */
     protected boolean hasIsolatedClasses;
@@ -120,7 +121,7 @@
     protected transient boolean hasMappingsPostCalculateChangesOnDeleted = false;
 
     /** Default value for ClassDescriptor.identityMapClass. */
-    protected Class defaultIdentityMapClass = AbstractIdentityMap.getDefaultIdentityMapClass();
+    protected Class<? extends IdentityMap> defaultIdentityMapClass = AbstractIdentityMap.getDefaultIdentityMapClass();
 
     /** Default value for ClassDescriptor.identityMapSize. */
     protected int defaultIdentityMapSize = 100;
@@ -208,7 +209,7 @@
      */
     public Project() {
         this.name = "";
-        this.descriptors = new HashMap();
+        this.descriptors = new HashMap<>();
         this.defaultReadOnlyClasses = NonSynchronizedVector.newInstance();
         this.orderedDescriptors = new ArrayList<>();
         this.hasIsolatedClasses = false;
@@ -301,7 +302,7 @@
     public List<DatabaseQuery> getJPAQueries() {
         // PERF: lazy init, not normally required.
         if (jpaQueries == null) {
-            jpaQueries = new ArrayList();
+            jpaQueries = new ArrayList<>();
         }
 
         return jpaQueries;
@@ -315,7 +316,7 @@
     public List<DatabaseQuery> getJPATablePerTenantQueries() {
         // PERF: lazy init, not normally required.
         if (jpaTablePerTenantQueries == null) {
-            jpaTablePerTenantQueries = new ArrayList();
+            jpaTablePerTenantQueries = new ArrayList<>();
         }
 
         return jpaTablePerTenantQueries;
@@ -405,7 +406,7 @@
      * PUBLIC:
      * Add the read-only class which apply to each UnitOfWork created by default.
      */
-    public void addDefaultReadOnlyClass(Class readOnlyClass) {
+    public void addDefaultReadOnlyClass(Class<?> readOnlyClass) {
         getDefaultReadOnlyClasses().addElement(readOnlyClass);
     }
 
@@ -439,14 +440,17 @@
                 // Descriptor aliases may be concurrently accessed by other threads.
                 // Make a clone, add new descriptor to the clone, override original with the clone.
                 if (alias != null) {
-                    final Map aliasDescriptorsClone = getAliasDescriptors() != null
-                            ? (Map)((HashMap)getAliasDescriptors()).clone() : new HashMap();
+                    @SuppressWarnings({"unchecked"})
+                    final Map<String, ClassDescriptor> aliasDescriptorsClone = getAliasDescriptors() != null
+                            ? (Map<String, ClassDescriptor>)((HashMap<String, ClassDescriptor>) getAliasDescriptors()).clone()
+                            : new HashMap<>();
                     aliasDescriptorsClone.put(alias, descriptor);
                     setAliasDescriptors(aliasDescriptorsClone);
                 }
                 // Descriptors may be concurrently accessed by other threads.
                 // Make a clone, add new descriptor to the clone, override original with the clone.
-                final Map<Class, ClassDescriptor> descriptorsClone = (Map)((HashMap)getDescriptors()).clone();
+                @SuppressWarnings({"unchecked"})
+                final Map<Class<?>, ClassDescriptor> descriptorsClone = (Map<Class<?>, ClassDescriptor>)((HashMap<Class<?>, ClassDescriptor>) getDescriptors()).clone();
                 descriptorsClone.put(descriptor.getJavaClass(), descriptor);
                 setDescriptors(descriptorsClone);
                 session.copyDescriptorsFromProject();
@@ -472,11 +476,14 @@
             if (session.isConnected()) {
                 // Descriptor aliases may be concurrently accessed by other threads.
                 // Make a clone, add new descriptors to the clone, override original with the clone.
-                final Map aliasDescriptorsClone = getAliasDescriptors() != null
-                        ? (Map)((HashMap)getAliasDescriptors()).clone() : new HashMap();
+                @SuppressWarnings({"unchecked"})
+                final Map<String, ClassDescriptor> aliasDescriptorsClone = getAliasDescriptors() != null
+                        ? (Map<String, ClassDescriptor>)((HashMap<String, ClassDescriptor>) getAliasDescriptors()).clone()
+                        : new HashMap<>();
                 // Descriptors may be concurrently accessed by other threads.
                 // Make a clone, add new descriptors to the clone, override original with the clone.
-                final Map<Class, ClassDescriptor> descriptorsClone = (Map)((HashMap)getDescriptors()).clone();
+                @SuppressWarnings({"unchecked"})
+                final Map<Class<?>, ClassDescriptor> descriptorsClone = (Map<Class<?>, ClassDescriptor>)((HashMap<Class<?>, ClassDescriptor>) getDescriptors()).clone();
                 for (ClassDescriptor descriptor : (Collection<ClassDescriptor>) descriptors) {
                     descriptorsClone.put(descriptor.getJavaClass(), descriptor);
                     final String alias = descriptor.getAlias();
@@ -491,7 +498,7 @@
                 session.copyDescriptorsFromProject();
                 session.initializeDescriptors(descriptors);
             } else {
-                final Map<Class, ClassDescriptor> projectDescriptors = getDescriptors();
+                final Map<Class<?>, ClassDescriptor> projectDescriptors = getDescriptors();
                 for (ClassDescriptor descriptor : (Collection<ClassDescriptor>) descriptors) {
                     final String alias = descriptor.getAlias();
                     projectDescriptors.put(descriptor.getJavaClass(), descriptor);
@@ -526,7 +533,7 @@
             return;
         }
         if (this.sqlResultSetMappings == null){
-            this.sqlResultSetMappings = new HashMap();
+            this.sqlResultSetMappings = new HashMap<>();
         }
         this.sqlResultSetMappings.put(sqlResultSetMapping.getName(), sqlResultSetMapping);
     }
@@ -536,9 +543,9 @@
      * Set all this project's descriptors to conform all read queries within the context of the unit of work.
      */
     public void conformAllDescriptors() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.setShouldAlwaysConformResultsInUnitOfWork(true);
         }
     }
@@ -550,16 +557,16 @@
      */
     @Override
     public void convertClassNamesToClasses(ClassLoader classLoader){
-        Iterator ordered = orderedDescriptors.iterator();
+        Iterator<ClassDescriptor> ordered = orderedDescriptors.iterator();
         while (ordered.hasNext()){
-            ClassDescriptor descriptor = (ClassDescriptor)ordered.next();
+            ClassDescriptor descriptor = ordered.next();
             descriptor.convertClassNamesToClasses(classLoader);
         }
         for (AttributeGroup group : this.getAttributeGroups().values()){
             group.convertClassNamesToClasses(classLoader);
         }
         // Clear old descriptors to allow rehash on new classes.
-        this.descriptors = new HashMap();
+        this.descriptors = new HashMap<>();
         // convert class names to classes for each SQLResultSetMapping
         if (this.sqlResultSetMappings != null) {
             for (SQLResultSetMapping mapping : this.sqlResultSetMappings.values()) {
@@ -578,9 +585,9 @@
      * Switch all descriptors to assume existence for non-null primary keys.
      */
     public void assumeExistenceForDoesExist() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.getQueryManager().assumeExistenceForDoesExist();
         }
     }
@@ -590,9 +597,9 @@
      * Switch all descriptors to check the cache for existence.
      */
     public void checkCacheForDoesExist() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.getQueryManager().checkCacheForDoesExist();
         }
     }
@@ -602,9 +609,9 @@
      * Switch all descriptors to check the database for existence.
      */
     public void checkDatabaseForDoesExist() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.getQueryManager().checkDatabaseForDoesExist();
         }
     }
@@ -696,7 +703,7 @@
      * PUBLIC:
      * Return default value for descriptor cache type.
      */
-    public Class getDefaultIdentityMapClass() {
+    public Class<? extends IdentityMap> getDefaultIdentityMapClass() {
         return this.defaultIdentityMapClass;
     }
 
@@ -729,7 +736,7 @@
      * Return the descriptor specified for the class.
      * If the passed Class parameter is null, null will be returned.
      */
-    public ClassDescriptor getClassDescriptor(Class theClass) {
+    public ClassDescriptor getClassDescriptor(Class<?> theClass) {
         return getDescriptor(theClass);
     }
 
@@ -738,7 +745,7 @@
      * Return the descriptor specified for the class.
      */
     @Override
-    public ClassDescriptor getDescriptor(Class theClass) {
+    public ClassDescriptor getDescriptor(Class<?> theClass) {
         if (theClass == null) {
             return null;
         }
@@ -749,11 +756,11 @@
      * PUBLIC:
      * Return the descriptors in a ClassDescriptors Map keyed on the Java class.
      */
-    public Map<Class, ClassDescriptor> getDescriptors() {
+    public Map<Class<?>, ClassDescriptor> getDescriptors() {
         // Lazy initialize class references from orderedDescriptors when reading from XML.
         if (descriptors.isEmpty() && (!orderedDescriptors.isEmpty())) {
-            for (Iterator iterator = orderedDescriptors.iterator(); iterator.hasNext();) {
-                ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
+            for (Iterator<ClassDescriptor> iterator = orderedDescriptors.iterator(); iterator.hasNext();) {
+                ClassDescriptor descriptor = iterator.next();
                 descriptors.put(descriptor.getJavaClass(), descriptor);
             }
         }
@@ -906,7 +913,7 @@
      * PUBLIC:
      * Set default value for descriptor cache type.
      */
-    public void setDefaultIdentityMapClass(Class defaultIdentityMapClass) {
+    public void setDefaultIdentityMapClass(Class<? extends IdentityMap> defaultIdentityMapClass) {
         this.defaultIdentityMapClass = defaultIdentityMapClass;
     }
 
@@ -939,8 +946,8 @@
      */
     public void setDescriptors(Map descriptors) {
         this.descriptors = descriptors;
-        for (Iterator iterator = descriptors.values().iterator(); iterator.hasNext();) {
-            ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
+        for (Iterator<ClassDescriptor> iterator = descriptors.values().iterator(); iterator.hasNext();) {
+            ClassDescriptor descriptor = iterator.next();
             String alias = descriptor.getAlias();
             if (alias != null) {
                 addAlias(alias, descriptor);
@@ -962,8 +969,8 @@
      *        container call.
      */
     public void setDeferModificationsUntilCommit(int deferralLevel) {
-        for (Iterator iterator = descriptors.values().iterator(); iterator.hasNext();) {
-            ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
+        for (Iterator<ClassDescriptor> iterator = descriptors.values().iterator(); iterator.hasNext();) {
+            ClassDescriptor descriptor = iterator.next();
             if (descriptor.getCMPPolicy() != null) {
                 descriptor.getCMPPolicy().setDeferModificationsUntilCommit(deferralLevel);
             }
@@ -1127,9 +1134,9 @@
      * Switch all descriptors to use the cache identity map.
      */
     public void useCacheIdentityMap() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useCacheIdentityMap();
         }
     }
@@ -1139,9 +1146,9 @@
      * Switch all descriptors to use the cache identity map the size.
      */
     public void useCacheIdentityMap(int cacheSize) {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useCacheIdentityMap();
             descriptor.setIdentityMapSize(cacheSize);
         }
@@ -1152,9 +1159,9 @@
      * Switch all descriptors to use the full identity map.
      */
     public void useFullIdentityMap() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useFullIdentityMap();
         }
     }
@@ -1164,9 +1171,9 @@
      * Switch all descriptors to use the full identity map with initial cache size.
      */
     public void useFullIdentityMap(int initialCacheSize) {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useFullIdentityMap();
             descriptor.setIdentityMapSize(initialCacheSize);
         }
@@ -1177,9 +1184,9 @@
      * Switch all descriptors to use no identity map.
      */
     public void useNoIdentityMap() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useNoIdentityMap();
         }
     }
@@ -1189,9 +1196,9 @@
      * Switch all descriptors to use the soft cache weak identity map.
      */
     public void useSoftCacheWeakIdentityMap() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useSoftCacheWeakIdentityMap();
         }
     }
@@ -1201,9 +1208,9 @@
      * Switch all descriptors to use the soft cache weak identity map with soft cache size.
      */
     public void useSoftCacheWeakIdentityMap(int cacheSize) {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useSoftCacheWeakIdentityMap();
             descriptor.setIdentityMapSize(cacheSize);
         }
@@ -1214,9 +1221,9 @@
      * Asks each descriptor if is uses optimistic locking.
      */
     public boolean usesOptimisticLocking() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             if (descriptor.usesOptimisticLocking()) {
                 return true;
             }
@@ -1229,9 +1236,9 @@
      * Asks each descriptor if is uses sequencing.
      */
     public boolean usesSequencing() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             if (descriptor.usesSequenceNumbers()) {
                 return true;
             }
@@ -1244,9 +1251,9 @@
      * Switch all descriptors to use the weak identity map.
      */
     public void useWeakIdentityMap() {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useWeakIdentityMap();
         }
     }
@@ -1256,9 +1263,9 @@
      * Switch all descriptors to use the weak identity map.
      */
     public void useWeakIdentityMap(int initialCacheSize) {
-        Iterator descriptors = getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
-            ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
+            ClassDescriptor descriptor = descriptors.next();
             descriptor.useWeakIdentityMap();
             descriptor.setIdentityMapSize(initialCacheSize);
         }
@@ -1278,7 +1285,7 @@
      * INTERNAL:
      * Returns the alias descriptors hashtable.
      */
-    public Map getAliasDescriptors() {
+    public Map<String, ClassDescriptor> getAliasDescriptors() {
         return aliasDescriptors;
     }
 
@@ -1288,7 +1295,7 @@
      */
     public void addAlias(String alias, ClassDescriptor descriptor) {
         if (aliasDescriptors == null) {
-            aliasDescriptors = new HashMap(10);
+            aliasDescriptors = new HashMap<>(10);
         }
         aliasDescriptors.put(alias, descriptor);
     }
@@ -1356,7 +1363,7 @@
     public ClassDescriptor getDescriptorForAlias(String alias) {
         ClassDescriptor descriptor = null;
         if (aliasDescriptors != null) {
-            descriptor = (ClassDescriptor)aliasDescriptors.get(alias);
+            descriptor = aliasDescriptors.get(alias);
         }
         return descriptor;
     }
@@ -1365,7 +1372,7 @@
      * INTERNAL:
      * Set the alias descriptors hashtable.
      */
-    public void setAliasDescriptors(Map aHashtable) {
+    public void setAliasDescriptors(Map<String, ClassDescriptor> aHashtable) {
         aliasDescriptors = aHashtable;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Session.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Session.java
index cc9b745..d91330f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Session.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/Session.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -433,7 +433,7 @@
      * by one of the classes stored in the map, that descriptor will be stored under the
      * new class.
      */
-    @Override ClassDescriptor getDescriptor(Class theClass);
+    @Override ClassDescriptor getDescriptor(Class<?> theClass);
 
     /**
      * ADVANCED:
@@ -452,7 +452,7 @@
      * ADVANCED:
      * Return all registered descriptors.
      */
-    @Override Map<Class, ClassDescriptor> getDescriptors();
+    @Override Map<Class<?>, ClassDescriptor> getDescriptors();
 
     /**
      * ADVANCED:
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/broker/SessionBroker.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/broker/SessionBroker.java
index 9764df9..ed6e87f 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/broker/SessionBroker.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/broker/SessionBroker.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -109,7 +109,7 @@
         clientBroker.setServerPlatform(getServerPlatform());
         String sessionName;
         AbstractSession session;
-        Iterator names = this.getSessionsByName().keySet().iterator();
+        Iterator<String> names = this.getSessionsByName().keySet().iterator();
         while (names.hasNext()) {
             sessionName = (String)names.next();
             session = getSessionForName(sessionName);
@@ -154,7 +154,7 @@
         historicalBroker.parent = this;
         String sessionName;
         AbstractSession session;
-        Iterator names = this.getSessionsByName().keySet().iterator();
+        Iterator<String> names = this.getSessionsByName().keySet().iterator();
         while (names.hasNext()) {
             sessionName = (String)names.next();
             session = getSessionForName(sessionName);
@@ -172,8 +172,8 @@
     @Override
     public void releaseJTSConnection() {
         RuntimeException exception = null;
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             try {
                 session.releaseJTSConnection();
@@ -245,8 +245,8 @@
      */
     @Override
     protected void basicBeginTransaction() throws DatabaseException {
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.beginTransaction();
         }
@@ -261,15 +261,15 @@
     @Override
     protected void basicCommitTransaction() throws DatabaseException {
         // Do one last check it make sure that all sessions are still connected.
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             if (!session.isConnected()) {
                 throw DatabaseException.databaseAccessorNotConnected();
             }
         }
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.commitTransaction();
         }
@@ -282,8 +282,8 @@
     @Override
     protected void basicRollbackTransaction() throws DatabaseException {
         DatabaseException globalException = null;
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             try {
                 session.rollbackTransaction();
@@ -307,7 +307,7 @@
             String sessionName = null;
             AbstractSession ssession = null;
 
-            Iterator names = this.getSessionsByName().keySet().iterator();
+            Iterator<String> names = this.getSessionsByName().keySet().iterator();
             while (names.hasNext()) {
                 sessionName = (String)names.next();
                 ssession = getSessionForName(sessionName);
@@ -379,7 +379,7 @@
      */
     @Override
     public AsOfClause getAsOfClause() {
-        for (Iterator enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
+        for (Iterator<AbstractSession> enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
             return ((AbstractSession)enumtr.next()).getAsOfClause();
         }
         return null;
@@ -556,7 +556,7 @@
         // in initializeDescriptors method.
         // Because initializeDescriptors() is not called for a session-member of a SessionBroker,
         // initializeSequencing() for the sessions should be called here.
-        for (Iterator enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
+        for (Iterator<AbstractSession> enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
             DatabaseSessionImpl databaseSession = (DatabaseSessionImpl)enumtr.next();
             String sessionName = databaseSession.getName();
 
@@ -593,7 +593,7 @@
         super.initializeDescriptors();
         // Must reset project options to session broker project, as initialization occurs
         // with local projects.
-        for (Iterator enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
+        for (Iterator<AbstractSession> enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
             DatabaseSessionImpl databaseSession = (DatabaseSessionImpl)enumtr.next();
             if (databaseSession.getProject().hasGenericHistorySupport()) {
                 getProject().setHasGenericHistorySupport(true);
@@ -660,8 +660,8 @@
      * Return if this session is a client session broker.
      */
     public boolean isClientSessionBroker() {
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             if (session.isClientSession()) {
                 return true;
@@ -681,8 +681,8 @@
             return false;
         }
 
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             if (!session.isConnected()) {
                 return false;
@@ -697,8 +697,8 @@
      * Return if this session is a server session broker.
      */
     public boolean isServerSessionBroker() {
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             if (session.isServerSession()) {
                 return true;
@@ -726,8 +726,8 @@
     public void login() throws DatabaseException {
         preConnectDatasource();
         // Connection all sessions and initialize
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             DatabaseSessionImpl session = (DatabaseSessionImpl)sessionEnum.next();
             if (!session.isConnected()) {
                 session.login();
@@ -750,8 +750,8 @@
     public void loginAndDetectDatasource() throws DatabaseException {
         preConnectDatasource();
         // Connection all sessions and initialize
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             DatabaseSessionImpl session = (DatabaseSessionImpl)sessionEnum.next();
             if (!session.isConnected()) {
                 if(session.getDatasourcePlatform().getClass().getName().equals("org.eclipse.persistence.platform.database.DatabasePlatform")) {
@@ -773,8 +773,8 @@
     public void login(String userName, String password) throws DatabaseException {
         preConnectDatasource();
         // Connection all sessions and initialize
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             DatabaseSessionImpl session = (DatabaseSessionImpl)sessionEnum.next();
             session.getDatasourceLogin().setUserName(userName);
             session.getDatasourceLogin().setPassword(password);
@@ -802,8 +802,8 @@
             this.eventManager.preLogout(this);
         }
         if (!isClientSessionBroker()) {
-            for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                     sessionEnum.hasNext();) {
+            for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+                 sessionEnum.hasNext();) {
                 DatabaseSessionImpl session = (DatabaseSessionImpl)sessionEnum.next();
                 session.logout();
             }
@@ -821,8 +821,8 @@
      */
     @Override
     public void postLogin() {
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-            sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
            DatabaseSessionImpl session = (DatabaseSessionImpl)sessionEnum.next();
            session.postLogin();
         }
@@ -850,8 +850,8 @@
             }
 
             // The keys/classes must also be used as some descriptors may be under multiple classes.
-            Iterator descriptors = session.getDescriptors().values().iterator();
-            Iterator classes = session.getDescriptors().keySet().iterator();
+            Iterator<ClassDescriptor> descriptors = session.getDescriptors().values().iterator();
+            Iterator<Class<?>> classes = session.getDescriptors().keySet().iterator();
             while (descriptors.hasNext()) {
                 ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
                 Class descriptorClass = (Class)classes.next();
@@ -895,7 +895,7 @@
         }
         RuntimeException exception = null;
         AbstractSession session;
-        for (Iterator enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
+        for (Iterator<AbstractSession> enumtr = getSessionsByName().values().iterator(); enumtr.hasNext();) {
             session = (AbstractSession)enumtr.next();
             try {
                 session.release();
@@ -920,7 +920,7 @@
     public Object retryQuery(DatabaseQuery query, AbstractRecord row, DatabaseException databaseException, int retryCount, AbstractSession executionSession) {
         // If not in a transaction and has a write connection, must release it if invalid.
         if (isClientSessionBroker()) {
-            for (Iterator it = getSessionsByName().values().iterator(); it.hasNext();) {
+            for (Iterator<AbstractSession> it = getSessionsByName().values().iterator(); it.hasNext();) {
                 ClientSession clientSession = (ClientSession)it.next();
                 clientSession.getParent().releaseInvalidClientSession(clientSession);
             }
@@ -949,8 +949,8 @@
     public void setIntegrityChecker(IntegrityChecker integrityChecker) {
         super.setIntegrityChecker(integrityChecker);
 
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.setIntegrityChecker(integrityChecker);
         }
@@ -966,8 +966,8 @@
     public void setSessionLog(SessionLog log) {
         super.setSessionLog(log);
 
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.setSessionLog(log);
         }
@@ -983,8 +983,8 @@
     public void setLog(Writer log) {
         super.setLog(log);
 
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.setLog(log);
         }
@@ -999,8 +999,8 @@
     public void setProfiler(SessionProfiler profiler) {
         super.setProfiler(profiler);
 
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.setProfiler(profiler);
         }
@@ -1032,7 +1032,7 @@
     public void setSynchronized(boolean synched) {
         if(!isServerSessionBroker()) {
             super.setSynchronized(synched);
-            Iterator itSessions = getSessionsByName().values().iterator();
+            Iterator<AbstractSession> itSessions = getSessionsByName().values().iterator();
             while(itSessions.hasNext()) {
                 ((AbstractSession)itSessions.next()).setSynchronized(synched);
             }
@@ -1047,15 +1047,15 @@
      */
     @Override
     public void writesCompleted() {
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             if (!session.isConnected()) {
                 throw DatabaseException.databaseAccessorNotConnected();
             }
         }
-        for (Iterator sessionEnum = getSessionsByName().values().iterator();
-                 sessionEnum.hasNext();) {
+        for (Iterator<AbstractSession> sessionEnum = getSessionsByName().values().iterator();
+             sessionEnum.hasNext();) {
             AbstractSession session = (AbstractSession)sessionEnum.next();
             session.writesCompleted();
         }
@@ -1100,7 +1100,7 @@
             return getParent().howManySequencingCallbacks();
         } else {
             int nCallbacks = 0;
-            Iterator itSessions = getSessionsByName().values().iterator();
+            Iterator<AbstractSession> itSessions = getSessionsByName().values().iterator();
             while(itSessions.hasNext()) {
                 if(((DatabaseSessionImpl)itSessions.next()).isSequencingCallbackRequired()) {
                     nCallbacks++;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/coordination/TransportManager.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/coordination/TransportManager.java
index 68142a6..ef15d6c 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/coordination/TransportManager.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/coordination/TransportManager.java
@@ -342,7 +342,7 @@
      */
     public void removeAllConnectionsToExternalServices() {
         synchronized (this) {
-            Enumeration connections = connectionsToExternalServices.elements();
+            Enumeration<RemoteConnection> connections = connectionsToExternalServices.elements();
             connectionsToExternalServices = new Hashtable(3);
 
             while (connections.hasMoreElements()) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
index 639b36e..83cafbd 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/factories/ProjectClassGenerator.java
@@ -172,8 +172,8 @@
     }
 
     protected void addAggregateCollectionMappingLines(NonreflectiveMethodDefinition method, String mappingName, AggregateCollectionMapping mapping) {
-        Enumeration targetKeysEnum = mapping.getTargetForeignKeyFields().elements();
-        Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements();
+        Enumeration<DatabaseField> targetKeysEnum = mapping.getTargetForeignKeyFields().elements();
+        Enumeration<DatabaseField> sourceKeysEnum = mapping.getSourceKeyFields().elements();
         while (sourceKeysEnum.hasMoreElements()) {
             DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement();
             DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement();
@@ -397,8 +397,8 @@
 
         method.addLine(mappingName + ".setDirectFieldName(\"" + mapping.getDirectFieldName() + "\");");
 
-        Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements();
-        Enumeration referenceKeysEnum = mapping.getReferenceKeyFields().elements();
+        Enumeration<DatabaseField> sourceKeysEnum = mapping.getSourceKeyFields().elements();
+        Enumeration<DatabaseField> referenceKeysEnum = mapping.getReferenceKeyFields().elements();
         while (referenceKeysEnum.hasMoreElements()) {
             DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement();
             DatabaseField referenceField = (DatabaseField)referenceKeysEnum.nextElement();
@@ -434,7 +434,7 @@
         method.addLine("//Fetch groups");
         method.addLine("descriptor.setFetchGroupManager(new FetchGroupManager());");
 
-        Map namedFetchGroups = descriptor.getFetchGroupManager().getFetchGroups();
+        Map<String, FetchGroup> namedFetchGroups = descriptor.getFetchGroupManager().getFetchGroups();
 
         if (descriptor.getFetchGroupManager().getDefaultFetchGroup() != null) {
             String defaultFetchGroupIdentifier = descriptor.getFetchGroupManager().getDefaultFetchGroup().getName() + "FetchGroup";
@@ -446,8 +446,8 @@
         if (namedFetchGroups.isEmpty()) {
             return;
         }
-        for (Iterator namedFetchGroupIter = namedFetchGroups.values().iterator();
-                 namedFetchGroupIter.hasNext();) {
+        for (Iterator<FetchGroup> namedFetchGroupIter = namedFetchGroups.values().iterator();
+             namedFetchGroupIter.hasNext();) {
             FetchGroup namedFetchGroup = (FetchGroup)namedFetchGroupIter.next();
             String fetchGroupIdentifier = namedFetchGroup.getName() + "FetchGroup";
             method.addLine("");
@@ -587,7 +587,7 @@
             }
 
             // Ordering.
-            Iterator queryKeyExpressions = collectionMapping.getOrderByQueryKeyExpressions().iterator();
+            Iterator<Expression> queryKeyExpressions = collectionMapping.getOrderByQueryKeyExpressions().iterator();
             while (queryKeyExpressions.hasNext()) {
                 FunctionExpression expression = (FunctionExpression) queryKeyExpressions.next();
                 String queryKeyName = expression.getBaseExpression().getName();
@@ -712,16 +712,16 @@
             method.addLine(mappingName + ".setRelationTableName(\"" + mapping.getRelationTable().getQualifiedName() + "\");");
         }
 
-        Enumeration sourceRelationKeysEnum = mapping.getSourceRelationKeyFields().elements();
-        Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements();
+        Enumeration<DatabaseField> sourceRelationKeysEnum = mapping.getSourceRelationKeyFields().elements();
+        Enumeration<DatabaseField> sourceKeysEnum = mapping.getSourceKeyFields().elements();
         while (sourceRelationKeysEnum.hasMoreElements()) {
             DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement();
             DatabaseField relationField = (DatabaseField)sourceRelationKeysEnum.nextElement();
             method.addLine(mappingName + ".addSourceRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + sourceField.getQualifiedName() + "\");");
         }
 
-        Enumeration targetRelationKeysEnum = mapping.getTargetRelationKeyFields().elements();
-        Enumeration targetKeysEnum = mapping.getTargetKeyFields().elements();
+        Enumeration<DatabaseField> targetRelationKeysEnum = mapping.getTargetRelationKeyFields().elements();
+        Enumeration<DatabaseField> targetKeysEnum = mapping.getTargetKeyFields().elements();
         while (targetRelationKeysEnum.hasMoreElements()) {
             DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement();
             DatabaseField relationField = (DatabaseField)targetRelationKeysEnum.nextElement();
@@ -821,8 +821,8 @@
     }
 
     protected void addOneToManyMappingLines(NonreflectiveMethodDefinition method, String mappingName, OneToManyMapping mapping) {
-        Enumeration targetKeysEnum = mapping.getTargetForeignKeyFields().elements();
-        Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements();
+        Enumeration<DatabaseField> targetKeysEnum = mapping.getTargetForeignKeyFields().elements();
+        Enumeration<DatabaseField> sourceKeysEnum = mapping.getSourceKeyFields().elements();
         while (sourceKeysEnum.hasMoreElements()) {
             DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement();
             DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement();
@@ -831,8 +831,8 @@
     }
 
     protected void addOneToOneMappingLines(NonreflectiveMethodDefinition method, String mappingName, OneToOneMapping mapping) {
-        for (Iterator foreignKeysEnum = mapping.getSourceToTargetKeyFields().keySet().iterator();
-                 foreignKeysEnum.hasNext();) {
+        for (Iterator<DatabaseField> foreignKeysEnum = mapping.getSourceToTargetKeyFields().keySet().iterator();
+             foreignKeysEnum.hasNext();) {
             DatabaseField sourceField = (DatabaseField)foreignKeysEnum.next();
             DatabaseField targetField = mapping.getSourceToTargetKeyFields().get(sourceField);
             if (mapping.getForeignKeyFields().contains(sourceField)) {
@@ -1191,7 +1191,7 @@
             }
 
             //joinedAttribute
-            for (Iterator joinedEnum = readQuery.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinedEnum.hasNext();) {
+            for (Iterator<Expression> joinedEnum = readQuery.getJoinedAttributeManager().getJoinedAttributeExpressions().iterator(); joinedEnum.hasNext();) {
                 Expression joinedExp = (Expression)joinedEnum.next();
                 builderString = buildBuilderString(builderString, method, iteration, queryIdentifier);
                 buildExpressionString(builderString, method, queryIdentifier, joinedExp, ".addJoinedAttribute(");
@@ -1300,7 +1300,7 @@
 
         // Query arguments.
         Iterator<String> argumentTypes = query.getArgumentTypeNames().iterator();
-        for (Iterator arguments = query.getArguments().iterator(); arguments.hasNext();) {
+        for (Iterator<String> arguments = query.getArguments().iterator(); arguments.hasNext();) {
             String argument = (String)arguments.next();
             String argumentTypeName = argumentTypes.next();
             method.addLine(queryIdentifier + ".addArgument(\"" + argument + "\", " + argumentTypeName + ".class);");
@@ -1383,7 +1383,7 @@
             }
         }
 
-        Iterator fieldTransformations = mapping.getFieldTransformations().iterator();
+        Iterator<FieldTransformation> fieldTransformations = mapping.getFieldTransformations().iterator();
         while (fieldTransformations.hasNext()) {
             FieldTransformation trans = (FieldTransformation)fieldTransformations.next();
             String fieldName = trans.getFieldName();
@@ -1526,21 +1526,21 @@
 
         if ((!descriptor.isAggregateDescriptor()) && (!descriptor.isDescriptorForInterface())) {
             // Tables
-            for (Enumeration tablesEnum = descriptor.getTables().elements();
-                     tablesEnum.hasMoreElements();) {
+            for (Enumeration<DatabaseTable> tablesEnum = descriptor.getTables().elements();
+                 tablesEnum.hasMoreElements();) {
                 String tableName = ((DatabaseTable)tablesEnum.nextElement()).getQualifiedName();
                 method.addLine("descriptor.addTableName(\"" + tableName + "\");");
             }
 
             // Primary key
             if (!descriptor.isChildDescriptor()) {
-                for (Enumeration keysEnum = descriptor.getPrimaryKeyFieldNames().elements();
-                         keysEnum.hasMoreElements();) {
+                for (Enumeration<String> keysEnum = descriptor.getPrimaryKeyFieldNames().elements();
+                     keysEnum.hasMoreElements();) {
                     method.addLine("descriptor.addPrimaryKeyFieldName(\"" + keysEnum.nextElement() + "\");");
                 }
             }
-            for (Iterator multipleTablePrimaryKeysEnum = descriptor.getAdditionalTablePrimaryKeyFields().values().iterator();
-                     multipleTablePrimaryKeysEnum.hasNext();) {
+            for (Iterator<Map<DatabaseField, DatabaseField>> multipleTablePrimaryKeysEnum = descriptor.getAdditionalTablePrimaryKeyFields().values().iterator();
+                 multipleTablePrimaryKeysEnum.hasNext();) {
                 Map keyMapping = (Map)multipleTablePrimaryKeysEnum.next();
                 Iterator keyMappingSourceFieldsEnum = keyMapping.keySet().iterator();
                 Iterator keyMappingTargetFieldsEnum = keyMapping.values().iterator();
@@ -1593,7 +1593,7 @@
         if (!descriptor.getQueryKeys().isEmpty()) {
             method.addLine("");
             method.addLine("// Query keys.");
-            for (Iterator queryKeysEnum = descriptor.getQueryKeys().values().iterator(); queryKeysEnum.hasNext();) {
+            for (Iterator<QueryKey> queryKeysEnum = descriptor.getQueryKeys().values().iterator(); queryKeysEnum.hasNext();) {
                 addQueryKeyLines(method, (QueryKey)queryKeysEnum.next());
             }
         }
@@ -1766,7 +1766,7 @@
      */
     protected void computeDescriptorMethodNames() {
         Hashtable shortNames = new Hashtable();
-        Iterator descriptors = project.getOrderedDescriptors().iterator();
+        Iterator<ClassDescriptor> descriptors = project.getOrderedDescriptors().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor descriptor = (ClassDescriptor)descriptors.next();
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ClientSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ClientSession.java
index aec4918..f219798 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ClientSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ClientSession.java
@@ -416,7 +416,7 @@
      * Return all registered descriptors.
      */
     @Override
-    public Map<Class, ClassDescriptor> getDescriptors() {
+    public Map<Class<?>, ClassDescriptor> getDescriptors() {
         // descriptors from the project may have been modified (for table per
         // tenants so make sure to return the updated ones)
         if (hasTablePerTenantDescriptors()) {
@@ -666,7 +666,7 @@
     @Override
     public void release() throws DatabaseException {
         // Clear referencing classes. If this is not done the object is not garbage collected.
-        for (Map.Entry<Class, ClassDescriptor> entry : getDescriptors().entrySet()) {
+        for (Map.Entry<Class<?>, ClassDescriptor> entry : getDescriptors().entrySet()) {
             entry.getValue().clearReferencingClasses();
         }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ConnectionPool.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ConnectionPool.java
index c38d94f..989a3c9 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ConnectionPool.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ConnectionPool.java
@@ -474,7 +474,7 @@
     public synchronized void shutDown() {
         setIsConnected(false);
 
-        for (Iterator iterator = getConnectionsAvailable().iterator(); iterator.hasNext();) {
+        for (Iterator<Accessor> iterator = getConnectionsAvailable().iterator(); iterator.hasNext();) {
             try {
                 ((Accessor)iterator.next()).disconnect(getOwner());
             } catch (DatabaseException exception) {
@@ -482,7 +482,7 @@
             }
         }
 
-        for (Iterator iterator = getConnectionsUsed().iterator(); iterator.hasNext();) {
+        for (Iterator<Accessor> iterator = getConnectionsUsed().iterator(); iterator.hasNext();) {
             try {
                 ((Accessor)iterator.next()).disconnect(getOwner());
             } catch (DatabaseException exception) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ServerSession.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ServerSession.java
index f496e86..c4b83d5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ServerSession.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/sessions/server/ServerSession.java
@@ -824,7 +824,7 @@
         } finally {
             this.readConnectionPool.shutDown();
 
-            for (Iterator poolsEnum = getConnectionPools().values().iterator(); poolsEnum.hasNext();) {
+            for (Iterator<ConnectionPool> poolsEnum = getConnectionPools().values().iterator(); poolsEnum.hasNext();) {
                 ((ConnectionPool)poolsEnum.next()).shutDown();
             }
         }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/PackageRenamer.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/PackageRenamer.java
index 998c277..6f8b881 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/PackageRenamer.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/PackageRenamer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2018 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -565,8 +565,8 @@
         }
 
         // Sorting key package name.
-        Vector aVector = new Vector();
-        for (Enumeration e = properties.keys(); e.hasMoreElements();) {
+        Vector<Object> aVector = new Vector<>();
+        for (Enumeration<Object> e = properties.keys(); e.hasMoreElements();) {
             aVector.addElement(e.nextElement());
         }
         String[] aStringArrayOfSortedKeyPackageName = new String[aVector.size()];
@@ -576,7 +576,7 @@
         // Starting to rename.
         boolean alreadyPrint = false;
         int index = aStringArrayOfSortedKeyPackageName.length;
-        for (Enumeration enumtr = properties.keys(); enumtr.hasMoreElements();) {
+        for (Enumeration<Object> enumtr = properties.keys(); enumtr.hasMoreElements();) {
             enumtr.nextElement();
             String key = aStringArrayOfSortedKeyPackageName[index - 1];
             String value = (String)properties.get(key);
@@ -650,7 +650,7 @@
      * @return The new filename, regardless of whether is has been changed
      */
     public String returnNewFileNameIfRequired(String aSourceFileNameWithoutRoot) {
-        for (Enumeration enumtr = properties.keys(); enumtr.hasMoreElements();) {
+        for (Enumeration<Object> enumtr = properties.keys(); enumtr.hasMoreElements();) {
             String key = (String)enumtr.nextElement();
 
             if (aSourceFileNameWithoutRoot.indexOf(key) != -1) {
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java
index 025fafd..6450df5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/DefaultTableGenerator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2015 Sei Syvalta. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -245,7 +245,7 @@
 
             List existedTables = new ArrayList();
             List existedTableNames = new ArrayList();
-            Iterator tblDefIter = tblCreator.getTableDefinitions().iterator();
+            Iterator<TableDefinition> tblDefIter = tblCreator.getTableDefinitions().iterator();
 
             while (tblDefIter.hasNext()) {
                 TableDefinition tblDef = (TableDefinition) tblDefIter.next();
@@ -295,7 +295,7 @@
                 isPKField = descriptor.getPrimaryKeyFields().contains(dbField);
 
                 //then check if the field is a pk field in the secondary table(s), this is only applied to the multiple tables case.
-                Map secondaryKeyMap = descriptor.getAdditionalTablePrimaryKeyFields().get(dbField.getTable());
+                Map<DatabaseField, DatabaseField> secondaryKeyMap = descriptor.getAdditionalTablePrimaryKeyFields().get(dbField.getTable());
 
                 if (secondaryKeyMap != null) {
                     isPKField = isPKField || secondaryKeyMap.containsValue(dbField);
@@ -556,14 +556,14 @@
      * Reset the transformation mapping field types
      */
     protected void resetTransformedFieldType(TransformationMapping mapping) {
-        Iterator transIter = mapping.getFieldTransformations().iterator();
+        Iterator<FieldTransformation> transIter = mapping.getFieldTransformations().iterator();
         while (transIter.hasNext()) {
             FieldTransformation transformation = (FieldTransformation) transIter.next();
 
             if (transformation instanceof MethodBasedFieldTransformation) {
                 MethodBasedFieldTransformation methodTransformation = (MethodBasedFieldTransformation) transformation;
                 try {
-                    Class returnType = Helper.getDeclaredMethod(mapping.getDescriptor().getJavaClass(), methodTransformation.getMethodName(), null).getReturnType();
+                    Class<?> returnType = Helper.getDeclaredMethod(mapping.getDescriptor().getJavaClass(), methodTransformation.getMethodName(), null).getReturnType();
                     getFieldDefFromDBField(methodTransformation.getField()).setType(returnType);
                 } catch (NoSuchMethodException ex) {
                     // For some reason, the method type could not be retrieved,
@@ -576,7 +576,7 @@
                 Class[] params = new Class[] {Object.class, String.class, Session.class};
 
                 try {
-                    Class returnType = Helper.getDeclaredMethod(classTransformation.getTransformerClass(), methodName, params).getReturnType();
+                    Class<?> returnType = Helper.getDeclaredMethod(classTransformation.getTransformerClass(), methodName, params).getReturnType();
 
                     if (returnType.equals(Object.class)) {
                         // User needs to be more specific with their class
@@ -603,7 +603,7 @@
         TableDefinition targetTable = getTableDefFromDBTable(mapping.getReferenceDescriptor().getDefaultTable());
         addFieldsForMappedKeyMapContainerPolicy(mapping.getContainerPolicy(), targetTable);
 
-        Iterator aggregateFieldIterator = mapping.getReferenceDescriptor().getFields().iterator();
+        Iterator<DatabaseField> aggregateFieldIterator = mapping.getReferenceDescriptor().getFields().iterator();
         while (aggregateFieldIterator.hasNext()) {
             DatabaseField dbField = (DatabaseField) aggregateFieldIterator.next();
             //add the target definition to the table definition
@@ -874,7 +874,7 @@
         }
 
         DatabaseTable databaseTable = null;
-        Iterator dbTblIter = descriptor.getTables().iterator();
+        Iterator<DatabaseTable> dbTblIter = descriptor.getTables().iterator();
         while (dbTblIter.hasNext()) {
             databaseTable = (DatabaseTable) dbTblIter.next();
             Map<DatabaseField, DatabaseField> srcFields = descriptor.getAdditionalTablePrimaryKeyFields().get(databaseTable);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/ForeignKeyConstraint.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/ForeignKeyConstraint.java
index 73d023d..5a44d1a 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/ForeignKeyConstraint.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/ForeignKeyConstraint.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -70,7 +70,7 @@
                 writer.write(getForeignKeyDefinition());
             } else {
                 writer.write("FOREIGN KEY (");
-                for (Iterator iterator = getSourceFields().iterator(); iterator.hasNext();) {
+                for (Iterator<String> iterator = getSourceFields().iterator(); iterator.hasNext();) {
                     writer.write((String)iterator.next());
                     if (iterator.hasNext()) {
                         writer.write(", ");
@@ -79,7 +79,7 @@
                 writer.write(") REFERENCES ");
                 writer.write(getTargetTable());
                 writer.write(" (");
-                for (Iterator iterator = getTargetFields().iterator(); iterator.hasNext();) {
+                for (Iterator<String> iterator = getTargetFields().iterator(); iterator.hasNext();) {
                     writer.write((String)iterator.next());
                     if (iterator.hasNext()) {
                         writer.write(", ");
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/StoredProcedureGenerator.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/StoredProcedureGenerator.java
index fdb785c..81969ae 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/StoredProcedureGenerator.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/StoredProcedureGenerator.java
@@ -28,6 +28,7 @@
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.exceptions.ValidationException;
+import org.eclipse.persistence.internal.databaseaccess.DatasourceCall;
 import org.eclipse.persistence.internal.expressions.ParameterExpression;
 import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.internal.helper.Helper;
@@ -63,22 +64,22 @@
 public class StoredProcedureGenerator {
     public SchemaManager schemaManager;
     /** This hashtable is used to store the storedProcedure referenced by the class name. */
-    private Hashtable storedProcedures;
+    private Hashtable<ClassDescriptor, Vector<StoredProcedureDefinition>> storedProcedures;
     /** This hashtable is used to store the storedProcedure referenced by the mapping name. */
-    private Hashtable mappingStoredProcedures;
-    private Hashtable intToTypeConverterHash;
+    private Hashtable<ClassDescriptor, Hashtable<String, Hashtable<String, StoredProcedureDefinition>>> mappingStoredProcedures;
+    private Hashtable<Integer, Class<?>> intToTypeConverterHash;
     private Writer writer;
     private String prefix;
     private static final String DEFAULT_PREFIX = "";
-    private Hashtable sequenceProcedures;
+    private Hashtable<String, StoredProcedureDefinition> sequenceProcedures;
     private static final int MAX_NAME_SIZE = 30;
 
     public StoredProcedureGenerator(SchemaManager schemaMngr) {
         super();
         this.schemaManager = schemaMngr;
-        this.sequenceProcedures = new Hashtable();
-        this.storedProcedures = new Hashtable();
-        this.mappingStoredProcedures = new Hashtable();
+        this.sequenceProcedures = new Hashtable<>();
+        this.storedProcedures = new Hashtable<>();
+        this.mappingStoredProcedures = new Hashtable<>();
         this.buildIntToTypeConverterHash();
         this.prefix = DEFAULT_PREFIX;
         this.verify();
@@ -88,7 +89,7 @@
      * INTERNAL: Build all conversions based on JDBC return values.
      */
     protected void buildIntToTypeConverterHash() {
-        this.intToTypeConverterHash = new Hashtable();
+        this.intToTypeConverterHash = new Hashtable<>();
         this.intToTypeConverterHash.put(8, Double.class);
         this.intToTypeConverterHash.put(-7, Boolean.class);
         this.intToTypeConverterHash.put(-3, Byte[].class);
@@ -167,7 +168,7 @@
             outputWriter.write("This is a EclipseLink generated class to add stored procedure admendments to a project.  \n * Any changes to this code will be lost when the class is regenerated \n */\npublic class ");
             outputWriter.write(className);
             outputWriter.write("{\n");
-            Enumeration descriptorEnum = this.storedProcedures.keys();
+            Enumeration<ClassDescriptor> descriptorEnum = this.storedProcedures.keys();
             while (descriptorEnum.hasMoreElements()) {
                 descriptor = (ClassDescriptor)descriptorEnum.nextElement();
                 if (descriptor.isDescriptorForInterface() || descriptor.isAggregateDescriptor()) {
@@ -391,12 +392,12 @@
      * INTERNAL: Generates the mapping stored procedures for this descriptor.
      * currently only 1:1 and 1:M are supported
      */
-    protected Hashtable generateMappingStoredProcedures(ClassDescriptor descriptor) {
-        Vector mappings = descriptor.getMappings();
-        Hashtable mappingSP = new Hashtable();
-        Hashtable mappingTable;
-        for (Enumeration enumtr = mappings.elements(); enumtr.hasMoreElements();) {
-            mappingTable = new Hashtable();
+    protected Hashtable<String, Hashtable<String, StoredProcedureDefinition>> generateMappingStoredProcedures(ClassDescriptor descriptor) {
+        Vector<DatabaseMapping> mappings = descriptor.getMappings();
+        Hashtable<String, Hashtable<String, StoredProcedureDefinition>> mappingSP = new Hashtable<>();
+        Hashtable<String, StoredProcedureDefinition> mappingTable;
+        for (Enumeration<DatabaseMapping> enumtr = mappings.elements(); enumtr.hasMoreElements();) {
+            mappingTable = new Hashtable<>();
             DatabaseMapping mapping = (DatabaseMapping)enumtr.nextElement();
             if (mapping.isOneToManyMapping()) {
                 if (!getSession().getPlatform().isOracle()) {
@@ -526,8 +527,8 @@
      */
     protected StoredProcedureDefinition generateStoredProcedure(DatabaseQuery query, List<DatabaseField> fields, AbstractRecord rowForPrepare, String name) {
         StoredProcedureDefinition definition = new StoredProcedureDefinition();
-        Vector callVector;
-        Vector statementVector = new Vector();
+        Vector<DatasourceCall> callVector;
+        Vector<String> statementVector = new Vector<>();
 
         query.checkPrepare(getSession(), rowForPrepare, true);
         callVector = ((CallQueryMechanism)query.getQueryMechanism()).getCalls();
@@ -538,7 +539,7 @@
                 callVector.addElement(((CallQueryMechanism)query.getQueryMechanism()).getCall());
             }
         }
-        Enumeration enumtr = callVector.elements();
+        Enumeration<DatasourceCall> enumtr = callVector.elements();
         while (enumtr.hasMoreElements()) {
             SQLCall call = (SQLCall)enumtr.nextElement();
             statementVector.addElement(this.buildProcedureString(call));
@@ -588,11 +589,11 @@
         // Must turn binding off to ensure literals are printed correctly.
         boolean wasBinding = getSession().getLogin().shouldBindAllParameters();
         getSession().getLogin().setShouldBindAllParameters(false);
-        Map descriptors = getSession().getProject().getDescriptors();
-        Iterator iterator = descriptors.keySet().iterator();
+        Map<Class<?>, ClassDescriptor> descriptors = getSession().getProject().getDescriptors();
+        Iterator<Class<?>> iterator = descriptors.keySet().iterator();
         ClassDescriptor desc;
         StoredProcedureDefinition definition;
-        Vector definitionVector;
+        Vector<StoredProcedureDefinition> definitionVector;
         this.generateSequenceStoredProcedures(getSession().getProject());
         while (iterator.hasNext()) {
             desc = (ClassDescriptor)descriptors.get(iterator.next());
@@ -600,7 +601,7 @@
                 continue;
             }
             definition = this.generateInsertStoredProcedure(desc);
-            definitionVector = new Vector();
+            definitionVector = new Vector<>();
             definitionVector.addElement(definition);
             this.writeDefinition(definition);
             definition = this.generateUpdateStoredProcedure(desc);
@@ -617,9 +618,9 @@
                 definitionVector.addElement(definition);
                 this.writeDefinition(definition);
             }
-            Hashtable mappingDefinitions = this.generateMappingStoredProcedures(desc);
-            for (Enumeration enum2 = mappingDefinitions.elements(); enum2.hasMoreElements();) {
-                Hashtable table = (Hashtable)enum2.nextElement();
+            Hashtable<String, Hashtable<String, StoredProcedureDefinition>> mappingDefinitions = this.generateMappingStoredProcedures(desc);
+            for (Enumeration<Hashtable<String, StoredProcedureDefinition>> enum2 = mappingDefinitions.elements(); enum2.hasMoreElements();) {
+                Hashtable<String, StoredProcedureDefinition> table = enum2.nextElement();
                 definition = (StoredProcedureDefinition)table.get("1MREAD");
                 if (definition != null) {
                     this.writeDefinition(definition);
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/UniqueKeyConstraint.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/UniqueKeyConstraint.java
index c179df5..5c85522 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/UniqueKeyConstraint.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/UniqueKeyConstraint.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -60,8 +60,8 @@
     public void appendDBString(Writer writer, AbstractSession session) {
         try {
             writer.write("UNIQUE (");
-            for (Enumeration sourceEnum = getSourceFields().elements();
-                     sourceEnum.hasMoreElements();) {
+            for (Enumeration<String> sourceEnum = getSourceFields().elements();
+                 sourceEnum.hasMoreElements();) {
                 writer.write((String)sourceEnum.nextElement());
                 if (sourceEnum.hasMoreElements()) {
                     writer.write(", ");
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/jotm/JotmTransactionController.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/jotm/JotmTransactionController.java
index e17a942..5d025d4 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/jotm/JotmTransactionController.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/jotm/JotmTransactionController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -54,11 +54,11 @@
     protected TransactionManager acquireTransactionManager() throws Exception {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
             try{
-                Class clazz = AccessController.doPrivileged(new PrivilegedClassForName(TX_CURRENT_FACTORY_CLASS));
+                Class<? extends TransactionManager> clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(TX_CURRENT_FACTORY_CLASS));
                 Method method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, TX_CURRENT_FACTORY_METHOD, null, false));
                 Method txMethod = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, TX_MANAGER_FACTORY_METHOD, null, false));
-                Object current = AccessController.doPrivileged(new PrivilegedMethodInvoker(method, null, null));
-                return (TransactionManager) AccessController.doPrivileged(new PrivilegedMethodInvoker(txMethod, current, null));
+                TransactionManager current = AccessController.doPrivileged(new PrivilegedMethodInvoker<TransactionManager>(method, null, null));
+                return AccessController.doPrivileged(new PrivilegedMethodInvoker<>(txMethod, current, null));
             }catch (PrivilegedActionException ex){
                 if (ex.getCause() instanceof ClassNotFoundException){
                     throw (ClassNotFoundException)ex.getCause();
@@ -75,11 +75,11 @@
                 throw (RuntimeException) ex.getCause();
             }
         }else{
-            Class clazz = PrivilegedAccessHelper.getClassForName(TX_CURRENT_FACTORY_CLASS);
+            Class<? extends TransactionManager> clazz = PrivilegedAccessHelper.getClassForName(TX_CURRENT_FACTORY_CLASS);
             Method method = PrivilegedAccessHelper.getMethod(clazz, TX_CURRENT_FACTORY_METHOD, null, false);
             Method txMethod = PrivilegedAccessHelper.getMethod(clazz, TX_MANAGER_FACTORY_METHOD, null, false);
-            Object current = PrivilegedAccessHelper.invokeMethod(method, null, null);
-            return (TransactionManager)PrivilegedAccessHelper.invokeMethod(txMethod, current, null);
+            TransactionManager current = PrivilegedAccessHelper.invokeMethod(method, null, null);
+            return PrivilegedAccessHelper.invokeMethod(txMethod, current, null);
         }
     }
 }
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/was/WebSphereTransactionController.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/was/WebSphereTransactionController.java
index bfc3137..9d915b8 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/was/WebSphereTransactionController.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/transaction/was/WebSphereTransactionController.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2018 IBM Corporation and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -66,9 +66,9 @@
     protected TransactionManager acquireTransactionManager() throws Exception {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
             try{
-                Class clazz = AccessController.doPrivileged(new PrivilegedClassForName(getTxManagerFactoryClass()));
+                Class<? extends TransactionManager> clazz = AccessController.doPrivileged(new PrivilegedClassForName<>(getTxManagerFactoryClass()));
                 Method method = AccessController.doPrivileged(new PrivilegedGetMethod(clazz, getTxManagerFactoryMethod(), null, false));
-                return (TransactionManager) AccessController.doPrivileged(new PrivilegedMethodInvoker(method, null, null));
+                return AccessController.doPrivileged(new PrivilegedMethodInvoker<>(method, null, null));
             }catch (PrivilegedActionException ex){
                 if (ex.getCause() instanceof ClassNotFoundException){
                     throw (ClassNotFoundException)ex.getCause();
@@ -85,9 +85,9 @@
                 throw (RuntimeException) ex.getCause();
             }
         }else{
-            Class clazz = PrivilegedAccessHelper.getClassForName(getTxManagerFactoryClass());
+            Class<? extends TransactionManager> clazz = PrivilegedAccessHelper.getClassForName(getTxManagerFactoryClass());
             Method method = PrivilegedAccessHelper.getMethod(clazz, getTxManagerFactoryMethod(), null, false);
-            return (TransactionManager)PrivilegedAccessHelper.invokeMethod(method, null, null);
+            return PrivilegedAccessHelper.invokeMethod(method, null, null);
         }
     }
 }
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursNSTransformer.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursNSTransformer.java
index d05c784..95f9f8c 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursNSTransformer.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursNSTransformer.java
@@ -64,8 +64,8 @@
          * This conversion allows for the database type not to match, i.e. may be a Timestamp or
          * String.
          */
-        hours[0] = (Time)session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get(startTimeField), Time.class);
-        hours[1] = (Time)session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get(endTimeField), Time.class);
+        hours[0] = session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get(startTimeField), Time.class);
+        hours[1] = session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get(endTimeField), Time.class);
 
         return hours;
     }
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursTransformer.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursTransformer.java
index ab264f1..a22ef41 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursTransformer.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/models/employee/eis/xmlfile/NormalHoursTransformer.java
@@ -49,8 +49,8 @@
          * This conversion allows for the database type not to match, i.e. may be a Timestamp or
          * String.
          */
-        hours[0] = (Time)session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get("START_TIME/text()"), Time.class);
-        hours[1] = (Time)session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get("END_TIME/text()"), Time.class);
+        hours[0] = session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get("START_TIME/text()"), Time.class);
+        hours[1] = session.getProject().getDatasourceLogin().getDatasourcePlatform().convertObject(row.get("END_TIME/text()"), Time.class);
 
         return hours;
     }
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/OXTestCase.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/OXTestCase.java
index f19efa1..5208694 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/OXTestCase.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/OXTestCase.java
@@ -26,6 +26,8 @@
 import java.io.StringWriter;
 import java.io.Writer;
 import java.lang.reflect.Constructor;
+import java.util.Collection;
+import java.util.Iterator;
 import javax.xml.stream.XMLEventReader;
 import javax.xml.stream.XMLEventWriter;
 import javax.xml.stream.XMLInputFactory;
@@ -125,8 +127,8 @@
 
     public XMLContext getXMLContext(Project project) {
         if (platform == Platform.DOC_PRES) {
-            java.util.Collection descriptors = project.getDescriptors().values();
-            java.util.Iterator iter = descriptors.iterator();
+            Collection<ClassDescriptor> descriptors = project.getDescriptors().values();
+            Iterator<ClassDescriptor> iter = descriptors.iterator();
             while (iter.hasNext()) {
                 ClassDescriptor nextDesc = (ClassDescriptor)iter.next();
                 if (nextDesc instanceof org.eclipse.persistence.oxm.XMLDescriptor) {
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/XMLTestCase.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/XMLTestCase.java
index 11a637b..e902b7e 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/XMLTestCase.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/XMLTestCase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -59,7 +59,7 @@
             Object testItem = Array.get(testValue, x);
             if(null == controlItem) {
                 assertEquals(null, testItem);
-                Class controlItemClass = controlItem.getClass();
+                Class<? extends Object> controlItemClass = controlItem.getClass();
                 if(controlItemClass.isArray()) {
                     compareArrays(controlItem, testItem);
                 } else {
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/mappings/EISMappingTestCases.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/mappings/EISMappingTestCases.java
index 9189f42..641d301 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/mappings/EISMappingTestCases.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/oxm/mappings/EISMappingTestCases.java
@@ -27,6 +27,7 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
+import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.eis.EISDescriptor;
 import org.eclipse.persistence.eis.mappings.*;
 import org.eclipse.persistence.internal.eis.adapters.xmlfile.XMLFileConnectionFactory;
@@ -96,8 +97,8 @@
             log("DEPLOYMENT XML: " + stringWriter.toString());
 
             Project newProject = XMLProjectReader.read(new StringReader(stringWriter.toString()));
-            Map descriptors = project.getDescriptors();
-            Iterator keysIterator = descriptors.keySet().iterator();
+            Map<Class<?>, ClassDescriptor> descriptors = project.getDescriptors();
+            Iterator<Class<?>> keysIterator = descriptors.keySet().iterator();
             while (keysIterator.hasNext()) {
                 Class nextClass = (Class)keysIterator.next();
                 EISDescriptor next = (EISDescriptor)descriptors.get(nextClass);
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/BasicReadWriteTest.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/BasicReadWriteTest.java
index f81060a..77494c4 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/BasicReadWriteTest.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/BasicReadWriteTest.java
@@ -32,7 +32,7 @@
     protected void test() {
         RecordMetaData recordMetaData = CobolTestModel.getConversionRecord();
         row = CobolTestModel.getConversionRow();
-        Enumeration fieldEnum = row.getFields().elements();
+        Enumeration<DatabaseField> fieldEnum = row.getFields().elements();
         resultRow = new CobolRow();
         //write to array
         while (fieldEnum.hasMoreElements()) {
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/CobolTestModel.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/CobolTestModel.java
index 9a183ed..478ce67 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/CobolTestModel.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/CobolTestModel.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -516,7 +516,7 @@
             return false;
         }
 
-        Enumeration fieldsEnum = row1.getFields().elements();
+        Enumeration<DatabaseField> fieldsEnum = row1.getFields().elements();
         while (fieldsEnum.hasMoreElements()) {
             DatabaseField field = (DatabaseField)fieldsEnum.nextElement();
             DatabaseField fieldMatch = row2.getField(field);
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/RedefineConverterTest.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/RedefineConverterTest.java
index 7fad27a..de57960 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/RedefineConverterTest.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/cobol/RedefineConverterTest.java
@@ -34,7 +34,7 @@
         row = CobolTestModel.getConversionRow();
         row.remove("emp-tasks");
         row.add(new DatabaseField("emp-depart"), "accounting");
-        Enumeration fieldEnum = row.getFields().elements();
+        Enumeration<DatabaseField> fieldEnum = row.getFields().elements();
         resultRow = new CobolRow();
         //write to array
         while (fieldEnum.hasMoreElements()) {
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/xmlfile/EmployeeBasicTestModel.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/xmlfile/EmployeeBasicTestModel.java
index 7007118..3593c40 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/xmlfile/EmployeeBasicTestModel.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/eis/xmlfile/EmployeeBasicTestModel.java
@@ -46,9 +46,9 @@
         suite.setName("EmployeeDeleteObjectTestSuite");
         suite.setDescription("This suite tests the deletion of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new DeleteObjectTest(manager.getObject(employeeClass, "0001")));
@@ -109,9 +109,9 @@
         suite.setName("EmployeeReadObjectTestSuite");
         suite.setDescription("This suite test the reading of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new ReadObjectTest(manager.getObject(employeeClass, "0001")));
@@ -136,9 +136,9 @@
         suite.setName("EmployeeUpdateObjectTestSuite");
         suite.setDescription("This suite tests the updating of each object in the employee demo.");
 
-        Class employeeClass = Employee.class;
-        Class largeProjectClass = LargeProject.class;
-        Class smallProjectClass = SmallProject.class;
+        Class<Employee> employeeClass = Employee.class;
+        Class<LargeProject> largeProjectClass = LargeProject.class;
+        Class<SmallProject> smallProjectClass = SmallProject.class;
         PopulationManager manager = PopulationManager.getDefaultManager();
 
         suite.addTest(new WriteObjectTest(manager.getObject(employeeClass, "0001")));
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoDatabaseTestSuite.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoDatabaseTestSuite.java
index 7f7b5dc..a27b42a 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoDatabaseTestSuite.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoDatabaseTestSuite.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -987,7 +987,7 @@
      * Test dynamic entities.
      */
     public void testDynamicEntities() {
-        final Map properties = new HashMap<String, String>(this.properties);
+        final Map<String, Object> properties = new HashMap<>(this.properties);
         properties.put("eclipselink.classloader", new DynamicClassLoader(getClass().getClassLoader()));
         properties.put("eclipselink.logging.level", "finest");
         final EntityManagerFactory factory = Persistence.createEntityManagerFactory("mongo-dynamic", properties);
diff --git a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoTestSuite.java b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoTestSuite.java
index 79ca0c6..c29889c 100644
--- a/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoTestSuite.java
+++ b/foundation/org.eclipse.persistence.nosql/src/it/java/org/eclipse/persistence/testing/tests/jpa/mongo/MongoTestSuite.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -962,7 +962,7 @@
      * Test dynamic entities.
      */
     public void testDynamicEntities() {
-        final Map properties = new HashMap<String, String>(this.properties);
+        final Map<String, Object> properties = new HashMap<>(this.properties);
         properties.put("eclipselink.classloader", new DynamicClassLoader(getClass().getClassLoader()));
         properties.put("eclipselink.logging.level", "finest");
         final EntityManagerFactory factory = Persistence.createEntityManagerFactory("mongo-dynamic", properties);
diff --git a/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoDatabaseInteraction.java b/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoDatabaseInteraction.java
index 6ea8c74..162e745 100644
--- a/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoDatabaseInteraction.java
+++ b/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoDatabaseInteraction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -23,7 +23,6 @@
 import jakarta.resource.cci.Connection;
 import jakarta.resource.cci.Interaction;
 import jakarta.resource.cci.InteractionSpec;
-import jakarta.resource.cci.Record;
 import jakarta.resource.cci.ResourceWarning;
 
 import org.bson.Document;
@@ -68,7 +67,7 @@
      * Output records are not supported/required.
      */
     @Override
-    public boolean execute(InteractionSpec spec, Record input, Record output) throws ResourceException {
+    public boolean execute(InteractionSpec spec, jakarta.resource.cci.Record input, jakarta.resource.cci.Record output) throws ResourceException {
         if (!(spec instanceof MongoInteractionSpec)) {
             throw EISException.invalidInteractionSpecType();
         }
@@ -115,7 +114,7 @@
      * The spec is either GET, PUT or DELETE interaction.
      */
     @Override
-    public Record execute(InteractionSpec spec, Record record) throws ResourceException {
+    public jakarta.resource.cci.Record execute(InteractionSpec spec, jakarta.resource.cci.Record record) throws ResourceException {
         if (!(spec instanceof MongoInteractionSpec)) {
             throw EISException.invalidInteractionSpecType();
         }
@@ -244,11 +243,11 @@
      */
     public MongoRecord buildRecordFromDBObject(Document object) {
         MongoRecord record = new MongoRecord();
-        for (Iterator iterator = object.entrySet().iterator(); iterator.hasNext(); ) {
+        for (Iterator<Map.Entry<String, Object>> iterator = object.entrySet().iterator(); iterator.hasNext(); ) {
             Map.Entry entry = (Map.Entry)iterator.next();
             if (entry.getValue() instanceof BasicDBList) {
                 List values = new ArrayList();
-                for (Iterator valuesIterator = ((BasicDBList)entry.getValue()).iterator(); valuesIterator.hasNext(); ) {
+                for (Iterator<Object> valuesIterator = ((BasicDBList)entry.getValue()).iterator(); valuesIterator.hasNext(); ) {
                     Object value = valuesIterator.next();
                     if (value instanceof Document) {
                         values.add(buildRecordFromDBObject((Document)value));
diff --git a/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoInteraction.java b/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoInteraction.java
index 328a960..8fa7e41 100644
--- a/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoInteraction.java
+++ b/foundation/org.eclipse.persistence.nosql/src/main/java/org/eclipse/persistence/internal/nosql/adapters/mongo/MongoInteraction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -217,7 +217,7 @@
             Map.Entry entry = (Map.Entry)iterator.next();
             if (entry.getValue() instanceof BasicDBList) {
                 List values = new ArrayList();
-                for (Iterator valuesIterator = ((BasicDBList)entry.getValue()).iterator(); valuesIterator.hasNext(); ) {
+                for (Iterator<Object> valuesIterator = ((BasicDBList)entry.getValue()).iterator(); valuesIterator.hasNext(); ) {
                     Object value = valuesIterator.next();
                     if (value instanceof DBObject) {
                         values.add(buildRecordFromDBObject((DBObject)value));
diff --git a/foundation/org.eclipse.persistence.oracle.nosql/src/main/java/org/eclipse/persistence/nosql/adapters/nosql/OracleNoSQLPlatform.java b/foundation/org.eclipse.persistence.oracle.nosql/src/main/java/org/eclipse/persistence/nosql/adapters/nosql/OracleNoSQLPlatform.java
index 49c24dc..dc0e428 100644
--- a/foundation/org.eclipse.persistence.oracle.nosql/src/main/java/org/eclipse/persistence/nosql/adapters/nosql/OracleNoSQLPlatform.java
+++ b/foundation/org.eclipse.persistence.oracle.nosql/src/main/java/org/eclipse/persistence/nosql/adapters/nosql/OracleNoSQLPlatform.java
@@ -329,11 +329,11 @@
             if (id instanceof CacheId) {
                 Object[] idValues = ((CacheId)id).getPrimaryKey();
                 for (Object idValue : idValues) {
-                    String idString = (String)accessor.getDatasourcePlatform().getConversionManager().convertObject(idValue, String.class);
+                    String idString = accessor.getDatasourcePlatform().getConversionManager().convertObject(idValue, String.class);
                     key.add(idString);
                 }
             } else {
-                String idString = (String)accessor.getDatasourcePlatform().getConversionManager().convertObject(id, String.class);
+                String idString = accessor.getDatasourcePlatform().getConversionManager().convertObject(id, String.class);
                 key.add(idString);
             }
         }
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/CMAndPlatformWrapper.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/CMAndPlatformWrapper.java
index aa26f8c..a1ef1a7 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/CMAndPlatformWrapper.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/CMAndPlatformWrapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,6 +14,7 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.tests.conversion;
 
+import java.util.List;
 import java.util.Vector;
 
 import org.eclipse.persistence.internal.helper.ConversionManager;
@@ -27,7 +28,7 @@
         wrappedObj = object;
     }
 
-    public Vector getDataTypesConvertedFrom(Class aClass) {
+    public List getDataTypesConvertedFrom(Class aClass) {
         if (wrappedObj instanceof ConversionManager) {
             return ((ConversionManager)wrappedObj).getDataTypesConvertedFrom(aClass);
         } else if (wrappedObj instanceof Oracle9Platform) {
@@ -36,7 +37,7 @@
         return new Vector();
     }
 
-    public Vector getDataTypesConvertedTo(Class aClass) {
+    public List getDataTypesConvertedTo(Class aClass) {
         if (wrappedObj instanceof ConversionManager) {
             return ((ConversionManager)wrappedObj).getDataTypesConvertedTo(aClass);
         } else if (wrappedObj instanceof Oracle9Platform) {
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConversionManagerOracleTestModel.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConversionManagerOracleTestModel.java
index e521a01..72d0298 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConversionManagerOracleTestModel.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/ConversionManagerOracleTestModel.java
@@ -40,7 +40,7 @@
 
 
         try{
-            Class testCaseClass = Class.forName("org.eclipse.persistence.testing.tests.conversion.DataTypesConvertedFromAClassTest");
+            Class<?> testCaseClass = Class.forName("org.eclipse.persistence.testing.tests.conversion.DataTypesConvertedFromAClassTest");
             junit.framework.Test testCase = (junit.framework.Test)testCaseClass.getConstructor().newInstance();
             suite.addTest(testCase);
 
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedFromAClassTest.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedFromAClassTest.java
index 02982c1..3d5d3b2 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedFromAClassTest.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedFromAClassTest.java
@@ -14,6 +14,7 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.tests.conversion;
 
+import java.util.List;
 import java.util.Vector;
 import java.util.Calendar;
 import java.sql.Timestamp;
@@ -46,7 +47,7 @@
 
     @Override
     public void test() {
-        Vector vec;
+        List vec;
         int x;
         int y;
         Object obj;
@@ -67,15 +68,15 @@
                 vec = wrapper.getDataTypesConvertedFrom(type);
                 for (y = 0; y < vec.size(); y++) {
                     //Different string formats are required for number, date and other types
-                    if ((fields[x].getName().equals("stringToInt") && !isNumber((Class)vec.elementAt(y))) || (fields[x].getName().equals("stringToTimestamp") && !isTimestamp((Class)vec.elementAt(y))) || (fields[x].getName().equals("aString") && !isChar((Class)vec.elementAt(y)))) {
+                    if ((fields[x].getName().equals("stringToInt") && !isNumber((Class)vec.get(y))) || (fields[x].getName().equals("stringToTimestamp") && !isTimestamp((Class)vec.get(y))) || (fields[x].getName().equals("aString") && !isChar((Class)vec.get(y)))) {
                         continue;
                     }
                     try {
-                        wrapper.convertObject(obj, (Class)vec.elementAt(y));
+                        wrapper.convertObject(obj, (Class)vec.get(y));
                     } catch (Exception e) {
                         exception2 = e;
                         sourceClass = fields[x].getType();
-                        targetClass = (Class)vec.elementAt(y);
+                        targetClass = (Class)vec.get(y);
                     }
                 }
             }
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedToAClassTest.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedToAClassTest.java
index 5204352..b73a718 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedToAClassTest.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/conversion/DataTypesConvertedToAClassTest.java
@@ -14,6 +14,7 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.tests.conversion;
 
+import java.util.List;
 import java.util.Vector;
 import java.util.Calendar;
 import java.sql.*;
@@ -48,7 +49,7 @@
 
     @Override
     public void test() {
-        Vector vec;
+        List vec;
         int x;
         int y;
         int z;
@@ -63,7 +64,7 @@
             for (y = 0; y < vec.size(); y++) {
                 for (z = 0; z < fields.length; z++) {
                     type = fields[z].getType();
-                    if (vec.elementAt(y) == type) {
+                    if (vec.get(y) == type) {
                         try {
                             obj = fields[z].get(example);
                         } catch (IllegalAccessException e) {
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/CacheInvalidator.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/CacheInvalidator.java
index 56326eb..7d326d1 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/CacheInvalidator.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/CacheInvalidator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -59,7 +59,7 @@
         HashSet tableNames = new HashSet();
 
         // fill out tableNames collection with all tables' names mapped by all descriptors
-        Iterator descriptors = session.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = session.getDescriptors().values().iterator();
         while (descriptors.hasNext()) {
             ClassDescriptor desc = (ClassDescriptor)descriptors.next();
 
@@ -92,7 +92,7 @@
         // pkFieldVectors cached here to avoid calculating it more than once per class
         Hashtable classToPkFieldNames = new Hashtable();
         // loop through the descriptors to fill out tableNameToClass and tableNameToPkFieldNames
-        Iterator descriptors = session.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> descriptors = session.getDescriptors().values().iterator();
         while (descriptors.hasNext() && !tableNames.isEmpty()) {
             ClassDescriptor desc = (ClassDescriptor)descriptors.next();
 
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/DbChangeNotificationAdapter.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/DbChangeNotificationAdapter.java
index d2d7808..e12d4f5 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/DbChangeNotificationAdapter.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/dbchangenotification/DbChangeNotificationAdapter.java
@@ -51,10 +51,10 @@
 
     @Override
     public void updateProject(Project project, Session session) {
-        Iterator it = project.getDescriptors().values().iterator();
+        Iterator<ClassDescriptor> it = project.getDescriptors().values().iterator();
         while (it.hasNext()) {
             ClassDescriptor desc = (ClassDescriptor)it.next();
-            Enumeration enumDescTableNames = desc.getTables().elements();
+            Enumeration<DatabaseTable> enumDescTableNames = desc.getTables().elements();
             while (enumDescTableNames.hasMoreElements()) {
                 String tableName = ((DatabaseTable)enumDescTableNames.nextElement()).getName();
                 if (!tableNamesToPkFields.containsKey(tableName)) {
diff --git a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/proxyauthentication/ProxyAuthenticationServerTestSuite.java b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/proxyauthentication/ProxyAuthenticationServerTestSuite.java
index 8aa09f8..540795e 100644
--- a/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/proxyauthentication/ProxyAuthenticationServerTestSuite.java
+++ b/foundation/org.eclipse.persistence.oracle.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/proxyauthentication/ProxyAuthenticationServerTestSuite.java
@@ -535,7 +535,7 @@
     }
 
     private Map createConnProperties() {
-        Map newProps = JUnitTestCaseHelper.getDatabaseProperties(PROXY_PU);
+        Map<String, String> newProps = JUnitTestCaseHelper.getDatabaseProperties(PROXY_PU);
         newProps.put(PersistenceUnitProperties.JDBC_USER, ProxyAuthenticationUsersAndProperties.connectionUser);
         newProps.put(PersistenceUnitProperties.JDBC_PASSWORD, ProxyAuthenticationUsersAndProperties.connectionPassword);
         return newProps;
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/internal/platform/database/oracle/TIMESTAMPTypes.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/internal/platform/database/oracle/TIMESTAMPTypes.java
index 54dabdd..91fb78b 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/internal/platform/database/oracle/TIMESTAMPTypes.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/internal/platform/database/oracle/TIMESTAMPTypes.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -21,7 +21,7 @@
  * on jdbc jar.
  */
 public class TIMESTAMPTypes {
-    public static final Class TIMESTAMP_CLASS = TIMESTAMP.class;
-    public static final Class TIMESTAMPLTZ_CLASS = TIMESTAMPLTZ.class;
-    public static final Class TIMESTAMPTZ_CLASS = TIMESTAMPTZ.class;
+    public static final Class<TIMESTAMP> TIMESTAMP_CLASS = TIMESTAMP.class;
+    public static final Class<TIMESTAMPLTZ> TIMESTAMPLTZ_CLASS = TIMESTAMPLTZ.class;
+    public static final Class<TIMESTAMPTZ> TIMESTAMPTZ_CLASS = TIMESTAMPTZ.class;
 }
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
index b4b1ea9..c74e6fa 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle9Platform.java
@@ -33,6 +33,7 @@
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
 import java.util.Vector;
@@ -83,10 +84,10 @@
  */
 public class Oracle9Platform extends Oracle8Platform {
 
-    public static final Class NCHAR = NCharacter.class;
-    public static final Class NSTRING = NString.class;
-    public static final Class NCLOB = NClob.class;
-    public static final Class XMLTYPE = XMLTypePlaceholder.class;
+    public static final Class<NCharacter> NCHAR = NCharacter.class;
+    public static final Class<NString> NSTRING = NString.class;
+    public static final Class<NClob> NCLOB = NClob.class;
+    public static final Class<XMLTypePlaceholder> XMLTYPE = XMLTypePlaceholder.class;
 
     /* Driver version set to connection.getMetaData.getDriverVersion() */
     protected transient String driverVersion;
@@ -131,9 +132,9 @@
      * If driver is not available, this class will not be initialized and will fail fast instead of failing later on
      * when classes from driver are utilized
      */
-    private static final Class ORACLE_SQL_TIMESTAMP    = oracle.sql.TIMESTAMP.class;
-    private static final Class ORACLE_SQL_TIMESTAMPTZ  = oracle.sql.TIMESTAMPTZ.class;
-    private static final Class ORACLE_SQL_TIMESTAMPLTZ = oracle.sql.TIMESTAMPLTZ.class;
+    private static final Class<TIMESTAMP> ORACLE_SQL_TIMESTAMP    = oracle.sql.TIMESTAMP.class;
+    private static final Class<TIMESTAMPTZ> ORACLE_SQL_TIMESTAMPTZ  = oracle.sql.TIMESTAMPTZ.class;
+    private static final Class<TIMESTAMPLTZ> ORACLE_SQL_TIMESTAMPLTZ = oracle.sql.TIMESTAMPLTZ.class;
 
 
     public Oracle9Platform(){
@@ -370,9 +371,10 @@
      * Allow for conversion from the Oracle type to the Java type.
      */
     @Override
-    public Object convertObject(Object sourceObject, Class javaClass) throws ConversionException, DatabaseException {
+    @SuppressWarnings({"unchecked"})
+    public <T> T convertObject(Object sourceObject, Class<T> javaClass) throws ConversionException, DatabaseException {
         if ((javaClass == null) || ((sourceObject != null) && (sourceObject.getClass() == javaClass))) {
-            return sourceObject;
+            return (T) sourceObject;
         }
         if (sourceObject == null) {
             return super.convertObject(sourceObject, javaClass);
@@ -382,16 +384,16 @@
 
         //Used in Type Conversion Mapping on write
         if ((javaClass == TIMESTAMPTypes.TIMESTAMP_CLASS) || (javaClass == TIMESTAMPTypes.TIMESTAMPLTZ_CLASS)) {
-            return sourceObject;
+            return (T) sourceObject;
         }
 
         if (javaClass == TIMESTAMPTypes.TIMESTAMPTZ_CLASS) {
             if (sourceObject instanceof java.util.Date) {
                 Calendar cal = Calendar.getInstance();
                 cal.setTimeInMillis(((java.util.Date)sourceObject).getTime());
-                return cal;
+                return (T) cal;
             } else {
-                return sourceObject;
+                return (T) sourceObject;
             }
         }
 
@@ -399,7 +401,7 @@
             //Don't convert to XMLTypes. This will be done by the
             //XMLTypeBindCallCustomParameter to ensure the correct
             //Connection is used
-            return sourceObject;
+            return (T) sourceObject;
         }
 
         //Added to overcome an issue with the oracle 9.0.1.1.0 JDBC driver.
@@ -414,7 +416,7 @@
             //in TIMESTAMPTZWrapper.  Separate Calendar from any other types.
             if (((javaClass == ClassConstants.CALENDAR) || (javaClass == ClassConstants.GREGORIAN_CALENDAR))) {
                 try {
-                    return TIMESTAMPHelper.buildCalendar((TIMESTAMPTZWrapper)sourceObject);
+                    return (T) TIMESTAMPHelper.buildCalendar((TIMESTAMPTZWrapper)sourceObject);
                 } catch (SQLException exception) {
                     throw DatabaseException.sqlException(exception);
                 }
@@ -428,7 +430,7 @@
             //in TIMESTAMPLTZWrapper.  Separate Calendar from any other types.
             if (((javaClass == ClassConstants.CALENDAR) || (javaClass == ClassConstants.GREGORIAN_CALENDAR))) {
                 try {
-                    return TIMESTAMPHelper.buildCalendar((TIMESTAMPLTZWrapper)sourceObject);
+                    return (T) TIMESTAMPHelper.buildCalendar((TIMESTAMPLTZWrapper)sourceObject);
                 } catch (SQLException exception) {
                     throw DatabaseException.sqlException(exception);
                 }
@@ -719,12 +721,12 @@
         return super.getCustomModifyValueForCall(call, value, field, shouldBind);
     }
 
-    protected Vector buildFromStringCharVec(Class javaClass) {
-        Vector vec = getConversionManager().getDataTypesConvertedFrom(javaClass);
-        vec.addElement(NCHAR);
-        vec.addElement(NSTRING);
+    protected List buildFromStringCharVec(Class javaClass) {
+        List<Class<?>> vec = getConversionManager().getDataTypesConvertedFrom(javaClass);
+        vec.add(NCHAR);
+        vec.add(NSTRING);
         if (javaClass == String.class) {
-            vec.addElement(NCLOB);
+            vec.add(NCLOB);
         }
         return vec;
     }
@@ -737,24 +739,24 @@
      * @return - a vector of classes
      */
     @Override
-    public Vector getDataTypesConvertedFrom(Class javaClass) {
+    public List getDataTypesConvertedFrom(Class javaClass) {
         if (dataTypesConvertedFromAClass == null) {
             dataTypesConvertedFromAClass = new Hashtable(5);
         }
-        Vector dataTypes = (Vector) dataTypesConvertedFromAClass.get(javaClass);
+        List dataTypes = (List) dataTypesConvertedFromAClass.get(javaClass);
         if (dataTypes != null) {
             return dataTypes;
         }
         dataTypes = super.getDataTypesConvertedFrom(javaClass);
         if ((javaClass == String.class) || (javaClass == Character.class)) {
-            dataTypes.addElement(NCHAR);
-            dataTypes.addElement(NSTRING);
+            dataTypes.add(NCHAR);
+            dataTypes.add(NSTRING);
             if (javaClass == String.class) {
-                dataTypes.addElement(NCLOB);
+                dataTypes.add(NCLOB);
             }
         }
         if ((javaClass == char[].class) || (javaClass == Character[].class)) {
-            dataTypes.addElement(NCLOB);
+            dataTypes.add(NCLOB);
         }
         dataTypesConvertedFromAClass.put(javaClass, dataTypes);
         return dataTypes;
@@ -768,11 +770,11 @@
      * @return - a vector of classes
      */
     @Override
-    public Vector getDataTypesConvertedTo(Class javaClass) {
+    public List getDataTypesConvertedTo(Class javaClass) {
         if (dataTypesConvertedToAClass == null) {
             dataTypesConvertedToAClass = new Hashtable(5);
         }
-        Vector dataTypes = (Vector) dataTypesConvertedToAClass.get(javaClass);
+        List dataTypes = (Vector) dataTypesConvertedToAClass.get(javaClass);
         if (dataTypes != null) {
             return dataTypes;
         }
@@ -883,12 +885,12 @@
             String className = "org.eclipse.persistence.internal.platform.database.oracle.xdb.XMLTypeFactoryImpl";
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    Class xmlTypeFactoryClass = AccessController.doPrivileged(new PrivilegedClassForName(className, true, this.getClass().getClassLoader()));
-                    Constructor xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(xmlTypeFactoryClass, new Class[0], true));
-                    xmlTypeFactory = (XMLTypeFactory)AccessController.doPrivileged(new PrivilegedInvokeConstructor(xmlTypeFactoryConstructor, new Object[0]));
+                    Class<XMLTypeFactory> xmlTypeFactoryClass = AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, this.getClass().getClassLoader()));
+                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(xmlTypeFactoryClass, new Class[0], true));
+                    xmlTypeFactory = AccessController.doPrivileged(new PrivilegedInvokeConstructor<>(xmlTypeFactoryConstructor, new Object[0]));
                 }else{
-                    Class xmlTypeFactoryClass = PrivilegedAccessHelper.getClassForName(className, true, this.getClass().getClassLoader());
-                    Constructor xmlTypeFactoryConstructor = PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass, new Class[0], true);
+                    Class<XMLTypeFactory> xmlTypeFactoryClass = PrivilegedAccessHelper.getClassForName(className, true, this.getClass().getClassLoader());
+                    Constructor<XMLTypeFactory> xmlTypeFactoryConstructor = PrivilegedAccessHelper.getConstructorFor(xmlTypeFactoryClass, new Class[0], true);
                     xmlTypeFactory = (XMLTypeFactory)PrivilegedAccessHelper.invokeConstructor(xmlTypeFactoryConstructor, new Object[0]);
                 }
             } catch (Exception e) {
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/OracleJDBC_10_1_0_2ProxyConnectionCustomizer.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/OracleJDBC_10_1_0_2ProxyConnectionCustomizer.java
index bd217f5..f7b81ce 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/OracleJDBC_10_1_0_2ProxyConnectionCustomizer.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/OracleJDBC_10_1_0_2ProxyConnectionCustomizer.java
@@ -207,7 +207,7 @@
     protected void buildProxyProperties() {
         Object proxyTypeValue = session.getProperty(PersistenceUnitProperties.ORACLE_PROXY_TYPE);
         try {
-            proxyType = (Integer) session.getPlatform().getConversionManager().convertObject(proxyTypeValue, Integer.class);
+            proxyType = session.getPlatform().getConversionManager().convertObject(proxyTypeValue, Integer.class);
         } catch (ConversionException conversionException) {
             throw ValidationException.oracleJDBC10_1_0_2ProxyConnectorRequiresIntProxytype();
         }
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/ucp/GridLinkDataPartitioningCallback.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/ucp/GridLinkDataPartitioningCallback.java
index 6801d92..b75999e 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/ucp/GridLinkDataPartitioningCallback.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/ucp/GridLinkDataPartitioningCallback.java
@@ -63,7 +63,7 @@
             return;
         }
         try {
-            Class dataSourceManager = PrivilegedAccessHelper.getClassForName("weblogic.jdbc.common.internal.DataSourceManager");
+            Class<Object> dataSourceManager = PrivilegedAccessHelper.getClassForName("weblogic.jdbc.common.internal.DataSourceManager");
             Method getInstance = PrivilegedAccessHelper.getMethod(dataSourceManager, "getInstance", null, false);
             Object instance = PrivilegedAccessHelper.invokeMethod(getInstance, null, null);
             Method getDataSourceService = PrivilegedAccessHelper.getMethod(instance.getClass(), "getDataSourceService", null, false);
diff --git a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/tools/profiler/oracle/DMSPerformanceProfiler.java b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/tools/profiler/oracle/DMSPerformanceProfiler.java
index a47c467..d83de5f 100644
--- a/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/tools/profiler/oracle/DMSPerformanceProfiler.java
+++ b/foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/tools/profiler/oracle/DMSPerformanceProfiler.java
@@ -504,7 +504,7 @@
         getHeavyWeightNouns().put(ConnectionNounType, connectionsNoun);
         //ConnectionsInUse
         if (getSession().isServerSession()) {
-            Iterator enumtr = ((ServerSession)getSession()).getConnectionPools().keySet().iterator();
+            Iterator<String> enumtr = ((ServerSession)getSession()).getConnectionPools().keySet().iterator();
             while (enumtr.hasNext()) {
                 String poolName = (String)enumtr.next();
                 State connectionInUse = State.create(connectionsNoun, ConnectionInUse + "(" + poolName + ")", "", DMSLocalization.buildMessage("connection_in_used"), "not available");
@@ -663,7 +663,7 @@
      */
     protected void destroyNounsByWeight(int weight) {
         if (weight == DMSConsole.NORMAL) {
-            Iterator iterator = getNormalWeightNouns().values().iterator();
+            Iterator<Noun> iterator = getNormalWeightNouns().values().iterator();
             while (iterator.hasNext()) {
                 ((Noun)iterator.next()).destroy();
             }
@@ -671,7 +671,7 @@
             getNormalWeightSensors().clear();
         }
         if (weight == DMSConsole.HEAVY) {
-            Iterator iterator = getHeavyWeightNouns().values().iterator();
+            Iterator<Noun> iterator = getHeavyWeightNouns().values().iterator();
             while (iterator.hasNext()) {
                 ((Noun)iterator.next()).destroy();
             }
@@ -681,7 +681,7 @@
             getHeavyWeightSensors().clear();
         }
         if (weight == DMSConsole.ALL) {
-            Iterator iterator = getAllWeightNouns().values().iterator();
+            Iterator<Noun> iterator = getAllWeightNouns().values().iterator();
             while (iterator.hasNext()) {
                 ((Noun)iterator.next()).destroy();
             }
diff --git a/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/conversion/TestJavaTimeTypeConverter.java b/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/conversion/TestJavaTimeTypeConverter.java
index b99565a..97be47b 100644
--- a/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/conversion/TestJavaTimeTypeConverter.java
+++ b/jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/conversion/TestJavaTimeTypeConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2020 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -46,7 +46,7 @@
     @Test
     public void timeConvertLocalDateToLocalDate() {
         LocalDate src = LocalDate.of(2020, 1, 1);
-        LocalDate ld = (LocalDate) cm.convertObject(src, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(src, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(src, ld);
@@ -60,7 +60,7 @@
         Calendar cal = Calendar.getInstance();
         cal.set(2020, 0, 1, 0, 0, 0);
         
-        LocalDate ld = (LocalDate) cm.convertObject(cal, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(cal, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -76,7 +76,7 @@
         Assert.assertEquals(0, date.getMonth());
         Assert.assertEquals(2, date.getDate());
 
-        LocalDate ld = (LocalDate) cm.convertObject(date, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(date, ClassConstants.TIME_LDATE);
         ZonedDateTime check = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
 
         Assert.assertNotNull(ld);
@@ -92,7 +92,7 @@
     public void timeConvertSqlDateToLocalDate() {
         java.sql.Date date = java.sql.Date.valueOf("2020-01-01"); 
         
-        LocalDate ld = (LocalDate) cm.convertObject(date, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(date, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -104,7 +104,7 @@
     public void timeConvertSqlTimestampToLocalDate() {
         java.sql.Timestamp ts = java.sql.Timestamp.valueOf("2020-01-01 01:00:00");
         
-        LocalDate ld = (LocalDate) cm.convertObject(ts, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(ts, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -115,7 +115,7 @@
     @Test
     public void timeConvertStringToLocalDate() {
         String date = "2020-01-01T1:15:30";
-        LocalDate ld = (LocalDate) cm.convertObject(date, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(date, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -126,7 +126,7 @@
     @Test
     public void timeConvertLongToLocalDate() {
         long l = 18262; // 2020-01-01
-        LocalDate ld = (LocalDate) cm.convertObject(l, ClassConstants.TIME_LDATE);
+        LocalDate ld = cm.convertObject(l, ClassConstants.TIME_LDATE);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -151,7 +151,7 @@
     @Test
     public void timeConvertLocalDateTimeToLocalDateTime() {
         LocalDateTime src = LocalDateTime.of(2020, 1, 1, 1, 0, 0);
-        LocalDateTime ld = (LocalDateTime) cm.convertObject(src, ClassConstants.TIME_LDATETIME);
+        LocalDateTime ld = cm.convertObject(src, ClassConstants.TIME_LDATETIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(src, ld);
@@ -166,7 +166,7 @@
     @Test
     public void timeConvertStringToLocalDateTime() {
         String date = "2020-01-01T1:15:30";
-        LocalDateTime ld = (LocalDateTime) cm.convertObject(date, ClassConstants.TIME_LDATETIME);
+        LocalDateTime ld = cm.convertObject(date, ClassConstants.TIME_LDATETIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(Month.JANUARY, ld.getMonth());
@@ -186,7 +186,7 @@
         cal.set(2020, 0, 1, 2, 15, 30);
         date = cal.getTime();
                
-        ldt = (LocalDateTime) cm.convertObject(date, ClassConstants.TIME_LDATETIME);
+        ldt = cm.convertObject(date, ClassConstants.TIME_LDATETIME);
         
         Assert.assertNotNull(ldt);
         Assert.assertEquals(Month.JANUARY, ldt.getMonth());
@@ -202,7 +202,7 @@
         Calendar cal = Calendar.getInstance();
         cal.set(2020, 0, 1, 2, 15, 30);
         
-        LocalDateTime ldt = (LocalDateTime) cm.convertObject(cal, ClassConstants.TIME_LDATETIME);
+        LocalDateTime ldt = cm.convertObject(cal, ClassConstants.TIME_LDATETIME);
         
         Assert.assertNotNull(ldt);
         Assert.assertEquals(Month.JANUARY, ldt.getMonth());
@@ -216,7 +216,7 @@
     @Test
     public void timeConvertLongToLocalDateTime() {
         long l = 18262 * (60 * 60 * 24); // 2020-01-01      
-        LocalDateTime ldt = (LocalDateTime) cm.convertObject(l, ClassConstants.TIME_LDATETIME);
+        LocalDateTime ldt = cm.convertObject(l, ClassConstants.TIME_LDATETIME);
         
         Assert.assertNotNull(ldt);
         Assert.assertEquals(Month.JANUARY, ldt.getMonth());
@@ -240,7 +240,7 @@
     @Test
     public void timeConvertLocalTimeToLocalTime() {
         LocalTime src = LocalTime.of(1, 15, 30);
-        LocalTime ld = (LocalTime) cm.convertObject(src, ClassConstants.TIME_LTIME);
+        LocalTime ld = cm.convertObject(src, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(src, ld);
@@ -252,7 +252,7 @@
     @Test
     public void timeConvertStringToLocalTime() {
         String date = "T1:15:30";
-        LocalTime ld = (LocalTime) cm.convertObject(date, ClassConstants.TIME_LTIME);
+        LocalTime ld = cm.convertObject(date, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(1, ld.getHour());
@@ -264,7 +264,7 @@
     public void timeConvertTimestampToLocalTime() {
         java.sql.Timestamp ts = java.sql.Timestamp.valueOf("2020-01-01 01:15:30");
         
-        LocalTime ld = (LocalTime) cm.convertObject(ts, ClassConstants.TIME_LTIME);
+        LocalTime ld = cm.convertObject(ts, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(1, ld.getHour());
@@ -276,7 +276,7 @@
     public void timeConvertTimeToLocalTime() {
         java.sql.Time ts = java.sql.Time.valueOf("01:15:30");
         
-        LocalTime ld = (LocalTime) cm.convertObject(ts, ClassConstants.TIME_LTIME);
+        LocalTime ld = cm.convertObject(ts, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(1, ld.getHour());
@@ -293,7 +293,7 @@
         cal.set(2020, 0, 1, 2, 15, 30);
         date = cal.getTime();
                
-        ld = (LocalTime) cm.convertObject(date, ClassConstants.TIME_LTIME);
+        ld = cm.convertObject(date, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(2, ld.getHour());
@@ -304,7 +304,7 @@
     @Test
     public void convertLongToLocalTime() {
         long sod = 60*60 + 60*15 + 30;
-        LocalTime ld = (LocalTime) cm.convertObject(sod, ClassConstants.TIME_LTIME);
+        LocalTime ld = cm.convertObject(sod, ClassConstants.TIME_LTIME);
         
         Assert.assertNotNull(ld);
         Assert.assertEquals(1, ld.getHour());
@@ -331,7 +331,7 @@
         Calendar cal = Calendar.getInstance();
         cal.set(2020, 0, 1, 0, 0, 0);
         
-        OffsetDateTime odt = (OffsetDateTime) cm.convertObject(cal, ClassConstants.TIME_ODATETIME);
+        OffsetDateTime odt = cm.convertObject(cal, ClassConstants.TIME_ODATETIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(Month.JANUARY, odt.getMonth());
@@ -348,7 +348,7 @@
         cal.set(2020, 0, 1, 0, 0, 0);
         date = cal.getTime();
                
-        odt = (OffsetDateTime) cm.convertObject(date, ClassConstants.TIME_ODATETIME);
+        odt = cm.convertObject(date, ClassConstants.TIME_ODATETIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(Month.JANUARY, odt.getMonth());
@@ -361,7 +361,7 @@
         String date = "2020-01-01T1:15:30";
         OffsetDateTime odt = null;
                
-        odt = (OffsetDateTime) cm.convertObject(date, ClassConstants.TIME_ODATETIME);
+        odt = cm.convertObject(date, ClassConstants.TIME_ODATETIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(Month.JANUARY, odt.getMonth());
@@ -377,7 +377,7 @@
         OffsetDateTime original = OffsetDateTime.of(2020, 1, 1, 1, 15, 30, 0, ZoneOffset.UTC);
         OffsetDateTime odt = null;
                
-        odt = (OffsetDateTime) cm.convertObject(original, ClassConstants.TIME_ODATETIME);
+        odt = cm.convertObject(original, ClassConstants.TIME_ODATETIME);
         
         Assert.assertNotNull(odt);
         Assert.assertSame(original,  odt);
@@ -408,7 +408,7 @@
         OffsetTime original = OffsetTime.of(1, 15, 30, 0, ZoneOffset.UTC);
         OffsetTime odt = null;
                
-        odt = (OffsetTime) cm.convertObject(original, ClassConstants.TIME_OTIME);
+        odt = cm.convertObject(original, ClassConstants.TIME_OTIME);
         
         Assert.assertNotNull(odt);
         Assert.assertSame(original,  odt);
@@ -422,7 +422,7 @@
         String date = "T1:15:30";
         OffsetTime odt = null;
                
-        odt = (OffsetTime) cm.convertObject(date, ClassConstants.TIME_OTIME);
+        odt = cm.convertObject(date, ClassConstants.TIME_OTIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(1, odt.getHour());
@@ -439,7 +439,7 @@
         cal.set(2020, 0, 1, 1, 15, 30);
         date = cal.getTime();
                
-        odt = (OffsetTime) cm.convertObject(date, ClassConstants.TIME_OTIME);
+        odt = cm.convertObject(date, ClassConstants.TIME_OTIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(1, odt.getHour());
@@ -452,7 +452,7 @@
         Calendar cal = Calendar.getInstance();
         cal.set(2020, 0, 1, 1, 15, 30);
         
-        OffsetTime odt = (OffsetTime) cm.convertObject(cal, ClassConstants.TIME_OTIME);
+        OffsetTime odt = cm.convertObject(cal, ClassConstants.TIME_OTIME);
         
         Assert.assertNotNull(odt);
         Assert.assertEquals(1, odt.getHour());
@@ -463,7 +463,7 @@
     @Test
     public void testConvertLongToOffsetTime() {
         long l = 18262 * (60 * 60 * 24) + (60*60 + 60*15 + 30); // 2020-01-01  T01:15:30     
-        OffsetTime ldt = (OffsetTime) cm.convertObject(l, ClassConstants.TIME_OTIME);
+        OffsetTime ldt = cm.convertObject(l, ClassConstants.TIME_OTIME);
         
         Assert.assertNotNull(ldt);
         Assert.assertEquals(1, ldt.getHour());
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/AdvancedReadTransformer.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/AdvancedReadTransformer.java
index dc7c433..afbf642 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/AdvancedReadTransformer.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/AdvancedReadTransformer.java
@@ -48,8 +48,8 @@
         if(attributeName.equals("overtimeHours")) {
             Time[] hours = new Time[2];
             /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-            hours[0] = (Time) session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), java.sql.Time.class);
-            hours[1] = (Time) session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), java.sql.Time.class);
+            hours[0] = session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), Time.class);
+            hours[1] = session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), Time.class);
             return hours;
         } else {
             throw new RuntimeException("Unknown attribute");
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Door.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Door.java
index f113d3a..ef209cc 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Door.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Door.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -115,7 +115,7 @@
     }
 
     public Date calcWarrantyDate(Record row, Session session) {
-        Date date = (Date) ( session.getDatasourcePlatform().convertObject(row.get("SALE_DATE"), java.sql.Date.class ));
+        Date date = session.getDatasourcePlatform().convertObject(row.get("SALE_DATE"), Date.class );
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         int day = cal.get(Calendar.DAY_OF_MONTH);
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Employee.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Employee.java
index d34ec58..7c16bec 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Employee.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/advanced/Employee.java
@@ -395,8 +395,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time) session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time) session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         return hours;
     }
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/AdvancedReadTransformer.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/AdvancedReadTransformer.java
index 86847ba..b618d0e 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/AdvancedReadTransformer.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/AdvancedReadTransformer.java
@@ -48,8 +48,8 @@
         if(attributeName.equals("overtimeHours")) {
             Time[] hours = new Time[2];
             /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-            hours[0] = (Time) session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), java.sql.Time.class);
-            hours[1] = (Time) session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), java.sql.Time.class);
+            hours[0] = session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), Time.class);
+            hours[1] = session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), Time.class);
             return hours;
         } else {
             throw new RuntimeException("Unknown attribute");
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/Employee.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/Employee.java
index 2d80428..d58ec17 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/Employee.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/composite/advanced/member_2/Employee.java
@@ -317,8 +317,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time) session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time) session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         return hours;
     }
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/datetime/DateTimePopulator.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/datetime/DateTimePopulator.java
index 4425892..e1126ba 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/datetime/DateTimePopulator.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/datetime/DateTimePopulator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -50,10 +50,10 @@
             try {
                 Class clazz = PrivilegedAccessHelper.getClassForName("org.eclipse.persistence.platform.database.oracle.Oracle9Platform");
                 Method getDriverVersionMethod = PrivilegedAccessHelper.getMethod(clazz, "getDriverVersion", null, false);
-                String driverVersion = (String) PrivilegedAccessHelper.invokeMethod(getDriverVersionMethod, session.getPlatform(), null);
+                String driverVersion = PrivilegedAccessHelper.invokeMethod(getDriverVersionMethod, session.getPlatform(), null);
                 if (Helper.compareVersions(driverVersion, "12.1") >= 0) {
                     Method shouldTruncateDateMethod = PrivilegedAccessHelper.getMethod(clazz, "shouldTruncateDate", null, false);
-                    boolean shouldTruncateDate = (Boolean) PrivilegedAccessHelper.invokeMethod(shouldTruncateDateMethod, session.getPlatform(), null);
+                    boolean shouldTruncateDate = PrivilegedAccessHelper.invokeMethod(shouldTruncateDateMethod, session.getPlatform(), null);
                     if (!shouldTruncateDate) {
                         Method setShouldTruncateDateMethod = PrivilegedAccessHelper.getMethod(clazz, "setShouldTruncateDate", new Class[]{boolean.class}, false);
                         PrivilegedAccessHelper.invokeMethod(setShouldTruncateDateMethod, session.getPlatform(), new Object[]{true});
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/AdvancedReadTransformer.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/AdvancedReadTransformer.java
index c0c20fb..6561699 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/AdvancedReadTransformer.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/AdvancedReadTransformer.java
@@ -48,8 +48,8 @@
         if(attributeName.equals("overtimeHours")) {
             Time[] hours = new Time[2];
             /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-            hours[0] = (Time) session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), java.sql.Time.class);
-            hours[1] = (Time) session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), java.sql.Time.class);
+            hours[0] = session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), Time.class);
+            hours[1] = session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), Time.class);
             return hours;
         } else {
             throw new RuntimeException("Unknown attribute");
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/Employee.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/Employee.java
index 718535b..851c32c 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/Employee.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/advanced/Employee.java
@@ -187,8 +187,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time) session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time) session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         return hours;
     }
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/AdvancedReadTransformer.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/AdvancedReadTransformer.java
index 6ffef40..0b92ccc 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/AdvancedReadTransformer.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/AdvancedReadTransformer.java
@@ -48,8 +48,8 @@
         if(attributeName.equals("overtimeHours")) {
             Time[] hours = new Time[2];
             /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-            hours[0] = (Time) session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), java.sql.Time.class);
-            hours[1] = (Time) session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), java.sql.Time.class);
+            hours[0] = session.getDatasourcePlatform().convertObject(record.get("START_OVERTIME"), Time.class);
+            hours[1] = session.getDatasourcePlatform().convertObject(record.get("END_OVERTIME"), Time.class);
             return hours;
         } else {
             throw new RuntimeException("Unknown attribute");
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/Employee.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/Employee.java
index 964b572..2c7cbf3 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/Employee.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/models/jpa/xml/composite/advanced/member_2/Employee.java
@@ -189,8 +189,8 @@
         Time[] hours = new Time[2];
 
         /** This conversion allows for the database type not to match, i.e. may be a Timestamp or String. */
-        hours[0] = (Time) session.getDatasourcePlatform().convertObject(row.get("START_TIME"), java.sql.Time.class);
-        hours[1] = (Time) session.getDatasourcePlatform().convertObject(row.get("END_TIME"), java.sql.Time.class);
+        hours[0] = session.getDatasourcePlatform().convertObject(row.get("START_TIME"), Time.class);
+        hours[1] = session.getDatasourcePlatform().convertObject(row.get("END_TIME"), Time.class);
         return hours;
     }
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/AdvancedJPAJunitTest.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/AdvancedJPAJunitTest.java
index 7bb0893..cd532ff 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/AdvancedJPAJunitTest.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/AdvancedJPAJunitTest.java
@@ -3864,7 +3864,7 @@
         Vector pk = new Vector(1);
         pk.add(dealer.getId());
 
-        return (Integer) getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, getServerSession());
+        return getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, getServerSession());
     }
 
     protected List<Employee> createEmployeesWithUnidirectionalMappings(String lastName) {
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/CallbackEventJUnitTestSuite.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/CallbackEventJUnitTestSuite.java
index ed049c4..4bbbb51 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/CallbackEventJUnitTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/advanced/CallbackEventJUnitTestSuite.java
@@ -257,7 +257,7 @@
     protected int getVersion(Employee emp) {
         Vector pk = new Vector();
         pk.add(emp.getId());
-        return (Integer) getServerSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, pk, getServerSession());
+        return getServerSession().getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, pk, getServerSession());
     }
 
     // gf 2894:  merge does not trigger prePersist callbacks
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/CallbackEventJUnitTestSuite.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/CallbackEventJUnitTestSuite.java
index 58046b5..db1886b 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/CallbackEventJUnitTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/fieldaccess/advanced/CallbackEventJUnitTestSuite.java
@@ -256,7 +256,7 @@
     protected int getVersion(Employee emp) {
         Vector pk = new Vector();
         pk.add(emp.getId());
-        return (Integer) getServerSession("fieldaccess").getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, pk, getServerSession("fieldaccess"));
+        return getServerSession("fieldaccess").getDescriptor(Employee.class).getOptimisticLockingPolicy().getWriteLockValue(emp, pk, getServerSession("fieldaccess"));
     }
 
 }
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLComplexTestSuite.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLComplexTestSuite.java
index f2dad78..ceb449a 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLComplexTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLComplexTestSuite.java
@@ -785,8 +785,8 @@
         Employee emp1 = (Employee) expectedResult.elementAt(0);
         Employee emp2 = (Employee) expectedResult.elementAt(1);
 
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         String ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + salarySquareRoot1;
@@ -824,8 +824,8 @@
         Employee emp1 = (Employee) expectedResult.elementAt(0);
         Employee emp2 = (Employee) expectedResult.elementAt(1);
 
-        double salarySquareRoot1 = Math.sqrt(((double) emp1.getSalary()));
-        double salarySquareRoot2 = Math.sqrt(((double) emp2.getSalary()));
+        double salarySquareRoot1 = Math.sqrt(emp1.getSalary());
+        double salarySquareRoot2 = Math.sqrt(emp2.getSalary());
 
         String ejbqlString = "SELECT OBJECT(emp) FROM Employee emp WHERE ";
         ejbqlString = ejbqlString + "(SQRT(emp.salary) = ";
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
index 7f11462..ce247a4 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
@@ -1370,7 +1370,7 @@
 
         Vector expectedResult = (Vector)getServerSession().executeQuery(raq);
 
-        double salarySquareRoot = Math.sqrt(((double) ((Employee) expectedResult.firstElement()).getSalary()));
+        double salarySquareRoot = Math.sqrt(((Employee) expectedResult.firstElement()).getSalary());
 
         clearCache();
 
@@ -1423,7 +1423,7 @@
 
         Vector expectedResult = (Vector)getServerSession().executeQuery(raq);
 
-        double salarySquareRoot = Math.sqrt(((double) ((Employee) expectedResult.firstElement()).getSalary()));
+        double salarySquareRoot = Math.sqrt(((Employee) expectedResult.firstElement()).getSalary());
 
         clearCache();
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/advanced/EntityMappingsAdvancedJUnitTestCase.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/advanced/EntityMappingsAdvancedJUnitTestCase.java
index 365a547..c64e259 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/advanced/EntityMappingsAdvancedJUnitTestCase.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/advanced/EntityMappingsAdvancedJUnitTestCase.java
@@ -1717,9 +1717,9 @@
         pk.add(dealer.getId());
 
         if (isOnServer()) {
-            return (Integer) getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, getServerSession());
+            return getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, getServerSession());
         } else {
-            return (Integer) ((EntityManagerImpl) em).getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, ((EntityManagerImpl) em).getServerSession());
+            return ((EntityManagerImpl) em).getServerSession().getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, ((EntityManagerImpl) em).getServerSession());
         }
     }
 
diff --git a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/composite/advanced/EntityMappingsAdvancedJUnitTestCase.java b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/composite/advanced/EntityMappingsAdvancedJUnitTestCase.java
index 8f0088b..288d4ea 100644
--- a/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/composite/advanced/EntityMappingsAdvancedJUnitTestCase.java
+++ b/jpa/eclipselink.jpa.test/src/it/java/org/eclipse/persistence/testing/tests/jpa/xml/composite/advanced/EntityMappingsAdvancedJUnitTestCase.java
@@ -1732,7 +1732,7 @@
         pk.add(dealer.getId());
 
         DatabaseSessionImpl session = getDatabaseSession();
-        return (Integer) session.getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, session);
+        return session.getDescriptor(Dealer.class).getOptimisticLockingPolicy().getWriteLockValue(dealer, pk, session);
     }
 
     protected List<Employee> createEmployeesWithUnidirectionalMappings(String lastName) {
diff --git a/jpa/org.eclipse.persistence.jpa.jpql/src/test/java/org/eclipse/persistence/jpa/tests/jpql/tools/ContentAssistTest.java b/jpa/org.eclipse.persistence.jpa.jpql/src/test/java/org/eclipse/persistence/jpa/tests/jpql/tools/ContentAssistTest.java
index 4287b15..279ebfd 100644
--- a/jpa/org.eclipse.persistence.jpa.jpql/src/test/java/org/eclipse/persistence/jpa/tests/jpql/tools/ContentAssistTest.java
+++ b/jpa/org.eclipse.persistence.jpa.jpql/src/test/java/org/eclipse/persistence/jpa/tests/jpql/tools/ContentAssistTest.java
@@ -173,7 +173,7 @@
         List<String> proposalsNotRemoved = new ArrayList<>();
         CollectionTools.addAll(proposalsNotRemoved, expectedProposals);
 
-        return new List[] { proposalsNotRemoved, unexpectedProposals };
+        return (List<String>[]) new List[] { proposalsNotRemoved, unexpectedProposals };
     }
 
     protected List<String> classNames() {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
index 2c71f83..a7034d2 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/CMP3Policy.java
@@ -144,7 +144,7 @@
                 Class aPKClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        aPKClass = AccessController.doPrivileged(new PrivilegedClassForName(getPKClassName(), true, classLoader));
+                        aPKClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getPKClassName(), true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw new IllegalArgumentException(ExceptionLocalization.buildMessage("pk_class_not_found", new Object[] {this.pkClassName}), exception.getException());
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
index 10f1edc..b85637d 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EJBQueryImpl.java
@@ -323,7 +323,7 @@
                     throw QueryException.invalidContainerClass(containerClass, ClassConstants.Collection_Class);
                 }
             } else if (query.isReadObjectQuery()) {
-                List resultList = new ArrayList();
+                List resultList = new ArrayList<>();
                 Object result = executeReadQuery();
                 if (result != null) {
                     resultList.add(executeReadQuery());
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
index d039f6d..fc58f4e 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityGraphImpl.java
@@ -27,6 +27,7 @@
 import jakarta.persistence.metamodel.PluralAttribute;
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.localization.ExceptionLocalization;
 import org.eclipse.persistence.internal.queries.AttributeItem;
@@ -63,7 +64,7 @@
         this.attributeGroup = group;
         this.classType = group.getType();
         if (this.classType == null){
-            this.classType = ClassConstants.Object_Class;
+            this.classType = (Class<X>) CoreClassConstants.OBJECT;
         }
     }
 
@@ -115,7 +116,7 @@
 
     @Override
     public <T> Subgraph<T> addSubgraph(Attribute<X, T> attribute) {
-        Class type = attribute.getJavaType();
+        Class<T> type = attribute.getJavaType();
         if (attribute.isCollection()) {
             type = ((PluralAttribute) attribute).getBindableJavaType();
         }
@@ -172,7 +173,7 @@
         if (!this.isMutable) {
             throw new IllegalStateException("immutable_entitygraph");
         }
-        Class type = attribute.getJavaType();
+        Class<T> type = attribute.getJavaType();
         if (attribute.isCollection()) {
             type = ((PluralAttribute) attribute).getBindableJavaType();
         }
@@ -285,10 +286,10 @@
                 for (AttributeGroup subGroup : item.getGroups().values()) {
                     Class type = subGroup.getType();
                     if (type == null) {
-                        type = ClassConstants.Object_Class;
+                        type = CoreClassConstants.OBJECT;
                     }
                     if (localDescriptor != null) {
-                        if (!type.equals(ClassConstants.Object_Class) && localDescriptor.hasInheritance()) {
+                        if (!type.equals(CoreClassConstants.OBJECT) && localDescriptor.hasInheritance()) {
                             localDescriptor = localDescriptor.getInheritancePolicy().getDescriptor(type);
                         }
                         node.addSubgraph(new EntityGraphImpl(subGroup, localDescriptor));
@@ -302,10 +303,10 @@
                 for (AttributeGroup subGroup : item.getKeyGroups().values()) {
                     Class type = subGroup.getType();
                     if (type == null) {
-                        type = ClassConstants.Object_Class;
+                        type = CoreClassConstants.OBJECT;
                     }
                     if (localDescriptor != null) {
-                        if (!type.equals(ClassConstants.Object_Class) && localDescriptor.hasInheritance()) {
+                        if (!type.equals(CoreClassConstants.OBJECT) && localDescriptor.hasInheritance()) {
                             localDescriptor = localDescriptor.getInheritancePolicy().getDescriptor(type);
                         }
                         node.addKeySubgraph(new EntityGraphImpl(subGroup, localDescriptor));
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryImpl.java
index 8805627..65b39c2 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryImpl.java
@@ -224,8 +224,8 @@
             throw PersistenceUnitLoadingException.cannotRefreshEntityManagerFactoryCreatedFromSession(delegate.getServerSession().getName());
         }
         String sessionName = setupImpl.getSessionName();
-        Map existingProperties = delegate.getProperties();
-        Map deployProperties = new HashMap();
+        Map<String, Object> existingProperties = delegate.getProperties();
+        Map<String, Object> deployProperties = new HashMap<>();
         deployProperties.putAll(existingProperties);
         if (properties != null){
             deployProperties.putAll(properties);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryProvider.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryProvider.java
index f0f3b35..49aee1f 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryProvider.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerFactoryProvider.java
@@ -278,8 +278,8 @@
      * @param source
      * @return the target object
      */
-    public static Map mergeMaps(Map target, Map source){
-        Map map = new HashMap();
+    public static <K, V> Map<K, V> mergeMaps(Map<K, V> target, Map<K, V> source){
+        Map<K, V> map = new HashMap<>();
         if (source != null){
             map.putAll(source);
         }
@@ -296,11 +296,11 @@
      * @param keysToBeRemoved
      * @return the target object
      */
-    public static Map removeSpecifiedProperties(Map source, Collection keysToBeRemoved){
-        Map target = new HashMap();
+    public static <K, V> Map<K, V> removeSpecifiedProperties(Map<K, V> source, Collection<K> keysToBeRemoved){
+        Map<K, V> target = new HashMap<>();
         if (source != null){
             target.putAll(source);
-            Iterator it = keysToBeRemoved.iterator();
+            Iterator<K> it = keysToBeRemoved.iterator();
             while(it.hasNext()) {
                 target.remove(it.next());
             }
@@ -314,13 +314,13 @@
      * @param keysToBeKept
      * @return the target object
      */
-    public static Map keepSpecifiedProperties(Map source, Collection keysToBeKept){
-        Map target = new HashMap();
+    public static <K, V> Map<K, V> keepSpecifiedProperties(Map<K, V> source, Collection<K> keysToBeKept){
+        Map target = new HashMap<>();
         if (source != null){
             target.putAll(source);
-            Iterator<Map.Entry> it = source.entrySet().iterator();
+            Iterator<Map.Entry<K, V>> it = source.entrySet().iterator();
             while(it.hasNext()) {
-                Map.Entry entry = it.next();
+                Map.Entry<K, V> entry = it.next();
                 if(keysToBeKept.contains(entry.getKey())) {
                     target.put(entry.getKey(), entry.getValue());
                 }
@@ -337,14 +337,14 @@
      * @param keysToBeKept
      * @return the target object
      */
-    public static Map[] splitSpecifiedProperties(Map source, Collection keysToBeKept){
-        HashMap in = new HashMap();
-        HashMap out = new HashMap();
+    public static <K, V> Map<K, V>[] splitSpecifiedProperties(Map<K, V> source, Collection<K> keysToBeKept){
+        HashMap<K, V> in = new HashMap<>();
+        HashMap<K, V> out = new HashMap<>();
         Map[] target = new Map[]{in, out};
         if (source != null){
-            Iterator<Map.Entry> it = source.entrySet().iterator();
+            Iterator<Map.Entry<K, V>> it = source.entrySet().iterator();
             while(it.hasNext()) {
-                Map.Entry entry = it.next();
+                Map.Entry<K, V> entry = it.next();
                 if(keysToBeKept.contains(entry.getKey())) {
                     in.put(entry.getKey(), entry.getValue());
                 } else {
@@ -366,15 +366,16 @@
      * @param keys is array of Maps of size n
      * @return the target object is array of Maps of size n+1
      */
-    public static Map[] splitProperties(Map source, Collection[] keys){
-        Map[] target = new Map[keys.length + 1];
+    public static <K, V> Map<K, V>[] splitProperties(Map<K, V> source, Collection<K>[] keys){
+        @SuppressWarnings({"unchecked"})
+        Map<K, V>[] target = (Map<K, V>[]) new Map[keys.length + 1];
         for (int i=0; i <= keys.length; i++) {
-            target[i] = new HashMap();
+            target[i] = new HashMap<>();
         }
         if (source != null){
-            Iterator<Map.Entry> it = source.entrySet().iterator();
+            Iterator<Map.Entry<K, V>> it = source.entrySet().iterator();
             while(it.hasNext()) {
-                Map.Entry entry = it.next();
+                Map.Entry<K, V> entry = it.next();
                 boolean isFound = false;
                 for (int i=0; i < keys.length && !isFound; i++) {
                     if (keys[i].contains(entry.getKey())) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
index 3edbb51..b572ab7 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerImpl.java
@@ -186,7 +186,7 @@
     protected boolean beginEarlyTransaction;
 
     /** Local properties passed from createEntityManager. */
-    protected Map properties;
+    protected Map<String, Object> properties;
 
     /** Flush mode property, allows flush before query to be avoided. */
     protected FlushModeType flushMode;
@@ -518,7 +518,7 @@
         // bug 236249: In JPA session.setProperty() throws
         // UnsupportedOperationException.
         if (properties != null) {
-            this.properties = new HashMap(properties);
+            this.properties = new HashMap<>(properties);
             if(!properties.isEmpty()) {
                 processProperties();
             }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
index 8511b47..48c2c0b 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/EntityManagerSetupImpl.java
@@ -224,6 +224,7 @@
 import org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor;
 import org.eclipse.persistence.internal.jpa.metadata.MetadataProject;
 import org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAsmFactory;
+import org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass;
 import org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappingsReader;
 import org.eclipse.persistence.internal.jpa.metamodel.ManagedTypeImpl;
 import org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl;
@@ -256,7 +257,6 @@
 import org.eclipse.persistence.jpa.metadata.ProjectCache;
 import org.eclipse.persistence.jpa.metadata.XMLMetadataSource;
 import org.eclipse.persistence.logging.AbstractSessionLog;
-import org.eclipse.persistence.logging.DefaultSessionLog;
 import org.eclipse.persistence.logging.SessionLog;
 import org.eclipse.persistence.platform.database.converters.StructConverter;
 import org.eclipse.persistence.platform.database.events.DatabaseEventListener;
@@ -933,9 +933,9 @@
             }
         } else {
             if ((projectPlatform.getSequences() != null) && !projectPlatform.getSequences().isEmpty()) {
-                Iterator itProjectSequences = projectPlatform.getSequences().values().iterator();
+                Iterator<Sequence> itProjectSequences = projectPlatform.getSequences().values().iterator();
                 while (itProjectSequences.hasNext()) {
-                    Sequence sequence = (Sequence)itProjectSequences.next();
+                    Sequence sequence = itProjectSequences.next();
                     if (!sessionPlatform.getSequences().containsKey(sequence.getName())) {
                         sessionPlatform.addSequence(sequence);
                     }
@@ -990,9 +990,9 @@
     protected void assignCMP3Policy() {
         // all descriptors assigned CMP3Policy
         Project project = session.getProject();
-        for (Iterator iterator = project.getDescriptors().values().iterator(); iterator.hasNext();){
+        for (Iterator<ClassDescriptor> iterator = project.getDescriptors().values().iterator(); iterator.hasNext();){
             //bug:4406101  changed class cast to base class, which is used in projects generated from 904 xml
-            ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
+            ClassDescriptor descriptor = iterator.next();
 
             if(descriptor.getCMPPolicy() == null) {
                 descriptor.setCMPPolicy(new CMP3Policy());
@@ -1369,7 +1369,7 @@
 
     protected static Class findClass(String className, ClassLoader loader) throws ClassNotFoundException, PrivilegedActionException {
         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-            return AccessController.doPrivileged(new PrivilegedClassForName(className, true, loader));
+            return AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, loader));
         } else {
             return org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(className, true, loader);
         }
@@ -1538,9 +1538,9 @@
                         ? CacheIsolationType.SHARED : CacheIsolationType.ISOLATED);
             }
 
-            Iterator it = session.getDescriptors().values().iterator();
+            Iterator<ClassDescriptor> it = session.getDescriptors().values().iterator();
             while (it.hasNext() && (!typeMap.isEmpty() || !sizeMap.isEmpty() || !sharedMap.isEmpty())) {
-                ClassDescriptor descriptor = (ClassDescriptor)it.next();
+                ClassDescriptor descriptor = it.next();
 
                 if (descriptor.isDescriptorTypeAggregate()) {
                     continue;
@@ -2078,9 +2078,9 @@
                     // be returned if we we are mean to process these mappings
                     if (enableWeaving) {
                         // build a list of entities the persistence unit represented by this EntityManagerSetupImpl will use
-                        Collection entities = PersistenceUnitProcessor.buildEntityList(processor, classLoaderToUse);
+                        Collection<MetadataClass> entities = PersistenceUnitProcessor.buildEntityList(processor, classLoaderToUse);
                         this.weaver = TransformerFactory.createTransformerAndModifyProject(session, entities, classLoaderToUse, weaveLazy, weaveChangeTracking, weaveFetchGroups, weaveInternal, weaveRest, weaveMappedSuperClass);
-                        session.getProject().setClassNamesForWeaving(new ArrayList(processor.getProject().getWeavableClassNames()));
+                        session.getProject().setClassNamesForWeaving(new ArrayList<>(processor.getProject().getWeavableClassNames()));
                     }
 
                     //moved from deployment:
@@ -2093,13 +2093,13 @@
                 // The transformer is capable of altering domain classes to handle a LAZY hint for OneToOne mappings.  It will only
                 // be returned if we we are meant to process these mappings.
                 if (enableWeaving) {
-                    Collection persistenceClasses = new ArrayList();
+                    Collection persistenceClasses = new ArrayList<>();
                     MetadataAsmFactory factory = new MetadataAsmFactory(new MetadataLogger(session), classLoaderToUse);
                     if (shouldBuildProject) {
                         // If deploying from a sessions-xml it is still desirable to allow the classes to be weaved.
                         // build a list of entities the persistence unit represented by this EntityManagerSetupImpl will use
-                        for (Iterator iterator = session.getProject().getDescriptors().keySet().iterator(); iterator.hasNext(); ) {
-                            persistenceClasses.add(factory.getMetadataClass(((Class)iterator.next()).getName()));
+                        for (Iterator<Class<?>> iterator = session.getProject().getDescriptors().keySet().iterator(); iterator.hasNext(); ) {
+                            persistenceClasses.add(factory.getMetadataClass(iterator.next().getName()));
                         }
                     } else {
                         // build a list of entities the persistence unit represented by this EntityManagerSetupImpl will use
@@ -3989,11 +3989,11 @@
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
                         helperClass = AccessController.doPrivileged(
-                                new PrivilegedClassForName(helperClassName, true, appClassLoader));
+                                new PrivilegedClassForName<>(helperClassName, true, appClassLoader));
                     } catch (Throwable t) {
                         // Try the ClassLoader that loaded Eclipselink classes
                         ClassLoader eclipseLinkClassLoader = EntityManagerSetupImpl.class.getClassLoader();
-                        helperClass = AccessController.doPrivileged(new PrivilegedClassForName(helperClassName, true, eclipseLinkClassLoader));
+                        helperClass = AccessController.doPrivileged(new PrivilegedClassForName<>(helperClassName, true, eclipseLinkClassLoader));
                     }
                 } else {
                     try {
@@ -4041,7 +4041,7 @@
                 validationMode = (ValidationMode) AccessController.doPrivileged(new PrivilegedMethodInvoker(method, persitenceUnitInfo));
             } else {
                 method = PrivilegedAccessHelper.getDeclaredMethod(PersistenceUnitInfo.class, "getValidationMode", null);
-                validationMode = (ValidationMode) PrivilegedAccessHelper.invokeMethod(method, persitenceUnitInfo, null);
+                validationMode = PrivilegedAccessHelper.invokeMethod(method, persitenceUnitInfo, null);
             }
         } catch (Throwable exception) {
             // We are running in JavaEE5 environment. Catch and swallow any exceptions and return null.
@@ -4087,7 +4087,7 @@
             boolean classInitialized = false;
             String className = MetadataHelper.getQualifiedCanonicalName(manType.getJavaType().getName(), getSession());
             try {
-                Class clazz = (Class)this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
+                Class clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
                 classInitialized=true;
                 this.getSession().log(SessionLog.FINER, SessionLog.METAMODEL, "metamodel_canonical_model_class_found", className);
                 String fieldName = "";
@@ -4177,7 +4177,7 @@
         updateCompositeMembersProperties(compositeMemberPuInfos, predeployProperties);
         // Don't log these properties - may contain passwords. The properties will be logged by contained persistence units.
         Map compositeMemberMapOfProperties = (Map)getConfigProperty(PersistenceUnitProperties.COMPOSITE_UNIT_PROPERTIES, predeployProperties);
-        this.compositeMemberEmSetupImpls = new HashSet(compositeMemberPuInfos.size());
+        this.compositeMemberEmSetupImpls = new HashSet<>(compositeMemberPuInfos.size());
         this.processor = new MetadataProcessor();
         if (enableWeaving) {
             this.weaver = new PersistenceWeaver(new HashMap<String, ClassDetails>());
@@ -4272,7 +4272,7 @@
             boolean classInitialized = false;
             String className = MetadataHelper.getQualifiedCanonicalName(((ManagedTypeImpl)manType).getJavaTypeName(), getSession());
             try {
-                Class clazz = (Class)this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
+                Class clazz = this.getSession().getDatasourcePlatform().convertObject(className, ClassConstants.CLASS);
                 classInitialized=true;
                 this.getSession().log(SessionLog.FINER, SessionLog.METAMODEL, "metamodel_canonical_model_class_found", className);
                 Field[] fields = null;
@@ -4332,7 +4332,7 @@
      * for required properties overrides values with those from composite properties.
      */
     protected void updateCompositeMembersProperties(Map compositeProperties) {
-        Set<SEPersistenceUnitInfo> compositePuInfos = new HashSet(compositeMemberEmSetupImpls.size());
+        Set<SEPersistenceUnitInfo> compositePuInfos = new HashSet<>(compositeMemberEmSetupImpls.size());
         for (EntityManagerSetupImpl compositeMemberEmSetupImpl : compositeMemberEmSetupImpls) {
             compositePuInfos.add((SEPersistenceUnitInfo)compositeMemberEmSetupImpl.persistenceUnitInfo);
         }
@@ -4351,10 +4351,10 @@
         Map compositeMemberMapOfProperties = (Map)getConfigProperty(PersistenceUnitProperties.COMPOSITE_UNIT_PROPERTIES, compositeProperties);
         Map newCompositeMemberMapOfProperties;
         if (compositeMemberMapOfProperties == null) {
-            newCompositeMemberMapOfProperties = new HashMap(compositePuInfos.size());
+            newCompositeMemberMapOfProperties = new HashMap<>(compositePuInfos.size());
         } else {
             // Don't alter user-supplied properties' map - create a copy instead
-            newCompositeMemberMapOfProperties = new HashMap(compositeMemberMapOfProperties);
+            newCompositeMemberMapOfProperties = new HashMap<>(compositeMemberMapOfProperties);
         }
 
         for (SEPersistenceUnitInfo compositePuInfo : compositePuInfos) {
@@ -4362,10 +4362,10 @@
             Map compositeMemberProperties = (Map)newCompositeMemberMapOfProperties.get(compositeMemberPuName);
             Map newCompositeMemberProperties;
             if (compositeMemberProperties == null) {
-                newCompositeMemberProperties = new HashMap();
+                newCompositeMemberProperties = new HashMap<>();
             } else {
                 // Don't alter user-supplied properties - create a copy instead
-                newCompositeMemberProperties = new HashMap(compositeMemberProperties);
+                newCompositeMemberProperties = new HashMap<>(compositeMemberProperties);
             }
             overrideMemberProperties(newCompositeMemberProperties, compositeProperties);
             newCompositeMemberProperties = mergeMaps(newCompositeMemberProperties, compositePuInfo.getProperties());
@@ -4410,7 +4410,7 @@
      */
     protected static Map<String, SEPersistenceUnitInfo> getCompositeMemberPuInfoMap(PersistenceUnitInfo puInfo, Map predeployProperties) {
         Set<SEPersistenceUnitInfo> memeberPuInfoSet = PersistenceUnitProcessor.getPersistenceUnits(puInfo.getClassLoader(), predeployProperties, puInfo.getJarFileUrls());
-        HashMap<String, SEPersistenceUnitInfo> memberPuInfoMap = new HashMap(memeberPuInfoSet.size());
+        HashMap<String, SEPersistenceUnitInfo> memberPuInfoMap = new HashMap<>(memeberPuInfoSet.size());
         for (SEPersistenceUnitInfo memberPuInfo : memeberPuInfoSet) {
             // override transaction type with composite's transaction type
             memberPuInfo.setTransactionType(puInfo.getTransactionType());
@@ -4449,7 +4449,7 @@
      * Return a Set of composite member SEPersistenceUnitInfo.
      */
     protected static Set<SEPersistenceUnitInfo> getCompositeMemberPuInfoSet(PersistenceUnitInfo puInfo, Map predeployProperties) {
-        return new HashSet(getCompositeMemberPuInfoMap(puInfo, predeployProperties).values());
+        return new HashSet<>(getCompositeMemberPuInfoMap(puInfo, predeployProperties).values());
     }
 
     public static void throwPersistenceUnitNameAlreadyInUseException(String puName, PersistenceUnitInfo newPuInfo, PersistenceUnitInfo exsitingPuInfo) {
@@ -4480,7 +4480,7 @@
         EntityManagerSetupImpl newSetupImpl = new EntityManagerSetupImpl(uniqueName, sessionName);
         newSetupImpl.setIsInContainerMode(isInContainerMode);
         newSetupImpl.enableWeaving = enableWeaving;
-        Map refreshProperties = new HashMap();
+        Map refreshProperties = new HashMap<>();
         refreshProperties.putAll(getSession().getProperties());
         if (properties != null){
             refreshProperties.putAll(properties);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
index 5a32780..a3fb2e5 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryHintsHandler.java
@@ -235,9 +235,9 @@
      * and set the valueArray if the set of valid values is finite.
      */
     protected static abstract class Hint {
-        static HashMap mainMap = new HashMap();
+        static HashMap<String, Hint> mainMap = new HashMap<>();
         Object[] valueArray;
-        HashMap valueMap;
+        HashMap<String, Object> valueMap;
         String name;
         String defaultValue;
         Object defaultValueToApply;
@@ -328,7 +328,7 @@
         abstract DatabaseQuery applyToDatabaseQuery(Object valueToApply, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession);
 
         static void verify(String hintName, boolean shouldUseDefault, Object hintValue, String queryName, AbstractSession session) {
-            Hint hint = (Hint)mainMap.get(hintName);
+            Hint hint = mainMap.get(hintName);
             if(hint == null) {
                 if(session != null) {
                     session.log(SessionLog.FINEST, SessionLog.QUERY, "unknown_query_hint", new Object[]{getPrintValue(queryName), hintName});
@@ -352,7 +352,7 @@
         }
 
         static DatabaseQuery apply(String hintName, boolean shouldUseDefault, Object hintValue, DatabaseQuery query, ClassLoader loader, AbstractSession activeSession) {
-            Hint hint = (Hint)mainMap.get(hintName);
+            Hint hint = mainMap.get(hintName);
             if (hint == null) {
                 // unknown hint name - silently ignored.
                 return query;
@@ -406,11 +406,11 @@
             return hintValue != null ? hintValue.toString().toUpperCase(Locale.ROOT) : null;
         }
 
-        static Class loadClass(String className, DatabaseQuery query, ClassLoader loader) throws QueryException {
+        static Class<?> loadClass(String className, DatabaseQuery query, ClassLoader loader) throws QueryException {
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                     try {
-                        return AccessController.doPrivileged(new PrivilegedClassForName(className, true, loader));
+                        return AccessController.doPrivileged(new PrivilegedClassForName<>(className, true, loader));
                     } catch (PrivilegedActionException exception) {
                         throw QueryException.classNotFoundWhileUsingQueryHint(query, className, exception.getException());
                     }
@@ -422,10 +422,10 @@
             }
         }
 
-        static Object newInstance(Class theClass, DatabaseQuery query, String hint) {
+        static <T> T newInstance(Class<T> theClass, DatabaseQuery query, String hint) {
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    return AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(theClass));
+                    return AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<T>(theClass));
                 } else {
                     return PrivilegedAccessHelper.newInstanceFromClass(theClass);
                 }
@@ -436,7 +436,7 @@
 
         void initialize() {
             if(valueArray != null) {
-                valueMap = new HashMap(valueArray.length);
+                valueMap = new HashMap<>(valueArray.length);
                 if(valueArray instanceof Object[][]) {
                     Object[][] valueArray2 = (Object[][])valueArray;
                     for(int i=0; i<valueArray2.length; i++) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
index 00792c8..775a6b5 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/QueryImpl.java
@@ -180,7 +180,7 @@
      * @return the results of the query execution
      */
     protected Object executeReadQuery() {
-        List parameterValues = processParameters();
+        List<Object> parameterValues = processParameters();
         // TODO: the following performFlush() call is a temporary workaround for
         // bug 4752493:
         // CTS: INMEMORY QUERYING IN EJBQUERY BROKEN DUE TO CHANGE TO USE
@@ -295,7 +295,7 @@
             entityManager.checkForTransaction(true);
 
             // fix for bug:4288845, did not add the parameters to the query
-            List parameterValues = processParameters();
+            List<Object> parameterValues = processParameters();
             if (isFlushModeAUTO()) {
                 performPreQueryFlush();
             }
@@ -568,20 +568,20 @@
      */
     protected List<Object> processParameters() {
         DatabaseQuery query = getDatabaseQueryInternal();
-        List arguments = query.getArguments();
+        List<String> arguments = query.getArguments();
         if (arguments.isEmpty()) {
             // This occurs for native queries, as the query does not know of its arguments.
             // This may have issues, it is better if the query set its arguments
             // when parsing the SQL.
 
-            arguments = new ArrayList<String>(this.parameterValues.keySet());
+            arguments = new ArrayList<>(this.parameterValues.keySet());
             query.setArguments(arguments);
         }
         // now create parameterValues in the same order as the argument list
         int size = arguments.size();
         List<Object> parameterValues = new ArrayList<Object>(size);
         for (int index = 0; index < size; index++) {
-            String name = (String) arguments.get(index);
+            String name = arguments.get(index);
             Object parameter = this.parameterValues.get(name);
             if ((parameter != null) || this.parameterValues.containsKey(name)) {
                 parameterValues.add(parameter);
@@ -1054,7 +1054,7 @@
     public Parameter<?> getParameter(String name) {
         //don't rollback transaction on error
         entityManager.verifyOpen();
-        Parameter param = getInternalParameters().get(name);
+        Parameter<?> param = getInternalParameters().get(name);
         if (param == null) {
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("NO_PARAMETER_WITH_NAME", new Object[] { name, this.databaseQuery }));
         }
@@ -1068,7 +1068,7 @@
     public Parameter<?> getParameter(int position) {
         //don't rollback transaction on error
         entityManager.verifyOpen();
-        Parameter param = getInternalParameters().get(String.valueOf(position));
+        Parameter<?> param = getInternalParameters().get(String.valueOf(position));
         if (param == null) {
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("NO_PARAMETER_WITH_INDEX", new Object[] { position, this.databaseQuery }));
         }
@@ -1142,7 +1142,7 @@
      */
     public Set<Parameter<?>> getParameters() {
         entityManager.verifyOpen();//don't rollback transaction
-        return new HashSet(getInternalParameters().values());
+        return new HashSet<>(getInternalParameters().values());
     }
 
     /**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
index 3cf7d7b..2a28966 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/StoredProcedureQueryImpl.java
@@ -61,6 +61,7 @@
 import org.eclipse.persistence.internal.helper.DatabaseField;
 import org.eclipse.persistence.internal.jpa.querydef.ParameterExpressionImpl;
 import org.eclipse.persistence.internal.localization.ExceptionLocalization;
+import org.eclipse.persistence.internal.sessions.AbstractRecord;
 import org.eclipse.persistence.internal.sessions.AbstractSession;
 import org.eclipse.persistence.logging.SessionLog;
 import org.eclipse.persistence.queries.DataReadQuery;
@@ -123,7 +124,7 @@
             executeCall.matchFieldOrder(resultSet, accessor, session);
             ResultSetMetaData metaData = resultSet.getMetaData();
 
-            List result =  new Vector();
+            List<AbstractRecord> result =  new Vector<>();
             while (resultSet.next()) {
                 result.add(accessor.fetchRow(executeCall.getFields(), executeCall.getFieldsArray(), resultSet, metaData, session));
             }
@@ -1118,7 +1119,7 @@
      */
     @Override
     protected void setParameterInternal(String name, Object value, boolean isIndex) {
-        Parameter parameter = this.getInternalParameters().get(name);
+        Parameter<?> parameter = this.getInternalParameters().get(name);
         StoredProcedureCall call = (StoredProcedureCall) getDatabaseQuery().getCall();
         if (parameter == null) {
             if (isIndex) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
index 24c53d5..58c3705 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/BeanValidationInitializationHelper.java
@@ -127,7 +127,7 @@
             Class loadedClass = null;
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                 loadedClass = AccessController.doPrivileged(
-                        new PrivilegedClassForName(className, true, classLoader));
+                        new PrivilegedClassForName<>(className, true, classLoader));
             } else {
                 loadedClass = PrivilegedAccessHelper.getClassForName(className, true, classLoader);
             }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
index 50896a5..2c04bc0 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JPAInitializer.java
@@ -96,7 +96,7 @@
         // Bug#4452468  When globalInstrumentation is null, there is no weaving
         checkWeaving(mergedProperties);
 
-        Set tempLoaderSet = PersistenceUnitProcessor.buildClassSet(persistenceUnitInfo, m);
+        Set<String> tempLoaderSet = PersistenceUnitProcessor.buildClassSet(persistenceUnitInfo, m);
         // Create the temp loader that will not cache classes for entities in our persistence unit
         ClassLoader tempLoader = createTempLoader(tempLoaderSet);
         persistenceUnitInfo.setNewTempClassLoader(tempLoader);
@@ -206,7 +206,7 @@
      * that we will be deploying.
      */
     protected Set loadEntityClasses(Collection entityNames, ClassLoader classLoader) {
-        Set entityClasses = new HashSet();
+        Set entityClasses = new HashSet<>();
 
         // Load the classes using the loader passed in
         AbstractSessionLog.getLog().log(SessionLog.FINER, SessionLog.JPA, "cmp_loading_entities_using_loader", classLoader);
@@ -260,10 +260,10 @@
     public void initialize(Map m) {
         boolean keepInitialMaps = keepAllPredeployedPersistenceUnits();
         if(keepInitialMaps) {
-            this.initialPuInfos = new HashMap();
+            this.initialPuInfos = new HashMap<>();
         }
         // always create initialEmSetupImpls - it's used to check for puName uniqueness in initPersistenceUnits
-        this.initialEmSetupImpls = new HashMap();
+        this.initialEmSetupImpls = new HashMap<>();
         // ailitchev - copied from findPersistenceUnitInfoInArchives: mkeith - get resource name from prop and include in subsequent call
         String descriptorPath = (String) m.get(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML);
         final Set<Archive> pars;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
index 76808e7..24a982e 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializer.java
@@ -102,7 +102,7 @@
                         }
                         usesAgent = true;
                         initializer = new JavaSECMPInitializer(classLoader);
-                        initializer.initialize(m != null ? m : new HashMap(0));
+                        initializer.initialize(m != null ? m : new HashMap<>(0));
                         // all the transformers have been added to instrumentation, don't need it any more.
                         globalInstrumentation = null;
                     }
@@ -181,7 +181,7 @@
             try {
                 Class[] argsClasses = new Class[] { URL[].class, ClassLoader.class, Collection.class, boolean.class };
                 Object[] args = new Object[] { urlPath, currentLoader, col, shouldOverrideLoadClassForCollectionMembers };
-                Constructor classLoaderConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(TempEntityLoader.class, argsClasses, true));
+                Constructor classLoaderConstructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(TempEntityLoader.class, argsClasses, true));
                 tempLoader = (ClassLoader) AccessController.doPrivileged(new PrivilegedInvokeConstructor(classLoaderConstructor, args));
             } catch (PrivilegedActionException privilegedException) {
                 throw new PersistenceException(EntityManagerSetupException.failedToInstantiateTemporaryClassLoader(privilegedException));
@@ -236,7 +236,7 @@
      * The version of initializeFromMain that passes an empty map.
      */
     public static void initializeFromMain() {
-        initializeFromMain(new HashMap());
+        initializeFromMain(new HashMap<>());
     }
 
     /**
@@ -356,7 +356,7 @@
                 // it doesn't return true if the class has been loaded by parent loader
                 // (forced to live with that because findLoadedClass method defined as final protected:
                 //  neither can override it nor call it on the parent loader)
-                Class c = findLoadedClass(name);
+                Class<?> c = findLoadedClass(name);
                 if (c == null) {
                     c = findClass(name);
                 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializerAgent.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializerAgent.java
index 27566c3..08eb8d9 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializerAgent.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/JavaSECMPInitializerAgent.java
@@ -47,7 +47,7 @@
     }
 
     public static void initializeFromAgent(Instrumentation instr) throws Throwable {
-            Class cls = Class.forName("org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializer");
+            Class<?> cls = Class.forName("org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializer");
             Method method = cls.getDeclaredMethod("initializeFromAgent", new Class[] { Instrumentation.class });
             try {
                 method.invoke(null, new Object[] { instr });
@@ -57,7 +57,7 @@
     }
 
     public static void initializeFromMain(Instrumentation instr) throws Exception {
-            Class cls = Class.forName("org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializer");
+            Class<?> cls = Class.forName("org.eclipse.persistence.internal.jpa.deployment.JavaSECMPInitializer");
             Field field = cls.getField("globalInstrumentation");
             field.set(null, instr);
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
index d29a6d0..dc6b7b5 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/PersistenceUnitProcessor.java
@@ -137,9 +137,9 @@
         Set<String> set = new HashSet<String>();
         set.addAll(persistenceUnitInfo.getManagedClassNames());
         ClassLoader loader = persistenceUnitInfo.getClassLoader();
-        Iterator i = persistenceUnitInfo.getJarFileUrls().iterator();
+        Iterator<URL> i = persistenceUnitInfo.getJarFileUrls().iterator();
         while (i.hasNext()) {
-            set.addAll(getClassNamesFromURL((URL)i.next(), loader, properties));
+            set.addAll(getClassNamesFromURL(i.next(), loader, properties));
         }
         if (!persistenceUnitInfo.excludeUnlistedClasses()){
             set.addAll(getClassNamesFromURL(persistenceUnitInfo.getPersistenceUnitRootUrl(), loader, properties));
@@ -421,7 +421,7 @@
             descriptorPath = PrivilegedAccessHelper.getSystemProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT);
         }
         Set<Archive> archives = findPersistenceArchives(loader, descriptorPath, jarFileUrls, m);
-        Set<SEPersistenceUnitInfo> puInfos = new HashSet();
+        Set<SEPersistenceUnitInfo> puInfos = new HashSet<>();
         try {
             for(Archive archive : archives) {
                 List<SEPersistenceUnitInfo> puInfosFromArchive = getPersistenceUnits(archive, loader);
@@ -461,7 +461,7 @@
         } else {
             try {
                 if (loader != null) {
-                    Class archiveClass = loader.loadClass(factoryClassName);
+                    Class<?> archiveClass = loader.loadClass(factoryClassName);
                     if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                         try {
                             factory = (ArchiveFactory)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(archiveClass));
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLException.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLException.java
index 43ed2dc..1f991e2 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLException.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -24,7 +24,7 @@
 
     public XMLException() {
         super();
-        m_nestedExceptions = new ArrayList();
+        m_nestedExceptions = new ArrayList<>();
     }
 
     public void addNestedException(Exception nestedException) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLNodeList.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLNodeList.java
index a74ce21..24ed868 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLNodeList.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/deployment/xml/parser/XMLNodeList.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -22,14 +22,14 @@
  * Implementation of the org.w3c.dom.NodeList interface
  */
 public class XMLNodeList implements NodeList {
-    private ArrayList nodes;
+    private ArrayList<Node> nodes;
 
     public XMLNodeList() {
-        nodes = new ArrayList();
+        nodes = new ArrayList<>();
     }
 
     public XMLNodeList(int size) {
-        nodes = new ArrayList(size);
+        nodes = new ArrayList<>(size);
     }
 
     @Override
@@ -39,7 +39,7 @@
 
     @Override
     public Node item(int i) {
-        return (Node)nodes.get(i);
+        return nodes.get(i);
     }
 
     public void add(Node node) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
index ce8219f..2269b39 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataHelper.java
@@ -96,7 +96,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    return AccessController.doPrivileged(new PrivilegedClassForName(classname, true, loader));
+                    return AccessController.doPrivileged(new PrivilegedClassForName<>(classname, true, loader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.unableToLoadClass(classname, exception.getException());
                 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProcessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProcessor.java
index c268d7e..b8bb99c 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProcessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2018 IBM Corporation. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -93,7 +93,7 @@
     protected MetadataFactory m_factory;
     protected MetadataProject m_project;
     protected AbstractSession m_session;
-    protected Map m_predeployProperties;
+    protected Map<String, Object> m_predeployProperties;
     protected MetadataProcessor m_compositeProcessor;
     protected Set<MetadataProcessor> m_compositeMemberProcessors;
     protected MetadataSource m_metadataSource;
@@ -109,7 +109,7 @@
      * Called from EntityManagerSetupImpl. The 'real' EJB 3.0 processing
      * that includes XML and annotations.
      */
-    public MetadataProcessor(PersistenceUnitInfo puInfo, AbstractSession session, ClassLoader loader, boolean weaveLazy, boolean weaveEager, boolean weaveFetchGroups, boolean multitenantSharedEmf, boolean multitenantSharedCache, Map predeployProperties, MetadataProcessor compositeProcessor) {
+    public MetadataProcessor(PersistenceUnitInfo puInfo, AbstractSession session, ClassLoader loader, boolean weaveLazy, boolean weaveEager, boolean weaveFetchGroups, boolean multitenantSharedEmf, boolean multitenantSharedCache, Map<String, Object> predeployProperties, MetadataProcessor compositeProcessor) {
         m_loader = loader;
         m_session = session;
         m_project = new MetadataProject(puInfo, session, weaveLazy, weaveEager, weaveFetchGroups, multitenantSharedEmf, multitenantSharedCache);
@@ -127,7 +127,7 @@
      */
     public void addCompositeMemberProcessor(MetadataProcessor compositeMemberProcessor) {
         if (m_compositeMemberProcessors == null) {
-            m_compositeMemberProcessors = new HashSet();
+            m_compositeMemberProcessors = new HashSet<>();
         }
         m_compositeMemberProcessors.add(compositeMemberProcessor);
     }
@@ -192,7 +192,7 @@
      * Returns projects owned by compositeProcessor minus the passed project.
      */
     public Set<MetadataProject> getPearProjects(MetadataProject project) {
-        Set<MetadataProject> pearProjects = new HashSet();
+        Set<MetadataProject> pearProjects = new HashSet<>();
         if (m_compositeMemberProcessors != null) {
             for(MetadataProcessor processor : m_compositeMemberProcessors) {
                 MetadataProject pearProject = processor.getProject();
@@ -339,7 +339,7 @@
         }
 
         // Add all the classes off the classpath at the persistence unit root url.
-        Set<String> unlistedClasses = Collections.EMPTY_SET;
+        Set<String> unlistedClasses = Collections.emptySet();
         if (! persistenceUnitInfo.excludeUnlistedClasses()) {
             unlistedClasses = PersistenceUnitProcessor.getClassNamesFromURL(persistenceUnitInfo.getPersistenceUnitRootUrl(), m_loader, m_predeployProperties);
         }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProject.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProject.java
index 74bfc5b..5a69cef 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProject.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/MetadataProject.java
@@ -1324,7 +1324,7 @@
                     m_sharedCacheMode = AccessController.doPrivileged(new PrivilegedMethodInvoker<SharedCacheMode>(method, m_persistenceUnitInfo));
                 } else {
                     method = PrivilegedAccessHelper.getDeclaredMethod(PersistenceUnitInfo.class, "getSharedCacheMode", null);
-                    m_sharedCacheMode = (SharedCacheMode) PrivilegedAccessHelper.invokeMethod(method, m_persistenceUnitInfo, null);
+                    m_sharedCacheMode = PrivilegedAccessHelper.invokeMethod(method, m_persistenceUnitInfo, null);
                 }
             } catch (Throwable exception) {
                 // Swallow any exceptions, shared cache mode will be null.
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
index 927ffb5..fdbe3f6 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/ORMetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -461,7 +461,7 @@
     /**
      * INTERNAL:
      * This is a value is that is used when logging messages for overriding.
-     * @see shouldOverride
+     * @see #shouldOverride(ORMetadata)
      */
     protected String getXMLElement() {
         return m_xmlElement;
@@ -517,9 +517,9 @@
      * INTERNAL:
      * It is assumed this is a list of ORMetadata
      */
-    protected void initXMLObjects(List metadatas, MetadataAccessibleObject accessibleObject) {
+    protected <T extends ORMetadata> void initXMLObjects(List<T> metadatas, MetadataAccessibleObject accessibleObject) {
         if (metadatas != null) {
-            for (ORMetadata metadata : (List<ORMetadata>) metadatas) {
+            for (T metadata : metadatas) {
                 metadata.initXMLObject(accessibleObject, m_entityMappings);
             }
         }
@@ -533,9 +533,9 @@
      * compatibility. If the text object is initialized the metadata list is
      * set to null to ease further processing (logging, warnings, overrides etc.)
      */
-    protected String initXMLTextObject(List metadatas) {
+    protected <T extends ORMetadata> String initXMLTextObject(List<T> metadatas) {
         if (metadatas != null && metadatas.size() == 1) {
-            ORMetadata metadata = ((ORMetadata) metadatas.get(0));
+            T metadata = metadatas.get(0);
 
             if (metadata.hasText()) {
                 String text = metadata.getText();
@@ -587,13 +587,13 @@
      * not check for duplicates or any overrides at this time. Just appends
      * all items from list2 to list1.
      */
-    protected List mergeORObjectLists(List list1, List list2) {
-        List<ORMetadata> newList = new ArrayList<ORMetadata>();
+    protected <T extends ORMetadata> List<T> mergeORObjectLists(List<T> list1, List<T> list2) {
+        List<T> newList = new ArrayList<>();
 
-        for (ORMetadata obj1 : (List<ORMetadata>) list1) {
+        for (T obj1 : list1) {
             boolean found = false;
 
-            for (ORMetadata obj2 : (List<ORMetadata>) list2) {
+            for (T obj2 : list2) {
                 if (obj2.getIdentifier().equals(obj1.getIdentifier())) {
                     if (obj2.shouldOverride(obj1)) {
                         newList.add(obj2);
@@ -612,10 +612,10 @@
         }
 
         // Now go through m2 and see what is not in m1
-        for (ORMetadata obj2 : (List<ORMetadata>) list2) {
+        for (T obj2 : list2) {
             boolean found = false;
 
-            for (ORMetadata obj1 : (List<ORMetadata>) list1) {
+            for (ORMetadata obj1 : list1) {
                if (obj2.getIdentifier().equals(obj1.getIdentifier())) {
                     found = true;
                     break;
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAnnotation.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAnnotation.java
index a67ab84..d0e5d71 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAnnotation.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAnnotation.java
@@ -37,7 +37,7 @@
     protected boolean isMeta = false;
 
     /** Map of attribute names and values. */
-    protected Map<String, Object> m_attributes = new HashMap<String, Object>();
+    protected Map<String, Object> m_attributes = new HashMap<>();
 
     /**
      * Default constructor.
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
index 164d872..04988e8 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/accessors/objects/MetadataAsmFactory.java
@@ -551,7 +551,7 @@
         // since it is a JDK class, just use reflection.
         if ((className.length() > 5) && className.substring(0, 5).equals("java.")) {
             try {
-                Class reflectClass = Class.forName(className);
+                Class<?> reflectClass = Class.forName(className);
                 if (reflectClass.getSuperclass() != null) {
                     metadataClass.setSuperclassName(reflectClass.getSuperclass().getName());
                 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/cache/CacheIndexMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/cache/CacheIndexMetadata.java
index 71db232..c31454f 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/cache/CacheIndexMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/cache/CacheIndexMetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -43,7 +43,7 @@
  */
 public class CacheIndexMetadata extends ORMetadata {
 
-    private List<String> m_columnNames = new ArrayList();
+    private List<String> m_columnNames = new ArrayList<>();
     private Boolean updateable;
 
     /**
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/graphs/NamedSubgraphMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/graphs/NamedSubgraphMetadata.java
index 9c3ec7b..7d4eb04 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/graphs/NamedSubgraphMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/graphs/NamedSubgraphMetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -20,6 +20,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.jpa.metadata.ORMetadata;
 import org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor;
@@ -69,7 +70,7 @@
         super(namedSubgraph, accessor);
 
         m_name = namedSubgraph.getAttributeString("name");
-        m_type = getMetadataClass(namedSubgraph.getAttributeClass("type", ClassConstants.Object_Class));
+        m_type = getMetadataClass(namedSubgraph.getAttributeClass("type", CoreClassConstants.OBJECT));
 
         for (Object attributeNode : namedSubgraph.getAttributeArray("attributeNodes")) {
             m_namedAttributeNodes.add(new NamedAttributeNodeMetadata((MetadataAnnotation) attributeNode, accessor));
@@ -161,7 +162,7 @@
         if (m_typeName != null && ! m_typeName.equals("")) {
             m_type = initXMLClassName(m_typeName);
         } else {
-            m_type = getMetadataClass(ClassConstants.Object_Class);
+            m_type = getMetadataClass(CoreClassConstants.OBJECT);
         }
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
index d2e832d..b63b0c8 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListener.java
@@ -551,7 +551,7 @@
             // So far so good, now check the method modifiers.
             validateMethodModifiers(method);
         } else {
-            Class parameterClass = (numberOfParameters == 0) ? null : method.getParameterTypes()[0];
+            Class<?> parameterClass = (numberOfParameters == 0) ? null : method.getParameterTypes()[0];
             throw ValidationException.invalidEntityListenerCallbackMethodArguments(m_entityClass, parameterClass, getListenerClass(), method.getName());
         }
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
index 0b9ea06..71e7c0e 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/EntityListenerMetadata.java
@@ -233,7 +233,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    return AccessController.doPrivileged(new PrivilegedClassForName(classname, true, loader));
+                    return AccessController.doPrivileged(new PrivilegedClassForName<>(classname, true, loader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.unableToLoadClass(classname, exception.getException());
                 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
index 70fce14..9f4c307 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/JPAEntityListenerHolder.java
@@ -123,7 +123,7 @@
         this.serializableMethods = new ConcurrentHashMap<>();
         for (String event: methods.keySet()){
             java.util.List<Method> methodList = methods.get(event);
-            java.util.List<MethodSerialImpl> newMethodList = new java.util.ArrayList();
+            java.util.List<MethodSerialImpl> newMethodList = new java.util.ArrayList<>();
             for (Method method: methodList) {
                 MethodSerialImpl serializableMethod = new MethodSerialImpl(method);
                 newMethodList.add(serializableMethod);
@@ -142,7 +142,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    entityListenerClass = AccessController.doPrivileged(new PrivilegedClassForName(listenerClassName, true, loader));
+                    entityListenerClass = AccessController.doPrivileged(new PrivilegedClassForName<>(listenerClassName, true, loader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.unableToLoadClass(listenerClassName, exception.getException());
                 }
@@ -163,8 +163,7 @@
      */
     public void addEventMethod(String event, Method method) {
         if (!getMethods().containsKey(event)) {
-            List methodsList = new ArrayList<MethodSerialImpl>();
-            methodsList.add(method);
+            List<MethodSerialImpl> methodsList = new ArrayList<>();
             serializableMethods.put(event, methodsList);
         }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
index 72d6541..2b8404d 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/listeners/MethodSerialImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -40,8 +40,8 @@
     public MethodSerialImpl(Method method) {
         methodName = method.getName();
         declaringClassName = method.getDeclaringClass().getName();
-        paramList = new java.util.ArrayList((method.getParameterTypes()).length);
-        for (Class clazz: method.getParameterTypes()) {
+        paramList = new java.util.ArrayList<>((method.getParameterTypes()).length);
+        for (Class<?> clazz: method.getParameterTypes()) {
             paramList.add(clazz.getName());
         }
     }
@@ -52,7 +52,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    declaringClass = AccessController.doPrivileged(new PrivilegedClassForName(declaringClassName, true, loader));
+                    declaringClass = AccessController.doPrivileged(new PrivilegedClassForName<>(declaringClassName, true, loader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.unableToLoadClass(declaringClassName, exception.getException());
                 }
@@ -70,7 +70,7 @@
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        argTypes[i++] = AccessController.doPrivileged(new PrivilegedClassForName(paramType, true, loader));
+                        argTypes[i++] = AccessController.doPrivileged(new PrivilegedClassForName<>(paramType, true, loader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.unableToLoadClass(paramType, exception.getException());
                     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/queries/NamedQueryMetadata.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/queries/NamedQueryMetadata.java
index 0e73144..a47c792 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/queries/NamedQueryMetadata.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metadata/queries/NamedQueryMetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -219,7 +219,7 @@
                 Object[] values = null;
 
                 if (value instanceof Object[]) {
-                    List list = new ArrayList(Arrays.asList((Object[])value));
+                    List<Object> list = new ArrayList<>(Arrays.asList((Object[])value));
                     list.add(hint.getValue());
                     values = list.toArray();
                 } else {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
index 153ca6b..29a95be 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/IdentifiableTypeImpl.java
@@ -39,7 +39,6 @@
 import org.eclipse.persistence.descriptors.CMPPolicy;
 import org.eclipse.persistence.descriptors.ClassDescriptor;
 import org.eclipse.persistence.internal.helper.DatabaseField;
-import org.eclipse.persistence.internal.jpa.CMP3Policy;
 import org.eclipse.persistence.internal.localization.ExceptionLocalization;
 import org.eclipse.persistence.mappings.DatabaseMapping;
 
@@ -229,7 +228,7 @@
                 for(DatabaseMapping aMapping : getDescriptor().getMappings()) {
                     if(aMapping.isJPAId()) {
                         // get the attribute Id (declared or not)
-                        Attribute anAttribute = this.getAttribute(aMapping.getAttributeName());
+                        Attribute<X, ?> anAttribute = this.getAttribute(aMapping.getAttributeName());
                         if(anAttribute != null) {
                             return this.getMetamodel().getType(((Bindable)anAttribute).getBindableJavaType()); // all Attributes are Bindable
                         }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
index 952e665..9414514 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/ManagedTypeImpl.java
@@ -771,7 +771,7 @@
         // Note this method provides the same functionality of the more specific IdentifiableType.superType but is general to ManagedTypeImpl
         ManagedTypeImpl<?> aSuperType = null;
         // Get the superType if it exists (without using IdentifiableType.superType)
-        Class aSuperClass = this.getJavaType().getSuperclass();
+        Class<? super X> aSuperClass = this.getJavaType().getSuperclass();
         // The superclass for top-level types will be Object - which we will leave as a null supertype on the type
         if(null != aSuperClass && aSuperClass != ClassConstants.OBJECT &&
                 this.getMetamodel().getType(aSuperClass).isManagedType()) { // 315287: return null for BasicType
@@ -1077,7 +1077,7 @@
          *     Exit(false) as soon as attribute is found in a superType - without continuing to the root
          *     continue as long as we find an attribute in the superType (essentially only MappedSuperclass parents)
          **/
-        Attribute anAttribute = this.getMembers().get(attributeName);
+        Attribute<X, ?> anAttribute = this.getMembers().get(attributeName);
         ManagedTypeImpl<?> aSuperType = getManagedSuperType();
 
         // Base Case: If we are at the root, check for the attribute and return results immediately
@@ -1095,7 +1095,7 @@
             }
         } else {
            // Recursive Case: check hierarchy both if the immediate superclass is a MappedSuperclassType or EntityType
-           Attribute aSuperTypeAttribute = aSuperType.getMembers().get(attributeName);
+           Attribute<?, ?> aSuperTypeAttribute = aSuperType.getMembers().get(attributeName);
            // UC1.3 The immediate mappedSuperclass may have the attribute - we check it in the base case of the next recursive call
            if(null != aSuperTypeAttribute) {
                // return false immediately if a superType exists above the first level
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/TypeImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/TypeImpl.java
index c0c9f65..406336b 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/TypeImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/metamodel/TypeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -73,17 +73,18 @@
      *  Return the represented Java type.
      *  @return Java type
      */
+    @SuppressWarnings({"unchecked"})
     public Class<X> getJavaType(ClassLoader classLoader) {
         if (javaClass == null){
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
-                        javaClass = AccessController.doPrivileged(new PrivilegedClassForName(javaClassName, true, classLoader));
+                        javaClass = (Class<X>) AccessController.doPrivileged(new PrivilegedClassForName(javaClassName, true, classLoader));
                     } catch (PrivilegedActionException exception) {
                         throw ValidationException.classNotFoundWhileConvertingClassNames(javaClassName, exception.getException());
                     }
                 } else {
-                    javaClass = org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(javaClassName, true, classLoader);
+                    javaClass = PrivilegedAccessHelper.getClassForName(javaClassName, true, classLoader);
                 }
             } catch (ClassNotFoundException exc){
                 throw ValidationException.classNotFoundWhileConvertingClassNames(javaClassName, exc);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundExpressionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundExpressionImpl.java
index 9b20f57..d3215a4 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundExpressionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundExpressionImpl.java
@@ -42,11 +42,11 @@
     protected boolean isNegated = false;
 
     public <T> CompoundExpressionImpl (Metamodel metamodel, org.eclipse.persistence.expressions.Expression expressionNode, List<Expression<?>> compoundExpressions){
-        super(metamodel, (Class<Boolean>)ClassConstants.BOOLEAN, expressionNode, compoundExpressions);
+        super(metamodel, ClassConstants.BOOLEAN, expressionNode, compoundExpressions);
     }
 
     public <T> CompoundExpressionImpl (Metamodel metamodel, org.eclipse.persistence.expressions.Expression expressionNode, List<Expression<?>> compoundExpressions, String operator){
-        super(metamodel, (Class<Boolean>)ClassConstants.BOOLEAN, expressionNode, compoundExpressions, operator);
+        super(metamodel, ClassConstants.BOOLEAN, expressionNode, compoundExpressions, operator);
     }
 
     /**
@@ -97,7 +97,7 @@
      */
     @Override
     public Predicate not(){
-        List<Expression<?>> list = new ArrayList();
+        List<Expression<?>> list = new ArrayList<>();
         list.add(this);
         CompoundExpressionImpl expr = new CompoundExpressionImpl(this.metamodel, this.currentNode.not(), list, "not");
         expr.setIsNegated(true);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
index 837a96b..aa8834e 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CompoundSelectionImpl.java
@@ -17,6 +17,8 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 
 import jakarta.persistence.criteria.CompoundSelection;
 import jakarta.persistence.criteria.Selection;
@@ -49,9 +51,9 @@
 
     public CompoundSelectionImpl(Class javaType, Selection[] subSelections, boolean validate) {
         super(javaType, null);
-        this.subSelections = new ArrayList();
+        this.subSelections = new ArrayList<>();
         //used to validate that an alias is only used once
-        java.util.Map tempMap = new java.util.TreeMap();
+        Map<String, Selection> tempMap = new TreeMap<>();
         for (Selection sel : subSelections) {
             if (validate) {
                 if (sel.isCompoundSelection() && !((SelectionImpl)sel).isConstructor()) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaBuilderImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaBuilderImpl.java
index af5084b..0b12f94 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaBuilderImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaBuilderImpl.java
@@ -106,7 +106,7 @@
                 if (resultClass.isPrimitive() || resultClass.equals(ClassConstants.STRING)|| BasicTypeHelperImpl.getInstance().isWrapperClass(resultClass) || BasicTypeHelperImpl.getInstance().isDateClass(resultClass)) {
                     return new CriteriaQueryImpl<T>(metamodel, ResultType.OTHER, resultClass, this);
                 } else {
-                    TypeImpl type = ((MetamodelImpl)this.metamodel).getType(resultClass);
+                    TypeImpl<T> type = ((MetamodelImpl)this.metamodel).getType(resultClass);
                     if (type != null && type.getPersistenceType().equals(PersistenceType.ENTITY)) {
                         return new CriteriaQueryImpl(this.metamodel, ResultType.ENTITY, resultClass, this);
                     } else {
@@ -556,7 +556,7 @@
                 throw new IllegalArgumentException(ExceptionLocalization.buildMessage("PREDICATE_PASSED_TO_EVALUATION"));
             }
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().equal(true), list, "equals");
     }
@@ -592,7 +592,7 @@
      */
     @Override
     public Predicate isNull(Expression<?> x){
-        return new PredicateImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().isNull(), new ArrayList(), BooleanOperator.AND);
+        return new PredicateImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().isNull(), new ArrayList<>(), BooleanOperator.AND);
     }
 
     /**
@@ -602,7 +602,7 @@
      */
     @Override
     public Predicate isNotNull(Expression<?> x){
-        return new PredicateImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().notNull(),new ArrayList(), BooleanOperator.AND);
+        return new PredicateImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().notNull(),new ArrayList<>(), BooleanOperator.AND);
     }
 
     // equality:
@@ -618,7 +618,7 @@
     @Override
     public Predicate equal(Expression<?> x, Expression<?> y){
 
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().equal(((InternalSelection)y).getCurrentNode()), list, "equals");
@@ -638,7 +638,7 @@
         if (((InternalSelection)x).getCurrentNode() == null || ((InternalSelection)y).getCurrentNode() == null){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().notEqual(((InternalSelection)y).getCurrentNode()), list, "not equal");
@@ -661,7 +661,7 @@
         }
         if (y instanceof ParameterExpression) return this.equal(x, (ParameterExpression)y);
 
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(this.internalLiteral(y));
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().equal(y), list, "equal");
@@ -682,7 +682,7 @@
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
         if (y instanceof ParameterExpression) return this.notEqual(x, (ParameterExpression)y);
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(this.internalLiteral(y));
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().notEqual(y), list, "not equal");
@@ -704,7 +704,7 @@
         if (((InternalSelection)x).getCurrentNode() == null || ((InternalSelection)y).getCurrentNode() == null){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().greaterThan(((InternalSelection)y).getCurrentNode()), list, "greaterThan");
@@ -743,7 +743,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null || ((ExpressionImpl)y).getCurrentNode() == null){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().greaterThanEqual(((ExpressionImpl)y).getCurrentNode()), list, "greaterThanEqual");
@@ -764,7 +764,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null || ((ExpressionImpl)y).getCurrentNode() == null){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().lessThanEqual(((ExpressionImpl)y).getCurrentNode()), list, "lessThanEqual");
@@ -785,7 +785,7 @@
     @Override
     public <Y extends Comparable<? super Y>> Predicate between(Expression<? extends Y> v, Expression<? extends Y> x, Expression<? extends Y> y){
 
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(v);
         list.add(x);
         list.add(y);
@@ -808,7 +808,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null ){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(expressionY);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().greaterThan(((ExpressionImpl)expressionY).getCurrentNode()), list, "greaterThan");
@@ -830,7 +830,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null ){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(expressionY);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().lessThan(((ExpressionImpl)expressionY).getCurrentNode()), list, "lessThan");
@@ -852,7 +852,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null ){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(expressionY);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().greaterThanEqual(((ExpressionImpl)expressionY).getCurrentNode()), list, "greaterThanEqual");
@@ -874,7 +874,7 @@
         if (((ExpressionImpl)x).getCurrentNode() == null ){
             throw new IllegalArgumentException(ExceptionLocalization.buildMessage("OPERATOR_EXPRESSION_IS_CONJUNCTION"));
         }
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(expressionY);
         return new CompoundExpressionImpl(this.metamodel, ((ExpressionImpl)x).getCurrentNode().lessThanEqual(((ExpressionImpl)expressionY).getCurrentNode()), list, "lessThanEqual");
@@ -894,7 +894,7 @@
      */
     @Override
     public <Y extends Comparable<? super Y>> Predicate between(Expression<? extends Y> v, Y x, Y y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(v);
         list.add(this.internalLiteral(x));
         list.add(this.internalLiteral(y));
@@ -902,7 +902,7 @@
     }
 
     protected List<Expression<?>> buildList(Expression<?>... expressions){
-        ArrayList list = new ArrayList();
+        List list = new ArrayList<>();
         for(Expression<?> exp : expressions){
             list.add(exp);
         }
@@ -922,7 +922,7 @@
      */
     @Override
     public Predicate gt(Expression<? extends Number> x, Expression<? extends Number> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().greaterThan(((InternalSelection)y).getCurrentNode()), list, "gt");
@@ -955,7 +955,7 @@
      */
     @Override
     public Predicate ge(Expression<? extends Number> x, Expression<? extends Number> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().greaterThanEqual(((InternalSelection)y).getCurrentNode()), list, "ge");
@@ -973,7 +973,7 @@
      */
     @Override
     public Predicate le(Expression<? extends Number> x, Expression<? extends Number> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().lessThanEqual(((InternalSelection)y).getCurrentNode()), list, "le");
@@ -991,7 +991,7 @@
      */
     @Override
     public Predicate gt(Expression<? extends Number> x, Number y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(internalLiteral(y));
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().greaterThan(y), list, "gt");
@@ -1024,7 +1024,7 @@
      */
     @Override
     public Predicate ge(Expression<? extends Number> x, Number y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(internalLiteral(y));
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().greaterThanEqual(y), list, "ge");
@@ -1130,7 +1130,7 @@
      */
     @Override
     public <N extends Number> Expression<N> diff(Expression<? extends N> x, Expression<? extends N> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         return new FunctionExpressionImpl(this.metamodel, x.getJavaType(), ExpressionMath.subtract(((InternalSelection)x).getCurrentNode(), ((InternalSelection)y).getCurrentNode()), list, "diff");
@@ -1175,7 +1175,7 @@
      */
     @Override
     public <N extends Number> Expression<N> diff(Expression<? extends N> x, N y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(this.internalLiteral(y));
         return new FunctionExpressionImpl(this.metamodel, y.getClass(), ExpressionMath.subtract(((InternalSelection)x).getCurrentNode(), y), list, "diff");
@@ -1220,7 +1220,7 @@
      */
     @Override
     public <N extends Number> Expression<N> diff(N x, Expression<? extends N> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         ExpressionImpl literal = (ExpressionImpl) this.internalLiteral(x);
         list.add(literal);
         list.add(y);
@@ -1636,7 +1636,7 @@
      */
     @Override
     public Predicate like(Expression<String> x, Expression<String> pattern){
-        List list = this.buildList(x, pattern);
+        List<Expression<?>> list = this.buildList(x, pattern);
         return new CompoundExpressionImpl(this.metamodel,
             ((InternalSelection)x).getCurrentNode().like(((InternalSelection)pattern).getCurrentNode()), list, "like");
     }
@@ -1655,7 +1655,7 @@
      */
     @Override
     public Predicate like(Expression<String> x, Expression<String> pattern, Expression<Character> escapeChar){
-        List list = this.buildList(x, pattern, escapeChar);
+        List<Expression<?>> list = this.buildList(x, pattern, escapeChar);
         return new CompoundExpressionImpl(this.metamodel,
             ((InternalSelection)x).getCurrentNode().like(((InternalSelection)pattern).getCurrentNode(), ((InternalSelection)escapeChar).getCurrentNode()), list, "like");
     }
@@ -1690,7 +1690,7 @@
      */
     @Override
     public Predicate like(Expression<String> x, String pattern){
-        List list = this.buildList(x, this.internalLiteral(pattern));
+        List<Expression<?>> list = this.buildList(x, this.internalLiteral(pattern));
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)x).getCurrentNode().like(pattern), list, "like");
     }
 
@@ -1725,7 +1725,7 @@
      */
     @Override
     public Predicate like(Expression<String> x, String pattern, char escapeChar){
-        List list = this.buildList(x, this.internalLiteral(pattern), this.internalLiteral(escapeChar));
+        List<Expression<?>> list = this.buildList(x, this.internalLiteral(pattern), this.internalLiteral(escapeChar));
         String escapeString = String.valueOf(escapeChar);
 
         return new CompoundExpressionImpl(this.metamodel,
@@ -1744,7 +1744,7 @@
      */
     @Override
     public Predicate notLike(Expression<String> x, Expression<String> pattern){
-        List list = this.buildList(x, pattern);
+        List<Expression<?>> list = this.buildList(x, pattern);
 
         return new CompoundExpressionImpl(this.metamodel,
             ((InternalSelection)x).getCurrentNode().notLike(((InternalSelection)pattern).getCurrentNode()), list, "notLike");
@@ -1764,7 +1764,7 @@
      */
     @Override
     public Predicate notLike(Expression<String> x, Expression<String> pattern, Expression<Character> escapeChar){
-        List list = this.buildList(x, pattern, escapeChar);
+        List<Expression<?>> list = this.buildList(x, pattern, escapeChar);
 
         return new CompoundExpressionImpl(this.metamodel,
             ((InternalSelection)x).getCurrentNode().notLike(((InternalSelection)pattern).getCurrentNode(),
@@ -1800,7 +1800,7 @@
      */
     @Override
     public Predicate notLike(Expression<String> x, String pattern){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(this.internalLiteral(pattern));
 
@@ -1853,7 +1853,7 @@
      */
     @Override
     public Expression<String> concat(Expression<String> x, Expression<String> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(y);
         org.eclipse.persistence.expressions.Expression xNode = ((InternalSelection)x).getCurrentNode();
@@ -1877,7 +1877,7 @@
      */
     @Override
     public Expression<String> concat(Expression<String> x, String y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(x);
         list.add(this.internalLiteral(y));
         return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().concat(y), list, CONCAT);
@@ -1895,7 +1895,7 @@
      */
     @Override
     public Expression<String> concat(String x, Expression<String> y){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         ExpressionImpl literal = (ExpressionImpl) this.internalLiteral(x);
         list.add(literal);
         list.add(y);
@@ -1976,7 +1976,7 @@
      */
     @Override
     public Expression<String> trim(Expression<String> x){
-        List list = this.buildList(x);
+        List<Expression<?>> list = this.buildList(x);
         return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().trim(), list, "trim");
     }
 
@@ -1991,7 +1991,7 @@
      */
     @Override
     public Expression<String> trim(Trimspec ts, Expression<String> x){
-        List list = this.buildList(x);
+        List<Expression<?>> list = this.buildList(x);
 
         if(ts == Trimspec.LEADING) {
             return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().leftTrim(), list, "leftTrim");
@@ -2013,7 +2013,7 @@
      */
     @Override
     public Expression<String> trim(Expression<Character> t, Expression<String> x){
-        List list = this.buildList(x, t);
+        List<Expression<?>> list = this.buildList(x, t);
         return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().trim(((InternalSelection)t).getCurrentNode()), list, "trim");
     }
 
@@ -2030,7 +2030,7 @@
      */
     @Override
     public Expression<String> trim(Trimspec ts, Expression<Character> t, Expression<String> x){
-        List list = this.buildList(x, t);
+        List<Expression<?>> list = this.buildList(x, t);
 
         if(ts == Trimspec.LEADING) {
             return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING,
@@ -2082,7 +2082,7 @@
      */
     @Override
     public Expression<String> lower(Expression<String> x){
-        List list = this.buildList(x);
+        List<Expression<?>> list = this.buildList(x);
         return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().toLowerCase(), list, "lower");
     }
 
@@ -2095,7 +2095,7 @@
      */
     @Override
     public Expression<String> upper(Expression<String> x){
-        List list = this.buildList(x);
+        List<Expression<?>> list = this.buildList(x);
         return new FunctionExpressionImpl(this.metamodel, ClassConstants.STRING, ((InternalSelection)x).getCurrentNode().toUpperCase(), list, "upper");
     }
 
@@ -2224,9 +2224,9 @@
      */
     @Override
     public <T> In<T> in(Expression<? extends T> expression){
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(expression);
-        return new InImpl(metamodel, (ExpressionImpl) expression, new ArrayList(), list);
+        return new InImpl(metamodel, (ExpressionImpl) expression, new ArrayList<>(), list);
     }
 
     // coalesce, nullif:
@@ -2311,7 +2311,7 @@
     @Override
     public <T> Coalesce<T> coalesce(){
         ArgumentListFunctionExpression coalesce = new ExpressionBuilder().coalesce();
-        return new CoalesceImpl(metamodel, Object.class, coalesce, new ArrayList());
+        return new CoalesceImpl(metamodel, Object.class, coalesce, new ArrayList<>());
     }
 
     /**
@@ -2324,7 +2324,7 @@
     @Override
     public <C, R> SimpleCase<C, R> selectCase(Expression<? extends C> expression){
         ArgumentListFunctionExpression caseStatement = new ExpressionBuilder().caseStatement();
-        return new SimpleCaseImpl(metamodel, Object.class, caseStatement, new ArrayList(), expression);
+        return new SimpleCaseImpl(metamodel, Object.class, caseStatement, new ArrayList<>(), expression);
     }
 
     /**
@@ -2335,7 +2335,7 @@
     @Override
     public <R> Case<R> selectCase(){
         ArgumentListFunctionExpression caseStatement = new ExpressionBuilder().caseConditionStatement();
-        return new CaseImpl(metamodel, Object.class, caseStatement, new ArrayList());
+        return new CaseImpl(metamodel, Object.class, caseStatement, new ArrayList<>());
     }
 
     /**
@@ -2354,13 +2354,13 @@
         if (args != null && args.length > 0){
         List<org.eclipse.persistence.expressions.Expression> params = new ArrayList<org.eclipse.persistence.expressions.Expression>();
         for (int index = 1; index < args.length; ++index){
-            Expression x = args[index];
+            Expression<?> x = args[index];
             params.add(((InternalSelection)x).getCurrentNode());
         }
 
         return new FunctionExpressionImpl<T>(metamodel, type, ((InternalSelection)args[0]).getCurrentNode().getFunctionWithArguments(name, params), buildList(args), name);
         }else{
-            return new FunctionExpressionImpl<T>(metamodel, type, new ExpressionBuilder().getFunction(name), new ArrayList(0), name);
+            return new FunctionExpressionImpl<T>(metamodel, type, new ExpressionBuilder().getFunction(name), new ArrayList<>(0), name);
         }
     }
 
@@ -2371,7 +2371,7 @@
      */
     @Override
     public <T> Expression<T> fromExpression(org.eclipse.persistence.expressions.Expression expression, Class<T> type) {
-        return new FunctionExpressionImpl<T>(this.metamodel, type, expression, new ArrayList(0));
+        return new FunctionExpressionImpl<T>(this.metamodel, type, expression, new ArrayList<>(0));
     }
 
     /**
@@ -2381,7 +2381,7 @@
      */
     @Override
     public Expression fromExpression(org.eclipse.persistence.expressions.Expression expression) {
-        return new FunctionExpressionImpl(this.metamodel, Object.class, expression, new ArrayList(0));
+        return new FunctionExpressionImpl(this.metamodel, Object.class, expression, new ArrayList<>(0));
     }
 
     /**
@@ -2671,7 +2671,7 @@
     @Override
     public <T> CriteriaDelete<T> createCriteriaDelete(Class<T> targetEntity) {
         if (targetEntity != null) {
-            TypeImpl type = ((MetamodelImpl)this.metamodel).getType(targetEntity);
+            TypeImpl<T> type = ((MetamodelImpl)this.metamodel).getType(targetEntity);
             if (type != null && type.getPersistenceType().equals(PersistenceType.ENTITY)) {
                 return new CriteriaDeleteImpl(this.metamodel, this, targetEntity);
             }
@@ -2682,7 +2682,7 @@
     @Override
     public <T> CriteriaUpdate<T> createCriteriaUpdate(Class<T> targetEntity) {
         if (targetEntity != null) {
-            TypeImpl type = ((MetamodelImpl)this.metamodel).getType(targetEntity);
+            TypeImpl<T> type = ((MetamodelImpl)this.metamodel).getType(targetEntity);
             if (type != null && type.getPersistenceType().equals(PersistenceType.ENTITY)) {
                 return new CriteriaUpdateImpl(this.metamodel, this, targetEntity);
             }
@@ -2693,7 +2693,7 @@
     @Override
     public <X, T, V extends T> Join<X, V> treat(Join<X, T> join, Class<V> type) {
         JoinImpl parentJoin = (JoinImpl)join;
-        JoinImpl joinImpl = new JoinImpl<X, V>(parentJoin, this.metamodel.managedType(type), this.metamodel,
+        JoinImpl<X, V> joinImpl = new JoinImpl<X, V>(parentJoin, this.metamodel.managedType(type), this.metamodel,
                 type, parentJoin.currentNode.treat(type), parentJoin.getModel(), parentJoin.getJoinType());
         parentJoin.joins.add(joinImpl);
         joinImpl.isJoin = parentJoin.isJoin;
@@ -2784,7 +2784,7 @@
     @Override
     public <X, T extends X> Root<T> treat(Root<X> root, Class<T> type) {
         RootImpl parentRoot = (RootImpl)root;
-        EntityType entity = this.metamodel.entity(type);
+        EntityType<T> entity = this.metamodel.entity(type);
         return new RootImpl<T>(entity, this.metamodel, type, parentRoot.currentNode.treat(type), entity);
     }
 }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
index 5b544c8..1a76351 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/CriteriaQueryImpl.java
@@ -361,7 +361,7 @@
      */
     @Override
     public CriteriaQuery<T> orderBy(Order... o) {
-        this.orderBy = new ArrayList();
+        this.orderBy = new ArrayList<>();
         for (Order order : o) {
             this.orderBy.add(order);
         }
@@ -412,7 +412,7 @@
         Constructor constructor = null;
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(class1, constructorArgs, false));
+                constructor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(class1, constructorArgs, false));
             } else {
                 constructor = PrivilegedAccessHelper.getConstructorFor(class1, constructorArgs, false);
             }
@@ -523,7 +523,7 @@
                 reportQuery.setShouldReturnSingleAttribute(true);
             } else {
                 if (this.queryResult.equals(ResultType.TUPLE)) {
-                    reportQuery = new TupleQuery(this.selection == null ? new ArrayList() : this.selection.getCompoundSelectionItems());
+                    reportQuery = new TupleQuery(this.selection == null ? new ArrayList<>() : this.selection.getCompoundSelectionItems());
                 } else {
                     reportQuery = new ReportQuery();
                     reportQuery.setShouldReturnWithoutReportQueryResult(true);
@@ -672,7 +672,7 @@
         } else {
             ReportQuery reportQuery = null;
             if (this.queryResult.equals(ResultType.TUPLE)) {
-                List list = new ArrayList();
+                List list = new ArrayList<>();
                 list.add(this.selection);
                 reportQuery = new TupleQuery(list);
             } else {
@@ -713,7 +713,7 @@
             if (this.where != null && ((InternalSelection) this.where).getCurrentNode() != null && ((InternalSelection) this.where).getCurrentNode().getBuilder() != null && ((InternalSelection) this.where).getCurrentNode().getBuilder().getQueryClass() != null) {
                 query.setReferenceClass(((InternalSelection) this.where).getCurrentNode().getBuilder().getQueryClass());
             } else if (roots != null && ! roots.isEmpty()){
-                Root root = this.getRoots().iterator().next();
+                Root<?> root = this.getRoots().iterator().next();
                 query.setReferenceClass(root.getJavaType());
             }
         }
@@ -740,7 +740,7 @@
     public DatabaseQuery translate() {
         ObjectLevelReadQuery query = (ObjectLevelReadQuery)super.translate();
 
-        for (Iterator iterator = this.getRoots().iterator(); iterator.hasNext();) {
+        for (Iterator<Root<?>> iterator = this.getRoots().iterator(); iterator.hasNext();) {
             findJoins((FromImpl) iterator.next());
         }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ExpressionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ExpressionImpl.java
index a6c860f..26955f5 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ExpressionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/ExpressionImpl.java
@@ -78,7 +78,7 @@
 
     @Override
     public Predicate in(Object... values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.in(values), list, "in");
     }
@@ -99,7 +99,7 @@
                 // and route the execution to the right method
                 return in((Expression<Collection<?>>) values[0]);
             }
-            List list = new ArrayList();
+            List list = new ArrayList<>();
             list.add(this);
             if (values.length == 1 && ((InternalExpression) values[0]).isSubquery()) {
                 list.add(values[0]);
@@ -130,7 +130,7 @@
      */
     @Override
     public Predicate in(Collection<?> values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new InImpl(this.metamodel, this, values, list);
     }
@@ -142,7 +142,7 @@
      */
     @Override
     public Predicate in(Expression<Collection<?>> values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(values);
         list.add(this);
         return new InImpl(metamodel, this, (ExpressionImpl)values, list);
@@ -150,7 +150,7 @@
 
     @Override
     public Predicate isNotNull() {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.notNull(), list, "not null");
     }
@@ -158,7 +158,7 @@
 
     @Override
     public Predicate isNull() {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.isNull(), list, "is null");
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
index 232333c..3286a7c 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FromImpl.java
@@ -17,8 +17,10 @@
 package org.eclipse.persistence.internal.jpa.querydef;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.Stack;
 
@@ -148,7 +150,7 @@
         if (((SingularAttribute)assoc).getType().getPersistenceType().equals(PersistenceType.BASIC)){
             throw new IllegalStateException(ExceptionLocalization.buildMessage("CAN_NOT_JOIN_TO_BASIC"));
         }
-        Class clazz = assoc.getBindableJavaType();
+        Class<Y> clazz = assoc.getBindableJavaType();
         Fetch<X, Y> join = null;
         ObjectExpression exp = ((ObjectExpression)this.currentNode).newDerivedExpressionNamed(assoc.getName());
         if (jt.equals(JoinType.LEFT)){
@@ -276,7 +278,7 @@
             return new PathImpl<Y>(this, this.metamodel, att.getBindableJavaType(),this.currentNode.get(att.getName()), att);
         }else{
             Class<Y> clazz = att.getBindableJavaType();
-            Join join = new JoinImpl<X, Y>(this, this.metamodel.managedType(clazz), this.metamodel, clazz,this.currentNode.get(att.getName()), att);
+            Join<X, Y> join = new JoinImpl<>(this, this.metamodel.managedType(clazz), this.metamodel, clazz,this.currentNode.get(att.getName()), att);
             this.joins.add(join);
             return join;
         }
@@ -294,7 +296,7 @@
     public <E, C extends java.util.Collection<E>> Expression<C> get(PluralAttribute<X, C, E> collection){
 
         // This is a special Expression that represents just the collection for member of etc...
-        return new ExpressionImpl<C>(this.metamodel, ClassConstants.Collection_Class ,this.currentNode.anyOf(collection.getName()));
+        return new ExpressionImpl<C>(this.metamodel, (Class<C>) ((Class<E>) Class.class) ,this.currentNode.anyOf(collection.getName()));
     }
 
     /**
@@ -306,7 +308,7 @@
      */
     @Override
     public <K, V, M extends java.util.Map<K, V>> Expression<M> get(MapAttribute<X, K, V> map){
-        return new ExpressionImpl<M>(this.metamodel, ClassConstants.Map_Class ,this.currentNode.anyOf(map.getName()));
+        return new ExpressionImpl<M>(this.metamodel, (Class<M>) ((Class<?>) Class.class) ,this.currentNode.anyOf(map.getName()));
     }
 
     /**
@@ -367,7 +369,7 @@
         if (((SingularAttribute)attribute).getType().getPersistenceType().equals(PersistenceType.BASIC)){
             throw new IllegalStateException(ExceptionLocalization.buildMessage("CAN_NOT_JOIN_TO_BASIC"));
         }
-        Class clazz = attribute.getBindableJavaType();
+        Class<Y> clazz = attribute.getBindableJavaType();
         Join<X, Y> join = null;
         ObjectExpression exp = ((ObjectExpression)this.currentNode).newDerivedExpressionNamed(attribute.getName());
         if (jt.equals(JoinType.LEFT)){
@@ -406,7 +408,7 @@
     @Override
     public <Y> CollectionJoin<X, Y> join(CollectionAttribute<? super X, Y> collection, JoinType jt) {
         org.eclipse.persistence.expressions.Expression node;
-        Class clazz = collection.getBindableJavaType();
+        Class<Y> clazz = collection.getBindableJavaType();
         CollectionJoin<X, Y> join = null;
         if (jt.equals(JoinType.INNER)) {
             node = this.currentNode.anyOf(collection.getName());
@@ -428,7 +430,7 @@
     @Override
     public <Y> SetJoin<X, Y> join(jakarta.persistence.metamodel.SetAttribute<? super X, Y> set, JoinType jt) {
         org.eclipse.persistence.expressions.Expression node;
-        Class clazz = set.getBindableJavaType();
+        Class<Y> clazz = set.getBindableJavaType();
         SetJoin<X, Y> join = null;
         if (jt.equals(JoinType.INNER)) {
             node = this.currentNode.anyOf(set.getName());
@@ -450,7 +452,7 @@
     @Override
     public <Y> ListJoin<X, Y> join(ListAttribute<? super X, Y> list, JoinType jt) {
         org.eclipse.persistence.expressions.Expression node;
-        Class clazz = list.getBindableJavaType();
+        Class<Y> clazz = list.getBindableJavaType();
         ListJoin<X, Y> join = null;
         if (jt.equals(JoinType.INNER)) {
             node = this.currentNode.anyOf(list.getName());
@@ -472,7 +474,7 @@
     @Override
     public <K, V> MapJoin<X, K, V> join(MapAttribute<? super X, K, V> map, JoinType jt) {
         org.eclipse.persistence.expressions.Expression node;
-        Class clazz = map.getBindableJavaType();
+        Class<V> clazz = map.getBindableJavaType();
         MapJoin<X, K, V> join = null;
         if (jt.equals(JoinType.INNER)) {
             node = this.currentNode.anyOf(map.getName());
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FunctionExpressionImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FunctionExpressionImpl.java
index b5c8ee8..8b62aa7 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FunctionExpressionImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/FunctionExpressionImpl.java
@@ -44,7 +44,7 @@
         if (compoundExpressions != null){
             this.expressions = compoundExpressions;
         }else{
-            this.expressions = new ArrayList();
+            this.expressions = new ArrayList<>();
         }
     }
 
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/InImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/InImpl.java
index e708717..9b48188 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/InImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/InImpl.java
@@ -150,7 +150,7 @@
     @Override
     public Predicate not(){
         parentNode = this.getCurrentNode().not();
-        ArrayList list = new ArrayList();
+        List<Expression<?>> list = new ArrayList<>();
         list.add(this);
         CompoundExpressionImpl expr = new CompoundExpressionImpl(this.metamodel, parentNode, list, "not");
         expr.setIsNegated(true);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/JoinImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/JoinImpl.java
index fba26dc..9a17e67 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/JoinImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/JoinImpl.java
@@ -112,7 +112,7 @@
         if (((ExpressionImpl)this.on).isPredicate()) return (Predicate)this.on;
 
         //see queryBuilder.isTrue(this.on);
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this.on);
         return new CompoundExpressionImpl(this.metamodel, ((InternalSelection)this.on).getCurrentNode().equal(true), list, "equals");
     }
@@ -140,7 +140,7 @@
                         ((CompoundExpressionImpl)restrictions[i]).getCurrentNode());
                 ((CompoundExpressionImpl)a).setParentNode(currentNode);
                 ((CompoundExpressionImpl)restrictions[i]).setParentNode(currentNode);
-                ArrayList list = new ArrayList();
+                ArrayList list = new ArrayList<>();
                 list.add(a);
                 list.add(restrictions[i]);
                 a = new PredicateImpl(this.metamodel, currentNode, list, BooleanOperator.AND);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/PredicateImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/PredicateImpl.java
index ff2fc5d..fd64536 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/PredicateImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/PredicateImpl.java
@@ -94,7 +94,7 @@
             predicateImpl.setIsNegated(true);
             return predicateImpl;
         }
-        List<Expression<?>> list = new ArrayList();
+        List<Expression<?>> list = new ArrayList<>();
         list.add(this);
         predicateImpl = new PredicateImpl(this.metamodel, this.currentNode.not(), list, this.booloperator);
         predicateImpl.setIsNegated(true);
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
index 9f3eb98..fac2310 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/querydef/SubQueryImpl.java
@@ -87,8 +87,8 @@
             this.subQuery.setReferenceClass(result);
         }
         this.subQuery.setDistinctState(ObjectLevelReadQuery.DONT_USE_DISTINCT);
-        this.correlatedJoins = new HashSet();
-        this.correlations = new HashSet();
+        this.correlatedJoins = new HashSet<>();
+        this.correlations = new HashSet<>();
         this.currentNode = new SubSelectExpression(subQuery, new ExpressionBuilder());
         this.parent = parent;
     }
@@ -103,10 +103,10 @@
     @Override
     public Subquery<T> select(Expression<T> selection) {
         findRootAndParameters(selection);
-        for (Iterator iterator = this.getRoots().iterator(); iterator.hasNext();){
+        for (Iterator<Root<?>> iterator = this.getRoots().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
-        for (Iterator iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
+        for (Iterator<Join<?, ?>> iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
 
@@ -123,7 +123,7 @@
             }
             this.subQuery.setExpressionBuilder(((InternalSelection)selection.getCompoundSelectionItems().get(0)).getCurrentNode().getBuilder());
         } else {
-            TypeImpl type = ((MetamodelImpl)this.metamodel).getType(selection.getJavaType());
+            TypeImpl<? extends T> type = ((MetamodelImpl)this.metamodel).getType(selection.getJavaType());
             if (type != null && type.getPersistenceType().equals(PersistenceType.ENTITY)) {
                 this.subQuery.addAttribute("", new ConstantExpression(1, ((InternalSelection)selection).getCurrentNode().getBuilder()));
                 this.subQuery.addNonFetchJoinedAttribute(((InternalSelection)selection).getCurrentNode());
@@ -157,10 +157,10 @@
             currentNode = currentNode.and(exp);
         }
         this.subQuery.setSelectionCriteria(currentNode);
-        for (Iterator iterator = this.getRoots().iterator(); iterator.hasNext();){
+        for (Iterator<Root<?>> iterator = this.getRoots().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
-        for (Iterator iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
+        for (Iterator<Join<?, ?>> iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
         return this;
@@ -186,10 +186,10 @@
             currentNode = currentNode.and(exp);
         }
         this.subQuery.setSelectionCriteria(currentNode);
-        for (Iterator iterator = this.getRoots().iterator(); iterator.hasNext();){
+        for (Iterator<Root<?>> iterator = this.getRoots().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
-        for (Iterator iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
+        for (Iterator<Join<?, ?>> iterator = this.getCorrelatedJoins().iterator(); iterator.hasNext();){
             findJoins((FromImpl)iterator.next());
         }
         return this;
@@ -476,7 +476,7 @@
 
     @Override
     public Predicate in(Object... values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.in(values), list, "in");
     }
@@ -489,7 +489,7 @@
      */
     @Override
     public Predicate in(Expression<?>... values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         for (Expression exp: values){
             if (!((InternalExpression)exp).isLiteral() && !((InternalExpression) exp).isParameter()){
@@ -509,7 +509,7 @@
      */
     @Override
     public Predicate in(Collection<?> values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.in(values), list, "in");
     }
@@ -521,14 +521,14 @@
      */
     @Override
     public Predicate in(Expression<Collection<?>> values) {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.in(((InternalSelection)values).getCurrentNode()), list, "in");
     }
 
     @Override
     public Predicate isNotNull() {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.notNull(), list, "not null");
     }
@@ -536,7 +536,7 @@
 
     @Override
     public Predicate isNull() {
-        List list = new ArrayList();
+        List list = new ArrayList<>();
         list.add(this);
         return new CompoundExpressionImpl(this.metamodel, this.currentNode.isNull(), list, "is null");
     }
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/ClassWeaver.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/ClassWeaver.java
index 3c4fe28..b74e7e6 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/ClassWeaver.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/ClassWeaver.java
@@ -748,8 +748,8 @@
         }
 
         if (classDetails.shouldWeaveValueHolders()) {
-            for (Iterator iterator = classDetails.getAttributesMap().values().iterator(); iterator.hasNext();) {
-                AttributeDetails attributeDetails = (AttributeDetails) iterator.next();
+            for (Iterator<AttributeDetails> iterator = classDetails.getAttributesMap().values().iterator(); iterator.hasNext();) {
+                AttributeDetails attributeDetails = iterator.next();
                 if (attributeDetails.weaveValueHolders()) { // &&
                                                             // !attributeDetails.isAttributeOnSuperClass())
                                                             // {
@@ -1409,8 +1409,8 @@
             boolean attributeAccess = false;
             // For each attribute we need to check what methods and variables to
             // add.
-            for (Iterator iterator = this.classDetails.getAttributesMap().values().iterator(); iterator.hasNext();) {
-                AttributeDetails attributeDetails = (AttributeDetails) iterator.next();
+            for (Iterator<AttributeDetails> iterator = this.classDetails.getAttributesMap().values().iterator(); iterator.hasNext();) {
+                AttributeDetails attributeDetails = iterator.next();
                 // Only add to classes that actually contain the attribute we
                 // are
                 // processing
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
index 9ebe5e7..76f166b 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/PersistenceWeaver.java
@@ -95,7 +95,7 @@
         final SessionLog log = AbstractSessionLog.getLog();
         // PERF: Is finest logging on weaving turned on?
         final boolean shouldLogFinest = log.shouldLog(SessionLog.FINEST, SessionLog.WEAVER);
-        final Map classDetailsMap = this.classDetailsMap;
+        final Map<String, ClassDetails> classDetailsMap = this.classDetailsMap;
         // Check if cleared already.
         if (classDetailsMap == null) {
             return null;
@@ -107,7 +107,7 @@
              * Thus, we must check the classDetailsMap to see if we are 'interested'
              * in the class.
              */
-            final ClassDetails classDetails = (ClassDetails)classDetailsMap.get(Helper.toSlashedClassName(className));
+            final ClassDetails classDetails = classDetailsMap.get(Helper.toSlashedClassName(className));
 
             if (classDetails != null) {
                 if (shouldLogFinest) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
index 0b626aa..6b3f246 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/internal/jpa/weaving/TransformerFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -111,7 +111,7 @@
      * We assume that if a mapping exists, the attribute must either be mapped from the owning
      * class or from a superclass.
      */
-    public void addClassDetailsForMappedSuperClasses(MetadataClass clz, ClassDescriptor initialDescriptor, ClassDetails classDetails, Map classDetailsMap, List unMappedAttributes, boolean weaveChangeTracking){
+    public void addClassDetailsForMappedSuperClasses(MetadataClass clz, ClassDescriptor initialDescriptor, ClassDetails classDetails, Map<String, ClassDetails> classDetailsMap, List<DatabaseMapping> unMappedAttributes, boolean weaveChangeTracking){
         MetadataClass superClz = clz.getSuperclass();
         if (superClz == null || superClz.isObject()){
             return;
@@ -127,7 +127,7 @@
 
         boolean weaveValueHolders = canWeaveValueHolders(superClz, unMappedAttributes);
 
-        List stillUnMappedMappings = null;
+        List<DatabaseMapping> stillUnMappedMappings = null;
         ClassDetails superClassDetails = createClassDetails(superClz, weaveValueHolders, weaveChangeTracking, weaveFetchGroups, weaveInternal, weaveRest);
         superClassDetails.setIsMappedSuperClass(true);
 
@@ -204,8 +204,8 @@
             }
 
             // hookup superClassDetails
-            for (Iterator i = classDetailsMap.values().iterator(); i.hasNext();) {
-                ClassDetails classDetails = (ClassDetails)i.next();
+            for (Iterator<ClassDetails> i = classDetailsMap.values().iterator(); i.hasNext();) {
+                ClassDetails classDetails = i.next();
                 ClassDetails superClassDetails = classDetailsMap.get(classDetails.getSuperClassName());
                 if (superClassDetails == null) {
                     ClassDescriptor descriptor = findDescriptor(session.getProject(), classDetails.getDescribedClass().getName());
@@ -220,8 +220,8 @@
 
             // Fix weaveChangeTracking based on superclasses,
             // we should only weave change tracking if our whole hierarchy can.
-            for (Iterator i = classDetailsMap.values().iterator(); i.hasNext();) {
-                ClassDetails classDetails = (ClassDetails)i.next();
+            for (Iterator<ClassDetails> i = classDetailsMap.values().iterator(); i.hasNext();) {
+                ClassDetails classDetails = i.next();
                 classDetails.setShouldWeaveChangeTracking(classDetails.canWeaveChangeTracking());
             }
         }
@@ -298,7 +298,7 @@
         classDetails.setShouldWeaveFetchGroups(weaveFetchGroups);
         classDetails.setShouldWeaveInternal(weaveInternal);
         classDetails.setShouldWeaveREST(weaveRest);
-        MetadataMethod method = metadataClass.getMethod("clone", new ArrayList(), false);
+        MetadataMethod method = metadataClass.getMethod("clone", new ArrayList<>(), false);
         classDetails.setImplementsCloneMethod(method != null);
         return classDetails;
     }
@@ -309,9 +309,9 @@
      * This avoids having to construct a project by class facilitating weaving
      */
     protected ClassDescriptor findDescriptor(Project project, String className){
-        Iterator iterator = project.getOrderedDescriptors().iterator();
+        Iterator<ClassDescriptor> iterator = project.getOrderedDescriptors().iterator();
         while (iterator.hasNext()){
-            ClassDescriptor descriptor = (ClassDescriptor)iterator.next();
+            ClassDescriptor descriptor = iterator.next();
             if (descriptor.getJavaClassName().equals(className)){
                 return descriptor;
             }
@@ -344,7 +344,7 @@
         if (mapping.isAbstractDirectMapping() && mapping.getAttributeAccessor().isVirtualAttributeAccessor()){
             return metadataClass.getMetadataClass(((AbstractDirectMapping)mapping).getAttributeClassificationName());
         } else if (getterMethod != null) {
-            MetadataMethod method = metadataClass.getMethod(getterMethod, new ArrayList(), checkSuperclass);
+            MetadataMethod method = metadataClass.getMethod(getterMethod, new ArrayList<>(), checkSuperclass);
             if (method == null) {
                 return null;
             }
@@ -364,14 +364,14 @@
      *  Return the list of mappings that is not specifically found on the given class.  These attributes will
      *  be found on MappedSuperclasses.
      */
-    protected List storeAttributeMappings(MetadataClass metadataClass, ClassDetails classDetails, List mappings, boolean weaveValueHolders) {
-        List unMappedAttributes = new ArrayList();
+    protected List<DatabaseMapping> storeAttributeMappings(MetadataClass metadataClass, ClassDetails classDetails, List<DatabaseMapping> mappings, boolean weaveValueHolders) {
+        List<DatabaseMapping> unMappedAttributes = new ArrayList<>();
         Map<String, AttributeDetails> attributesMap = new HashMap<String, AttributeDetails>();
         Map<String, AttributeDetails> settersMap = new HashMap<String, AttributeDetails>();
         Map<String, AttributeDetails> gettersMap = new HashMap<String, AttributeDetails>();
 
-        for (Iterator iterator = mappings.iterator(); iterator.hasNext();) {
-            DatabaseMapping mapping = (DatabaseMapping)iterator.next();
+        for (Iterator<DatabaseMapping> iterator = mappings.iterator(); iterator.hasNext();) {
+            DatabaseMapping mapping = iterator.next();
 
             // Can't weave something that isn't really there and not going to be there.
             if (mapping.isMultitenantPrimaryKeyMapping()) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/PersistenceProvider.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/PersistenceProvider.java
index f4c18d6..0e0d4e2 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/PersistenceProvider.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/jpa/PersistenceProvider.java
@@ -183,7 +183,7 @@
      */
     @Override
     public EntityManagerFactory createEntityManagerFactory(String emName, Map properties){
-        Map nonNullProperties = (properties == null) ? new HashMap() : properties;
+        Map nonNullProperties = (properties == null) ? new HashMap<>() : properties;
 
         if (checkForProviderProperty(nonNullProperties)){
             String name = (emName == null) ? "" : emName;
@@ -243,7 +243,7 @@
     @Override
     public boolean generateSchema(String persistenceUnitName, Map properties) {
         String puName = (persistenceUnitName == null) ? "" : persistenceUnitName;
-        Map nonNullProperties = (properties == null) ? new HashMap() : properties;
+        Map nonNullProperties = (properties == null) ? new HashMap<>() : properties;
 
         // If not EclipseLink, do nothing.
         if (checkForProviderProperty(nonNullProperties)) {
@@ -320,7 +320,7 @@
         // Record that we are inside a JEE container to allow weaving for non managed persistence units.
         JavaSECMPInitializer.setIsInContainer(true);
 
-        Map nonNullProperties = (properties == null) ? new HashMap() : properties;
+        Map nonNullProperties = (properties == null) ? new HashMap<>() : properties;
 
         String forceTargetServer = EntityManagerFactoryProvider.getConfigPropertyAsString(SystemProperties.ENFORCE_TARGET_SERVER, null);
         if ("true".equalsIgnoreCase(forceTargetServer)) {
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
index 9a458db..a2cd1a4 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveClassTransformer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -112,7 +112,7 @@
             if (persistenceUnitsList==null) {
                 throw PersistenceUnitLoadingException.couldNotGetUnitInfoFromUrl(inputArchiveURL);
             }
-            Map emptyMap = new HashMap(0);
+            Map emptyMap = new HashMap<>(0);
             Iterator<SEPersistenceUnitInfo> persistenceUnitsIterator = persistenceUnitsList.iterator();
             while (persistenceUnitsIterator.hasNext()) {
                 SEPersistenceUnitInfo unitInfo = persistenceUnitsIterator.next();
diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java
index 8669d0d..168a263 100644
--- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java
+++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java
@@ -40,7 +40,6 @@
 import org.eclipse.persistence.internal.localization.ToStringLocalization;
 import org.eclipse.persistence.jpa.Archive;
 import org.eclipse.persistence.logging.AbstractSessionLog;
-import org.eclipse.persistence.logging.DefaultSessionLog;
 import org.eclipse.persistence.logging.SessionLog;
 
 /**
@@ -258,9 +257,9 @@
         Archive sourceArchive =(new ArchiveFactoryImpl()).createArchive(source, null, null);
         if (sourceArchive != null) {
             try {
-                Iterator entries = sourceArchive.getEntries();
+                Iterator<String> entries = sourceArchive.getEntries();
                 while (entries.hasNext()){
-                    String entryName = (String)entries.next();
+                    String entryName = entries.next();
                     InputStream entryInputStream = sourceArchive.getEntry(entryName);
 
                     // Add a directory entry
@@ -280,7 +279,7 @@
                     byte[] originalClassBytes=null;
                     byte[] transferredClassBytes=null;
                     try {
-                        Class thisClass = this.classLoader.loadClass(className);
+                        Class<?> thisClass = this.classLoader.loadClass(className);
                         // If the class is not in the classpath, we simply copy the entry
                         // to the target(no weaving).
                         if (thisClass == null){
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/IDResolverWrapper.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/IDResolverWrapper.java
index 429d815..6a40d82 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/IDResolverWrapper.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/IDResolverWrapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -106,7 +106,7 @@
     public Callable<?> resolve(Object id, Class targetType) throws SAXException {
         try {
             Object[] params = new Object[] { id.toString(), targetType };
-            return (Callable<?>) PrivilegedAccessHelper.invokeMethod(this.resolveMethod, this.resolver, params);
+            return PrivilegedAccessHelper.invokeMethod(this.resolveMethod, this.resolver, params);
         } catch (Exception ex) {
             throw XMLMarshalException.errorInvokingIDResolver(RESOLVE_METHOD_NAME, this.resolver, ex);
         }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/MultiArgInstantiationPolicy.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/MultiArgInstantiationPolicy.java
index 9d9cac0..f4fefda 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/MultiArgInstantiationPolicy.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/MultiArgInstantiationPolicy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -63,7 +63,7 @@
                     try{
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                             try {
-                                values[i] = AccessController.doPrivileged(new PrivilegedClassForName(parameterTypeNames[i], true, loader));
+                                values[i] = AccessController.doPrivileged(new PrivilegedClassForName<>(parameterTypeNames[i], true, loader));
                             } catch (PrivilegedActionException exception) {
                                 throw ValidationException.classNotFoundWhileConvertingClassNames(parameterTypeNames[i], exception.getException());
                             }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/XMLJavaTypeConverter.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/XMLJavaTypeConverter.java
index 3f09a8b..675d9ef 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/XMLJavaTypeConverter.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/internal/jaxb/XMLJavaTypeConverter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -51,7 +51,7 @@
 public class XMLJavaTypeConverter extends org.eclipse.persistence.oxm.mappings.converters.XMLConverterAdapter {
     protected Class boundType = Object.class;
     protected Class valueType = Object.class;
-    protected Class xmlAdapterClass;
+    protected Class<?> xmlAdapterClass;
     protected String xmlAdapterClassName;
     protected XmlAdapter xmlAdapter;
     protected QName schemaType;
@@ -241,7 +241,7 @@
         if (xmlAdapterClass == null) {
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                    xmlAdapterClass = AccessController.doPrivileged(new PrivilegedClassForName(getXmlAdapterClassName(), true, loader));
+                    xmlAdapterClass = AccessController.doPrivileged(new PrivilegedClassForName<>(getXmlAdapterClassName(), true, loader));
                 } else {
                     xmlAdapterClass = PrivilegedAccessHelper.getClassForName(getXmlAdapterClassName(), true, loader);
                 }
@@ -260,14 +260,14 @@
         try {
         try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                    xmlAdapter = (XmlAdapter) AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(getXmlAdapterClass()));
+                    xmlAdapter = (XmlAdapter) AccessController.doPrivileged(new PrivilegedNewInstanceFromClass<>(getXmlAdapterClass()));
                 } else {
                     xmlAdapter = (XmlAdapter) PrivilegedAccessHelper.newInstanceFromClass(getXmlAdapterClass());
                 }
             } catch (IllegalAccessException e) {
                 Constructor ctor = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
-                        ctor = AccessController.doPrivileged(new PrivilegedGetConstructorFor(xmlAdapterClass, new Class[0], true));
+                        ctor = AccessController.doPrivileged(new PrivilegedGetConstructorFor<>(xmlAdapterClass, new Class[0], true));
                 } else {
                     ctor = PrivilegedAccessHelper.getDeclaredConstructorFor(xmlAdapterClass, new Class[0], true);
                 }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
index 3c7d3ff..4a97ca5 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
@@ -1498,7 +1498,7 @@
                     } else if (type == CoreClassConstants.XML_GREGORIAN_CALENDAR) {
                         name = Constants.ANY_SIMPLE_TYPE_QNAME;
                     } else {
-                        name = (QName) XMLConversionManager.getDefaultJavaTypes().get(type);
+                        name = XMLConversionManager.getDefaultJavaTypes().get(type);
                     }
                 }
             }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBEnumTypeConverter.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBEnumTypeConverter.java
index d9d7ad1..87404ae 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBEnumTypeConverter.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBEnumTypeConverter.java
@@ -63,7 +63,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try {
-                    m_enumClass = AccessController.doPrivileged(new PrivilegedClassForName(m_enumClassName, true, classLoader));
+                    m_enumClass = AccessController.doPrivileged(new PrivilegedClassForName<>(m_enumClassName, true, classLoader));
                 } catch (PrivilegedActionException exception) {
                     throw ValidationException.classNotFoundWhileConvertingClassNames(m_enumClassName, exception.getException());
                 }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBMarshaller.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBMarshaller.java
index 3eef795..1a8faf9 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBMarshaller.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBMarshaller.java
@@ -188,7 +188,7 @@
                 return xmlroot;
             }
         } else {
-            xmlroot.setSchemaType((QName) org.eclipse.persistence.internal.oxm.XMLConversionManager.getDefaultJavaTypes().get(elt.getDeclaredType()));
+            xmlroot.setSchemaType(org.eclipse.persistence.internal.oxm.XMLConversionManager.getDefaultJavaTypes().get(elt.getDeclaredType()));
         }
 
         if (elt instanceof WrappedValue) {
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
index 6b465a1..510a2a7 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -1198,9 +1198,9 @@
                 value = null;
             } else if(null == xsiType) {
                 if (clazz == CoreClassConstants.ABYTE || clazz == CoreClassConstants.APBYTE || clazz.getCanonicalName().equals("jakarta.activation.DataHandler")) {
-                    value = (T) xcm.convertObject(stringBuilder.toString(), clazz, Constants.BASE_64_BINARY_QNAME);
+                    value = xcm.convertObject(stringBuilder.toString(), clazz, Constants.BASE_64_BINARY_QNAME);
                 } else {
-                    value = (T) xcm.convertObject(stringBuilder.toString(), clazz);
+                    value = xcm.convertObject(stringBuilder.toString(), clazz);
                 }
             } else {
                 int colonIndex = xsiType.indexOf(':');
@@ -1216,7 +1216,7 @@
                 }
                 String typeNamespace = namespaces.get(typePrefix);
                 QName typeQName = new QName(typeNamespace, typeName);
-                value = (T) xcm.convertObject(stringBuilder.toString(), clazz, typeQName);
+                value = xcm.convertObject(stringBuilder.toString(), clazz, typeQName);
 
             }
 
@@ -1324,7 +1324,7 @@
             if (xsiNil) {
                 value = null;
             } else {
-                value = (E) xcm.convertObject(stringBuffer.toString(), componentClass);
+                value = xcm.convertObject(stringBuffer.toString(), componentClass);
             }
             addValue(value);
             stringBuffer.reset();
@@ -1345,7 +1345,7 @@
 
             while (st.hasMoreTokens()) {
                 String nextToken = st.nextToken();
-                value = (E) xcm.convertObject(nextToken, componentClass);
+                value = xcm.convertObject(nextToken, componentClass);
                 addValue(value);
             }
             stringBuffer.reset();
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
index 70206cf..fef80cf 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
@@ -373,7 +373,7 @@
                                     qname = Constants.ANY_SIMPLE_TYPE_QNAME;
                                 } else {
                                     Class theClass = helper.getClassForJavaClass(nextClass);
-                                    qname = (QName) XMLConversionManager.getDefaultJavaTypes().get(theClass);
+                                    qname = XMLConversionManager.getDefaultJavaTypes().get(theClass);
                                 }
                             }
                         }
@@ -738,7 +738,7 @@
         if(xmlAccessorFactory != null) {
             Class xmlAccessorFactoryClass = null;
             try {
-                xmlAccessorFactoryClass = (Class)PrivilegedAccessHelper.invokeMethod(valueMethod, xmlAccessorFactory, new Object[]{});
+                xmlAccessorFactoryClass = PrivilegedAccessHelper.invokeMethod(valueMethod, xmlAccessorFactory, new Object[]{});
                 info.setXmlAccessorFactory(new AccessorFactoryWrapper(PrivilegedAccessHelper.newInstanceFromClass(xmlAccessorFactoryClass)));
             } catch (Exception ex) {
                 throw JAXBException.errorInstantiatingAccessorFactory(xmlAccessorFactoryClass, ex);
@@ -1344,7 +1344,7 @@
             Object seeAlso = helper.getAnnotation(javaClass, xmlSeeAlsoClass);
             Class[] values = null;
             try {
-                values = (Class[]) PrivilegedAccessHelper.invokeMethod(valueMethod, seeAlso, new Object[] {});
+                values = PrivilegedAccessHelper.invokeMethod(valueMethod, seeAlso, new Object[] {});
             } catch (Exception ex) {
             }
 
@@ -1951,7 +1951,7 @@
                         if (helper.isAnnotationPresent(javaField, XmlAttribute.class)) {
                             Object value = ((JavaFieldImpl) javaField).get(null);
                             if (value != null) {
-                                String stringValue = (String) XMLConversionManager.getDefaultXMLManager().convertObject(value, String.class, property.getSchemaType());
+                                String stringValue = XMLConversionManager.getDefaultXMLManager().convertObject(value, String.class, property.getSchemaType());
                                 property.setFixedValue(stringValue);
                             }
                         }
@@ -2486,7 +2486,7 @@
             try{
                 Method requireMethod = PrivilegedAccessHelper.getMethod(XmlElementRef.class, "required", new Class[0], true);
                 if(requireMethod != null){
-                    Boolean val = (Boolean)PrivilegedAccessHelper.invokeMethod(requireMethod, nextRef);
+                    Boolean val = PrivilegedAccessHelper.invokeMethod(requireMethod, nextRef);
                     property.setIsRequired(val);
                 }
             } catch (Exception exception){
@@ -3399,7 +3399,7 @@
             // reflectively load XmlSchema class to avoid dependency
             try {
                 Method locationMethod = PrivilegedAccessHelper.getDeclaredMethod(XmlSchema.class, "location", new Class[] {});
-                String location = (String) PrivilegedAccessHelper.invokeMethod(locationMethod, xmlSchema, new Object[] {});
+                String location = PrivilegedAccessHelper.invokeMethod(locationMethod, xmlSchema, new Object[] {});
 
                 if (location != null) {
                     if (location.equals("##generate")) {
@@ -3603,7 +3603,7 @@
                 Annotation xmlAccessorFactory = helper.getAnnotation(pack, CompilerHelper.ACCESSOR_FACTORY_ANNOTATION_CLASS);
                 Class xmlAccessorFactoryClass = null;
                 try {
-                    xmlAccessorFactoryClass = (Class)PrivilegedAccessHelper.invokeMethod(CompilerHelper.ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
+                    xmlAccessorFactoryClass = PrivilegedAccessHelper.invokeMethod(CompilerHelper.ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
                     packageInfo.setAccessorFactory(new AccessorFactoryWrapper(PrivilegedAccessHelper.newInstanceFromClass(xmlAccessorFactoryClass)));
                 } catch (Exception ex) {
                     throw JAXBException.errorInstantiatingAccessorFactory(xmlAccessorFactoryClass, ex);
@@ -3612,7 +3612,7 @@
                 Annotation xmlAccessorFactory = helper.getAnnotation(pack, CompilerHelper.OLD_ACCESSOR_FACTORY_ANNOTATION_CLASS);
                 Class xmlAccessorFactoryClass = null;
                 try {
-                    xmlAccessorFactoryClass = (Class)PrivilegedAccessHelper.invokeMethod(CompilerHelper.OLD_ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
+                    xmlAccessorFactoryClass = PrivilegedAccessHelper.invokeMethod(CompilerHelper.OLD_ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
                     packageInfo.setAccessorFactory(new AccessorFactoryWrapper(PrivilegedAccessHelper.newInstanceFromClass(xmlAccessorFactoryClass)));
                 } catch (Exception ex) {
                     throw JAXBException.errorInstantiatingAccessorFactory(xmlAccessorFactoryClass, ex);
@@ -3621,7 +3621,7 @@
                 Annotation xmlAccessorFactory = helper.getAnnotation(pack, CompilerHelper.INTERNAL_ACCESSOR_FACTORY_ANNOTATION_CLASS);
                 Class xmlAccessorFactoryClass = null;
                 try {
-                    xmlAccessorFactoryClass = (Class)PrivilegedAccessHelper.invokeMethod(CompilerHelper.INTERNAL_ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
+                    xmlAccessorFactoryClass = PrivilegedAccessHelper.invokeMethod(CompilerHelper.INTERNAL_ACCESSOR_FACTORY_VALUE_METHOD, xmlAccessorFactory, new Object[]{});
                     packageInfo.setAccessorFactory(new AccessorFactoryWrapper(PrivilegedAccessHelper.newInstanceFromClass(xmlAccessorFactoryClass)));
                 } catch (Exception ex) {
                     throw JAXBException.errorInstantiatingAccessorFactory(xmlAccessorFactoryClass, ex);
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
index 4918e06..30100f5 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MappingsGenerator.java
@@ -2119,7 +2119,7 @@
                         Class declaredClass;
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                                 try {
-                                    declaredClass = AccessController.doPrivileged(new PrivilegedClassForName(componentType.getRawName(), false, helper.getClassLoader()));
+                                    declaredClass = AccessController.doPrivileged(new PrivilegedClassForName<>(componentType.getRawName(), false, helper.getClassLoader()));
                                 } catch (PrivilegedActionException exception) {
                                     throw JAXBException.classNotFoundException(componentType.getRawName());
                                 }
@@ -2139,7 +2139,7 @@
                         Class declaredClass;
                         if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
                                 try {
-                                    declaredClass = AccessController.doPrivileged(new PrivilegedClassForName(itemType.getRawName(), false, helper.getClassLoader()));
+                                    declaredClass = AccessController.doPrivileged(new PrivilegedClassForName<>(itemType.getRawName(), false, helper.getClassLoader()));
                                 } catch (PrivilegedActionException exception) {
                                     throw JAXBException.classNotFoundException(itemType.getRawName());
                                 }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MarshalCallback.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MarshalCallback.java
index ccf474e..308f510 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MarshalCallback.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/MarshalCallback.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -68,7 +68,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try{
-                    domainClass = AccessController.doPrivileged(new PrivilegedClassForName(domainClassName, true, loader));
+                    domainClass = AccessController.doPrivileged(new PrivilegedClassForName<>(domainClassName, true, loader));
                 }catch (PrivilegedActionException ex){
                     if (ex.getCause() instanceof ClassNotFoundException){
                         throw (ClassNotFoundException) ex.getCause();
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/UnmarshalCallback.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/UnmarshalCallback.java
index d0cfb9d..89ee438 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/UnmarshalCallback.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/UnmarshalCallback.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -68,7 +68,7 @@
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                 try{
-                    domainClass = AccessController.doPrivileged(new PrivilegedClassForName(domainClassName, true, loader));
+                    domainClass = AccessController.doPrivileged(new PrivilegedClassForName<>(domainClassName, true, loader));
                 }catch (PrivilegedActionException ex){
                     if (ex.getCause() instanceof ClassNotFoundException){
                         throw (ClassNotFoundException) ex.getCause();
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmladapter/generics/Root.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmladapter/generics/Root.java
index cb7a922..f38a1a9 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmladapter/generics/Root.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmladapter/generics/Root.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -20,7 +20,7 @@
 @XmlRootElement
 public class Root {
 
-    @XmlJavaTypeAdapter(AAdapter.class)
+    @XmlJavaTypeAdapter(value = AAdapter.class)
     public A<B> a;
 
     public boolean equals(Object obj) {
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlelementrefs/adapter/XmlElementRefsAdapterTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlelementrefs/adapter/XmlElementRefsAdapterTestCases.java
index fcfa376..d03833d 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlelementrefs/adapter/XmlElementRefsAdapterTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlelementrefs/adapter/XmlElementRefsAdapterTestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -46,8 +46,8 @@
         Foo f = new Foo();
         f.e1OrE2 = new ArrayList<JAXBElement<byte[]>>();
 
-        byte[] bytes = (byte[]) XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
-        byte[] bytes2 = (byte[]) XMLConversionManager.getDefaultXMLManager().convertObject("cafe", byte[].class, Constants.BASE_64_BINARY_QNAME);
+        byte[] bytes = XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
+        byte[] bytes2 = XMLConversionManager.getDefaultXMLManager().convertObject("cafe", byte[].class, Constants.BASE_64_BINARY_QNAME);
 
         JAXBElement jb1= new JAXBElement(new QName("e1"), byte[].class, bytes);
         f.e1OrE2.add(jb1);
@@ -63,8 +63,8 @@
         Foo f = new Foo();
         f.e1OrE2 = new ArrayList<JAXBElement<byte[]>>();
 
-        byte[] bytes = (byte[]) XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
-        byte[] bytes2 = (byte[]) XMLConversionManager.getDefaultXMLManager().convertObject("cafe", byte[].class, Constants.BASE_64_BINARY_QNAME);
+        byte[] bytes = XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
+        byte[] bytes2 = XMLConversionManager.getDefaultXMLManager().convertObject("cafe", byte[].class, Constants.BASE_64_BINARY_QNAME);
 
         JAXBElement jb1= new JAXBElement(new QName("e1"), byte[].class, bytes);
         JAXBElement jb2= new JAXBElement(new QName("e2"), byte[].class, bytes2);
@@ -80,7 +80,7 @@
         Binder binder = jaxbContext.createBinder();
         Document doc = parser.parse(ClassLoader.getSystemResourceAsStream(XML_RESOURCE));
         Foo unmarshalled =  (Foo)binder.unmarshal(doc);
-        byte[] bytes = (byte[]) XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
+        byte[] bytes = XMLConversionManager.getDefaultXMLManager().convertObject("001122", byte[].class);
         JAXBElement jbe= new JAXBElement(new QName("e1"), byte[].class, bytes);
         unmarshalled.e1OrE2.add(jbe);
         binder.updateXML(unmarshalled);
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/binarydatacollection/EmployeeWithByteArrayObject.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/binarydatacollection/EmployeeWithByteArrayObject.java
index a81ebd5..a93ce97 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/binarydatacollection/EmployeeWithByteArrayObject.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/binarydatacollection/EmployeeWithByteArrayObject.java
@@ -80,7 +80,7 @@
                 if (next != null) {
                     returnString += next + " ";
                     if(next instanceof Byte[]) {
-                        returnString = "\n" + "-->" + new String(Base64.base64Encode(((byte[])ConversionManager.getDefaultManager().convertObject(next, byte[].class))));
+                        returnString = "\n" + "-->" + new String(Base64.base64Encode(ConversionManager.getDefaultManager().convertObject(next, byte[].class)));
                     }
                 } else {
                     returnString += ("null_item" + " ");
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/simpletypes/typetranslator/childelement/Phone.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/simpletypes/typetranslator/childelement/Phone.java
index a5331d2..ad87418 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/simpletypes/typetranslator/childelement/Phone.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/mappings/simpletypes/typetranslator/childelement/Phone.java
@@ -32,7 +32,7 @@
     }
 
     public String toString() {
-        return "Phone(number=" + (Integer) number + ")";
+        return "Phone(number=" + number + ")";
     }
 
     public boolean equals(Object object) {
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/platform/PlatformCreateDocumentTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/platform/PlatformCreateDocumentTestCases.java
index 92a4a6a..e31b828 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/platform/PlatformCreateDocumentTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/platform/PlatformCreateDocumentTestCases.java
@@ -169,8 +169,8 @@
     }
 
     public void testCreateInvalidXMLPlatform() throws Exception {
-        Class originalClass = XMLPlatformFactory.getInstance().getXMLPlatformClass();
-        XMLPlatformFactory.getInstance().setXMLPlatformClass(PlatformCreateDocumentTestCases.class);
+        Class<? extends XMLPlatform> originalClass = XMLPlatformFactory.getInstance().getXMLPlatformClass();
+        XMLPlatformFactory.getInstance().setXMLPlatformClass((Class) PlatformCreateDocumentTestCases.class);
         try {
             XMLPlatform xmlPlatform = XMLPlatformFactory.getInstance().getXMLPlatform();
         } catch (XMLPlatformException e) {
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/BooleanTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/BooleanTestCases.java
index 08e4fed..54012b3 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/BooleanTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/BooleanTestCases.java
@@ -32,12 +32,12 @@
     }
 
     public void testConvertEmptyStringTo_boolean() {
-        boolean test = (Boolean) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, boolean.class);
+        boolean test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, boolean.class);
         assertEquals(false, test);
     }
 
     public void testConvertEmptyStringTo_Boolean() {
-        Boolean test = (Boolean) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Boolean.class);
+        Boolean test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Boolean.class);
         assertEquals(false, test.booleanValue());
     }
 
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DateAndTimeTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DateAndTimeTestCases.java
index ab1d77c..0d4d76b 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DateAndTimeTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DateAndTimeTestCases.java
@@ -137,49 +137,49 @@
 
     public void testUtilDateToUtilDate() {
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_1MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(control, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(control, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_default_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_default_0ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_default_1ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_default_10ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_default_100ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_date_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
@@ -197,7 +197,7 @@
         cal.set(Calendar.MILLISECOND, 1);
         java.util.Date utilDate = cal.getTime();
 
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         boolean passed = control.equals(test) || zControl.equals(test);
         assertTrue(passed);
     }
@@ -219,154 +219,154 @@
 
         java.util.Date utilDate = cal.getTime();
 
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_date() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_dateTime_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_dateTime_0ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_dateTime_1ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_dateTime_10ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_dateTime_100ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_time_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_time_0ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_time_1ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_1MS);
         String control = "07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_time_10ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_time_100ms() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_100MS);
         String control = "07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gDay_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gDay() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "---21";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gMonth_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gMonth() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "--02";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gMonthDay_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gMonthDay() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "--02-21";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gYear_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gYear() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gYearMonth_null() {
         java.util.Date utilDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testUtilDateToString_gYearMonth() {
         java.util.Date utilDate = new java.util.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -374,8 +374,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.util.Date utilDate = (java.util.Date) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
-        String testString = (String) xmlConversionManager.convertObject(utilDate, String.class);
+        java.util.Date utilDate = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
+        String testString = xmlConversionManager.convertObject(utilDate, String.class);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -383,8 +383,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.util.Date utilDate = (java.util.Date) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
-        String testString = (String) xmlConversionManager.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date utilDate = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
+        String testString = xmlConversionManager.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -392,43 +392,43 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.util.Date utilDate = (java.util.Date) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
-        String testString = (String) xmlConversionManager.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        java.util.Date utilDate = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.util.Date.class);
+        String testString = xmlConversionManager.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals("03:00:00-04:00", testString);
     }
 
     public void testStringToUtilDate_default_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_default_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_0MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_default_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_1MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_default_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_10MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_default_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_100MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class);
         assertEquals(control, test);
     }
 
@@ -490,21 +490,21 @@
     public void testStringToUtilDate_date_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_date() {
         String string = " \t 1975-02-21 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_date_negative1() {
         String string = "1975-02-21T07:47:15";
         java.util.Date control = new java.util.Date(CONTROL_DATE);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
@@ -544,42 +544,42 @@
     public void testStringToUtilDate_dateTime_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_dateTime() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_0MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_dateTime_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_0MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_dateTime_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_1MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_dateTime_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_10MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_dateTime_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.util.Date control = new java.util.Date(CONTROL_DATE_TIME_100MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -630,42 +630,42 @@
     public void testStringToUtilDate_time_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_time() {
         String string = " \t 07:47:15 \t ";
         java.util.Date control = new java.util.Date(CONTROL_TIME_0MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_time_0ms() {
         String string = " \t 07:47:15 \t ";
         java.util.Date control = new java.util.Date(CONTROL_TIME_0MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_time_1ms() {
         String string = " \t 07:47:15.001 \t ";
         java.util.Date control = new java.util.Date(CONTROL_TIME_1MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_time_10ms() {
         String string = " \t 07:47:15.01 \t ";
         java.util.Date control = new java.util.Date(CONTROL_TIME_10MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_time_100ms() {
         String string = " \t 07:47:15.1 \t ";
         java.util.Date control = new java.util.Date(CONTROL_TIME_100MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -714,14 +714,14 @@
     public void testStringToUtilDate_gDay_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_DAY_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_gDay() {
         String string = " \t ---21 \t ";
         java.util.Date control = new java.util.Date(CONTROL_G_DAY);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_DAY_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -739,14 +739,14 @@
     public void testStringToUtilDate_gMonth_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_gMonth() {
         String string = " \t --02 \t ";
         java.util.Date control = new java.util.Date(CONTROL_G_MONTH);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -764,14 +764,14 @@
     public void testStringToUtilDate_gMonthDay_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_gMonthDay() {
         String string = " \t --02-21 \t ";
         java.util.Date control = new java.util.Date(CONTROL_G_MONTH_DAY);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -789,14 +789,14 @@
     public void testStringToUtilDate_gYear_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_gYear() {
         String string = " \t 1975 \t ";
         java.util.Date control = new java.util.Date(CONTROL_G_YEAR);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -814,14 +814,14 @@
     public void testStringToUtilDate_gYearMonth_null() {
         String string = null;
         java.util.Date control = null;
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToUtilDate_gYearMonth() {
         String string = " \t 1975-02 \t ";
         java.util.Date control = new java.sql.Date(CONTROL_G_YEAR_MONTH);
-        java.util.Date test = (java.util.Date)xcm.convertObject(string, java.util.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.util.Date test = xcm.convertObject(string, java.util.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -839,175 +839,175 @@
     // -------------------------------------------------------------------------
     public void testSqlDateToSqlDate() {
         java.sql.Date control = new java.sql.Date(CONTROL_DATE);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(control, java.sql.Date.class);
+        java.sql.Date test = xcm.convertObject(control, java.sql.Date.class);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_default_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class);
+        String test = xcm.convertObject(sqlDate, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_default() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(sqlDate, String.class);
+        String test = xcm.convertObject(sqlDate, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_date_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_date() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_dateTime_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_dateTime_0ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_dateTime_1ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_dateTime_10ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_dateTime_100ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_time_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_time_0ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_time_1ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_1MS);
         String control = "07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_time_10ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_time_100ms() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_100MS);
         String control = "07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gDay_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gDay() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "---21";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gMonth_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gMonth() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "--02";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gMonthDay_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gMonthDay() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "--02-21";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gYear_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gYear() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gYearMonth_null() {
         java.sql.Date sqlDate = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlDateToString_gYearMonth() {
         java.sql.Date sqlDate = new java.sql.Date(CONTROL_DATE_TIME_0MS);
         String control = "1975-02";
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -1015,8 +1015,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Date sqlDate = (java.sql.Date) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date sqlDate = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -1024,29 +1024,29 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Date sqlDate = (java.sql.Date) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
+        java.sql.Date sqlDate = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals("03:00:00-04:00", testString);
     }
 
     public void testStringToSqlDate_default_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_default() {
         String string = " \t 1975-02-21 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_default_negative1() {
         String string = "1975-02-21T07:47:15";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class);
         assertEquals(control, test);
     }
 
@@ -1075,21 +1075,21 @@
     public void testStringToSqlDate_date_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_date() {
         String string = " \t 1975-02-21 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_date_negative1() {
         String string = "1975-02-21T07:47:15";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class);
         assertEquals(control, test);
     }
 
@@ -1118,42 +1118,42 @@
     public void testStringToSqlDate_dateTime_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_dateTime() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_dateTime_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_dateTime_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_dateTime_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_dateTime_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_DATE_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -1204,42 +1204,42 @@
     public void testStringToSqlDate_time_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_time() {
         String string = " \t 07:47:15 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_time_0ms() {
         String string = " \t 07:47:15 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_time_1ms() {
         String string = " \t 07:47:15.001 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_time_10ms() {
         String string = " \t 07:47:15.01 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_time_100ms() {
         String string = " \t 07:47:15.1 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_TIME_0MS);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -1279,14 +1279,14 @@
     public void testStringToSqlDate_gDay_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_gDay() {
         String string = " \t ---21 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_G_DAY);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -1304,14 +1304,14 @@
     public void testStringToSqlDate_gMonth_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_gMonth() {
         String string = " \t --02 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_G_MONTH);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -1329,14 +1329,14 @@
     public void testStringToSqlDate_gMonthDay_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_gMonthDay() {
         String string = " \t --02-21 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_G_MONTH_DAY);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -1354,14 +1354,14 @@
     public void testStringToSqlDate_gYear_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_gYear() {
         String string = " \t 1975 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_G_YEAR);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -1379,14 +1379,14 @@
     public void testStringToSqlDate_gYearMonth_null() {
         String string = null;
         java.sql.Date control = null;
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlDate_gYearMonth() {
         String string = " \t 1975-02 \t ";
         java.sql.Date control = new java.sql.Date(CONTROL_G_YEAR_MONTH);
-        java.sql.Date test = (java.sql.Date)xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Date test = xcm.convertObject(string, java.sql.Date.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -1404,21 +1404,21 @@
     // -------------------------------------------------------------------------
     public void testSqlTimeToSqlTime() {
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(control, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(control, Time.class);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_default_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_default() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         boolean passed = control.equals(test) || control.equals(test.replace("+01:00", "Z"));
         assertTrue(passed);
     }
@@ -1426,14 +1426,14 @@
     public void testSqlTimeToString_default_0ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_default_1ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_TIME_1MS);
         String control = "07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
 
@@ -1449,182 +1449,182 @@
     public void testSqlTimeToString_default_10ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_default_100ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_TIME_100MS);
         String control = "07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_date_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_date() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime_0ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime_1ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime_10ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_dateTime_100ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time_0ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time_1ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_1MS);
         String control = "07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time_10ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_time_100ms() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_100MS);
         String control = "07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gDay_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gDay() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "---21";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gMonth_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gMonth() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "--02";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gMonthDay_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gMonthDay() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "--02-21";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gYear_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gYear() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "1975";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gYearMonth_null() {
         java.sql.Time sqlTime = null;
         String control = null;
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testSqlTimeToString_gYearMonth() {
         java.sql.Time sqlTime = new java.sql.Time(CONTROL_DATE_TIME_0MS);
         String control = "1975-02";
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -1632,8 +1632,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Time sqlTime = (java.sql.Time) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTime, String.class);
+        java.sql.Time sqlTime = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Time.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTime, String.class);
         assertEquals("03:00:00-04:00", testString);
     }
 
@@ -1641,8 +1641,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Time sqlTime = (java.sql.Time) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time sqlTime = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Time.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -1650,50 +1650,50 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Time sqlTime = (java.sql.Time) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        java.sql.Time sqlTime = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Time.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals("03:00:00-04:00", testString);
     }
 
     public void testStringToSqlTime_default_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_default() {
         String string = " \t 07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_default_0ms() {
         String string = " \t 07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_default_1ms() {
         String string = " \t 07:47:15.001 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_default_10ms() {
         String string = " \t 07:47:15.01 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_default_100ms() {
         String string = " \t 07:47:15.1 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(string, Time.class);
         assertEquals(control, test);
     }
 
@@ -1733,28 +1733,28 @@
     public void testStringToSqlTime_date_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_date() {
         String string = " \t 1975-02-21 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_date_negative1() {
         String string = "1975-02-21T07:47:15";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_date_negative2() {
         try {
             String string = "07:47:15";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_FORMAT);
             return;
@@ -1765,7 +1765,7 @@
     public void testStringToSqlTime_date_negative3() {
         try {
             String string = "1975$02$21";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_FORMAT);
             return;
@@ -1776,49 +1776,49 @@
     public void testStringToSqlTime_dateTime_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_DATE_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_dateTime_negative1() {
         try {
             String string = "1975-02-21";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_TIME_FORMAT);
             return;
@@ -1829,7 +1829,7 @@
     public void testStringToSqlTime_dateTime_negative2() {
         try {
             String string = "07:47:15";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_TIME_FORMAT);
         }
@@ -1838,7 +1838,7 @@
     public void testStringToSqlTime_dateTime_negative3() {
         try {
             String string = "1975$02$21T07$47$15";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_TIME_FORMAT);
             return;
@@ -1849,7 +1849,7 @@
     public void testStringToSqlTime_dateTime_negative4() {
         try {
             String string = "1975-02-21$07:47:15";
-            Time test = (Time)xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
+            Time test = xcm.convertObject(string, Time.class, XMLConstants.DATE_TIME_QNAME);
         } catch (ConversionException e) {
             assertTrue(WRONG_EXCEPTION_THROWN, e.getErrorCode() == ConversionException.INCORRECT_DATE_TIME_FORMAT);
             return;
@@ -1860,42 +1860,42 @@
     public void testStringToSqlTime_time_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_time() {
         String string = " \t 07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_time_0ms() {
         String string = " \t 07:47:15 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_time_1ms() {
         String string = " \t 07:47:15.001 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_time_10ms() {
         String string = " \t 07:47:15.01 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_time_100ms() {
         String string = " \t 07:47:15.1 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_TIME_0MS);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.TIME_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -1933,14 +1933,14 @@
     public void testStringToSqlTime_gDay_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_gDay() {
         String string = " \t ---21 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_G_DAY);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -1958,14 +1958,14 @@
     public void testStringToSqlTime_gMonth_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_gMonth() {
         String string = " \t --02 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_G_MONTH);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -1983,14 +1983,14 @@
     public void testStringToSqlTime_gMonthDay_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_gMonthDay() {
         String string = " \t --02-21 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_G_MONTH_DAY);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -2008,14 +2008,14 @@
     public void testStringToSqlTime_gYear_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_gYear() {
         String string = " \t 1975 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_G_YEAR);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -2033,14 +2033,14 @@
     public void testStringToSqlTime_gYearMonth_null() {
         String string = null;
         java.sql.Time control = null;
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToSqlTime_gYearMonth() {
         String string = " \t 1975-02 \t ";
         java.sql.Time control = new java.sql.Time(CONTROL_G_YEAR_MONTH);
-        java.sql.Time test = (java.sql.Time)xcm.convertObject(string, java.sql.Time.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Time test = xcm.convertObject(string, Time.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -2058,42 +2058,42 @@
     // -------------------------------------------------------------------------
     public void testTimestampToTimestamp() {
         Timestamp control = new Timestamp(CONTROL_DATE_TIME_1MS);
-        Timestamp test = (Timestamp)xcm.convertObject(control, Timestamp.class);
+        Timestamp test = xcm.convertObject(control, Timestamp.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_default_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_default_0ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_default_1ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_default_10ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_default_100ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
@@ -2101,56 +2101,56 @@
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         timestamp.setNanos(123456789);
         String control = "1975-02-21T07:47:15.123456789"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class);
+        String test = xcm.convertObject(timestamp, String.class);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_date_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_date() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_dateTime_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_dateTime_0ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21T07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_dateTime_1ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_dateTime_10ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_10MS);
         String control = "1975-02-21T07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_dateTime_100ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2158,7 +2158,7 @@
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         timestamp.setNanos(123456789);
         String control = "1975-02-21T07:47:15.123456789"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2182,7 +2182,7 @@
         java.sql.Timestamp timestamp = new java.sql.Timestamp(utilDate.getTime());
         timestamp.setNanos(123456789);
 
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2202,42 +2202,42 @@
         java.sql.Timestamp timestamp = new java.sql.Timestamp(utilDate.getTime());
         timestamp.setNanos(123456789);
 
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_time_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_time_0ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "07:47:15"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_time_1ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_1MS);
         String control = "07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_time_10ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_time_100ms() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_100MS);
         String control = "07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2245,77 +2245,77 @@
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         timestamp.setNanos(123456789);
         String control = "07:47:15.123456789"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gDay_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gDay() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "---21";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gMonth_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gMonth() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "--02";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gMonthDay_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gMonthDay() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "--02-21";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gYear_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gYear() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "1975";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gYearMonth_null() {
         java.sql.Timestamp timestamp = null;
         String control = null;
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testTimestampToString_gYearMonth() {
         java.sql.Timestamp timestamp = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         String control = "1975-02";
-        String test = (String)xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(timestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -2323,8 +2323,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Timestamp sqlTimestamp = (java.sql.Timestamp) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTimestamp, String.class);
+        java.sql.Timestamp sqlTimestamp = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTimestamp, String.class);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -2332,8 +2332,8 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Timestamp sqlTimestamp = (java.sql.Timestamp) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp sqlTimestamp = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals("2003-08-29T03:00:00-04:00", testString);
     }
 
@@ -2341,43 +2341,43 @@
         XMLConversionManager xmlConversionManager = (XMLConversionManager) XMLConversionManager.getDefaultXMLManager().clone();
         xmlConversionManager.setTimeZone(TimeZone.getTimeZone(CONTROL_DST_TIME_ZONE));
         xmlConversionManager.setTimeZoneQualified(true);
-        java.sql.Timestamp sqlTimestamp = (java.sql.Timestamp) xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
-        String testString = (String) xmlConversionManager.convertObject(sqlTimestamp, String.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp sqlTimestamp = xmlConversionManager.convertObject(CONTROL_DST_INPUT_DATE_TIME, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        String testString = xmlConversionManager.convertObject(sqlTimestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals("03:00:00-04:00", testString);
     }
 
     public void testStringToTimestamp_default_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_default_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_default_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_1MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_default_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_10MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_default_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_100MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
@@ -2385,7 +2385,7 @@
         String string = " \t 1975-02-21T07:47:15.123456789 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         control.setNanos(123456789);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class);
         assertEquals(control, test);
     }
 
@@ -2447,21 +2447,21 @@
     public void testStringToTimestamp_date_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_date() {
         String string = " \t 1975-02-21 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_date_negative1() {
         String string = "1975-02-21T07:47:15";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
@@ -2490,42 +2490,42 @@
     public void testStringToTimestamp_dateTime_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_dateTime() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_dateTime_0ms() {
         String string = " \t 1975-02-21T07:47:15 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_dateTime_1ms() {
         String string = " \t 1975-02-21T07:47:15.001 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_1MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_dateTime_10ms() {
         String string = " \t 1975-02-21T07:47:15.01 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_10MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_dateTime_100ms() {
         String string = " \t 1975-02-21T07:47:15.1 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_100MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2533,7 +2533,7 @@
         String string = " \t 1975-02-21T07:47:15.123456789 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_DATE_TIME_0MS);
         control.setNanos(123456789);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2582,42 +2582,42 @@
     public void testStringToTimestamp_time_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time() {
         String string = " \t 07:47:15 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_0MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time_0ms() {
         String string = " \t 07:47:15 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_0MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time_1ms() {
         String string = " \t 07:47:15.001 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_1MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time_10ms() {
         String string = " \t 07:47:15.01 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_10MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time_100ms() {
         String string = " \t 07:47:15.1 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_100MS);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2625,7 +2625,7 @@
         String string = " \t 07:47:15.123456789 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_TIME_0MS);
         control.setNanos(123456789);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);        assertEquals(control, test);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.TIME_QNAME);        assertEquals(control, test);
     }
 
     public void testStringToTimestamp_time_negative1() {
@@ -2662,14 +2662,14 @@
     public void testStringToTimestamp_gDay_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_gDay() {
         String string = " \t ---21 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_G_DAY);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_DAY_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -2687,14 +2687,14 @@
     public void testStringToTimestamp_gMonth_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_gMonth() {
         String string = " \t --02 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_G_MONTH);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_MONTH_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -2712,14 +2712,14 @@
     public void testStringToTimestamp_gMonthDay_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_gMonthDay() {
         String string = " \t --02-21 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_G_MONTH_DAY);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -2737,14 +2737,14 @@
     public void testStringToTimestamp_gYear_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_gYear() {
         String string = " \t 1975 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_G_YEAR);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_YEAR_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -2762,14 +2762,14 @@
     public void testStringToTimestamp_gYearMonth_null() {
         String string = null;
         java.sql.Timestamp control = null;
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToTimestamp_gYearMonth() {
         String string = " \t 1975-02 \t ";
         java.sql.Timestamp control = new java.sql.Timestamp(CONTROL_G_YEAR_MONTH);
-        java.sql.Timestamp test = (java.sql.Timestamp)xcm.convertObject(string, java.sql.Timestamp.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(string, Timestamp.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -2787,14 +2787,14 @@
     // -------------------------------------------------------------------------
     public void testCalendarToCalendar() {
         Calendar control = Calendar.getInstance();
-        Calendar test = (Calendar)xcm.convertObject(control, Calendar.class);
+        Calendar test = xcm.convertObject(control, Calendar.class);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_default_date_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2805,14 +2805,14 @@
         calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
         calendar.set(Calendar.DATE, 21);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_default_dateTime_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2822,7 +2822,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2832,7 +2832,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_1MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.001";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2842,7 +2842,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_10MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.01";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2852,14 +2852,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_100MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.1";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_default_time_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2871,7 +2871,7 @@
         calendar.set(Calendar.SECOND, 15);
         calendar.set(Calendar.MILLISECOND, 0);
         String control = "07:47:15";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2883,7 +2883,7 @@
         calendar.set(Calendar.SECOND, 15);
         calendar.set(Calendar.MILLISECOND, 1);
         String control = "07:47:15.001";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2895,7 +2895,7 @@
         calendar.set(Calendar.SECOND, 15);
         calendar.set(Calendar.MILLISECOND, 10);
         String control = "07:47:15.01";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
@@ -2907,14 +2907,14 @@
         calendar.set(Calendar.SECOND, 15);
         calendar.set(Calendar.MILLISECOND, 100);
         String control = "07:47:15.1";
-        String test = (String)xcm.convertObject(calendar, String.class);
+        String test = xcm.convertObject(calendar, String.class);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_date_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
@@ -2924,14 +2924,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_dateTime_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2941,7 +2941,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2951,7 +2951,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_1MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.001";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2961,7 +2961,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_10MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.01";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2971,14 +2971,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_100MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02-21T07:47:15.1";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_time_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2988,7 +2988,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "07:47:15";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -2998,7 +2998,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_1MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "07:47:15.001";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -3008,7 +3008,7 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_10MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "07:47:15.01";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -3018,14 +3018,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_100MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "07:47:15.1";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_gDay_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -3035,14 +3035,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "---21";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_gMonth_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -3052,14 +3052,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "--02";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_gMonthDay_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -3069,14 +3069,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "--02-21";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_gYear_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -3086,14 +3086,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
     public void testCalendarToString_gYearMonth_null() {
         Calendar calendar = null;
         String control = null;
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -3103,14 +3103,14 @@
         calendar.setTimeInMillis(CONTROL_DATE_TIME_0MS);
         calendar.clear(Calendar.ZONE_OFFSET);
         String control = "1975-02";
-        String test = (String)xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(calendar, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToCalendar_default_dateTime_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        Calendar test = xcm.convertObject(string, Calendar.class);
         assertEquals(control, test);
     }
 
@@ -3119,7 +3119,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3128,7 +3128,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3137,7 +3137,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_1MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3146,7 +3146,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_10MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3155,14 +3155,14 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_100MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
     public void testStringToCalendar_default_date_null() {
         String string = null;
         Calendar control = null;
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertEquals(control, test);
     }
 
@@ -3171,14 +3171,14 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
     public void testStringToCalendar_default_time_null() {
         String string = null;
         Calendar control = null;
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertEquals(control, test);
     }
 
@@ -3187,7 +3187,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3196,7 +3196,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3205,7 +3205,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_1MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3214,7 +3214,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_10MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3223,14 +3223,14 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_100MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
     public void testStringToCalendar_date_null() {
         String string = null;
         Calendar control = null;
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
@@ -3239,7 +3239,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3277,7 +3277,7 @@
     public void testStringToCalendar_dateTime_null() {
         String string = null;
         Calendar control = null;
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -3286,7 +3286,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3295,7 +3295,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3304,7 +3304,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_1MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3313,7 +3313,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_10MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3322,7 +3322,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_DATE_TIME_100MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.DATE_TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3371,7 +3371,7 @@
     public void testStringToCalendar_time_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -3380,7 +3380,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3389,7 +3389,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_0MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3398,7 +3398,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_1MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3407,7 +3407,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_10MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3416,7 +3416,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_TIME_100MS);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.TIME_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.TIME_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3454,7 +3454,7 @@
     public void testStringToCalendar_gDay_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_DAY_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -3463,7 +3463,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_G_DAY);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_DAY_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_DAY_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3481,7 +3481,7 @@
     public void testStringToCalendar_gMonth_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_MONTH_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -3490,7 +3490,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_G_MONTH);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_MONTH_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_MONTH_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3508,7 +3508,7 @@
     public void testStringToCalendar_gMonthDay_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_MONTH_DAY_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals(control, test);
     }
 
@@ -3517,7 +3517,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_G_MONTH_DAY);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_MONTH_DAY_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3535,7 +3535,7 @@
     public void testStringToCalendar_gYear_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_YEAR_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
 
@@ -3544,7 +3544,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_G_YEAR);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_YEAR_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_YEAR_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3562,7 +3562,7 @@
     public void testStringToCalendar_gYearMonth_null() {
         String string = null;
         Calendar control = null;
-        Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals(control, test);
     }
 
@@ -3571,7 +3571,7 @@
         Calendar control = Calendar.getInstance();
         control.clear();
         control.setTimeInMillis(CONTROL_G_YEAR_MONTH);
-        java.util.Calendar test = (java.util.Calendar)xcm.convertObject(string, java.util.Calendar.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        java.util.Calendar test = xcm.convertObject(string, Calendar.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertTrue(control.getTimeInMillis() == test.getTimeInMillis());
     }
 
@@ -3590,7 +3590,7 @@
         DatatypeFactory factory = DatatypeFactory.newInstance();
 
         XMLGregorianCalendar xgc = factory.newXMLGregorianCalendar("2005-11-05");
-        String result = (String)xcm.convertObject(xgc, String.class, XMLConstants.DATE_QNAME);
+        String result = xcm.convertObject(xgc, String.class, XMLConstants.DATE_QNAME);
         assertEquals("2005-11-05", result);
     }
 
@@ -3610,11 +3610,11 @@
 
         String xml1 = xcm.convertObject(xgc1, String.class).toString();
 
-        Calendar c = (Calendar) xcm.convertObject(xml1, Calendar.class);
+        Calendar c = xcm.convertObject(xml1, Calendar.class);
 
         String xml2 = xcm.convertObject(c, String.class).toString();
 
-        XMLGregorianCalendar xgc2 = (XMLGregorianCalendar) xcm.convertObject(xml2, XMLGregorianCalendar.class);
+        XMLGregorianCalendar xgc2 = xcm.convertObject(xml2, XMLGregorianCalendar.class);
 
         assertTrue(xgc1.compare(xgc2) == DatatypeConstants.EQUAL);
     }
@@ -3628,35 +3628,35 @@
 
     public void testExtendedUtilDateToUtilDate() {
         java.util.Date control = new ExtendedUtilDate(CONTROL_DATE_TIME_1MS);
-        java.util.Date test = (java.util.Date)xcm.convertObject(control, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(control, java.util.Date.class);
         assertEquals(control, test);
     }
 
     public void testExtendedUtilDateToString_default_100ms() {
         java.util.Date utilDate = new ExtendedUtilDate(CONTROL_DATE_TIME_100MS);
         String control = "1975-02-21T07:47:15.1"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
 
     public void testExtendedUtilDateToString_date() {
         java.util.Date utilDate = new ExtendedUtilDate(CONTROL_DATE_TIME_0MS);
         String control = "1975-02-21";
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
 
     public void testExtendedUtilDateToString_time_10ms() {
         java.util.Date utilDate = new ExtendedUtilDate(CONTROL_DATE_TIME_10MS);
         String control = "07:47:15.01"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
 
     public void testExtendedUtilDateToString_dateTime_1ms() {
         java.util.Date utilDate = new ExtendedUtilDate(CONTROL_DATE_TIME_1MS);
         String control = "1975-02-21T07:47:15.001"+TIMEZONE_OFFSET;
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
 
@@ -3670,14 +3670,14 @@
     public void testPostADDateToSQLDate() {
         String control = "0001-01-01";
         java.sql.Date sqlDate = java.sql.Date.valueOf(control);
-        String test = (String)xcm.convertObject(sqlDate, String.class);
+        String test = xcm.convertObject(sqlDate, String.class);
         assertEquals(control, test);
     }
     
     public void testPostADDateToSQLDate_Date() {
         String control = "0001-01-01";
         java.sql.Date sqlDate = java.sql.Date.valueOf(control);
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
     
@@ -3685,7 +3685,7 @@
         String control = "0001-01-01T00:00:00" + TIMEZONE_OFFSET;
         String input = "0001-01-01";
         java.sql.Date sqlDate = java.sql.Date.valueOf(input);
-        String test = (String)xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
     
@@ -3694,7 +3694,7 @@
         String control = "0001-01-01T01:01:01" + TIMEZONE_OFFSET;
         String input = "0001-01-01 01:01:01";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class);
+        String test = xcm.convertObject(sqlTimestamp, String.class);
         assertEquals(control, test);
     }
     
@@ -3702,7 +3702,7 @@
         String control = "0001-01-01";
         String input = "0001-01-01 01:01:01";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
     
@@ -3710,7 +3710,7 @@
         String control = "0001-01-01T01:01:01.001" + TIMEZONE_OFFSET;
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
     
@@ -3718,7 +3718,7 @@
         String control = "01:01:01.001" + TIMEZONE_OFFSET;
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
     
@@ -3726,7 +3726,7 @@
         String control = "01"; // first day of month
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_DAY_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_DAY_QNAME);
         assertTrue(test.endsWith(control));
     }
     
@@ -3734,7 +3734,7 @@
         String control = "01"; // first month of the year
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_MONTH_QNAME);
         assertTrue(test.endsWith(control));
     }
     
@@ -3742,7 +3742,7 @@
         String control = "01-01"; // first month, first day
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertTrue(test.endsWith(control));
     }
     
@@ -3750,7 +3750,7 @@
         String control = "01-01"; // first month, first day
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertTrue(test.endsWith(control));
     }
     
@@ -3758,7 +3758,7 @@
         String control = "0001"; // first year (4 digit)
         String input = "0001-01-01 01:01:01.001";
         java.sql.Timestamp sqlTimestamp = java.sql.Timestamp.valueOf(input);
-        String test = (String)xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_YEAR_QNAME);
+        String test = xcm.convertObject(sqlTimestamp, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals(control, test);
     }
     
@@ -3773,7 +3773,7 @@
         cal.set(Calendar.DAY_OF_MONTH, 1);
         java.util.Date utilDate = cal.getTime();
         
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
     
@@ -3791,7 +3791,7 @@
         cal.set(Calendar.MILLISECOND, 1);
         java.util.Date utilDate = cal.getTime();
         
-        String test = (String)xcm.convertObject(utilDate, String.class);
+        String test = xcm.convertObject(utilDate, String.class);
         assertEquals(control, test);
     }
     
@@ -3805,7 +3805,7 @@
         cal.set(Calendar.DAY_OF_MONTH, 1);
         java.util.Date utilDate = cal.getTime();
         
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
     
@@ -3823,7 +3823,7 @@
         cal.set(Calendar.MILLISECOND, 1);
         java.util.Date utilDate = cal.getTime();
         
-        String test = (String)xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(utilDate, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
     
@@ -3834,7 +3834,7 @@
         
         java.sql.Time sqlTime = java.sql.Time.valueOf(input);
         
-        String test = (String)xcm.convertObject(sqlTime, String.class);
+        String test = xcm.convertObject(sqlTime, String.class);
         assertEquals(control, test);
     }
     
@@ -3844,7 +3844,7 @@
         
         java.sql.Time sqlTime = java.sql.Time.valueOf(input);
         
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.TIME_QNAME);
         assertEquals(control, test);
     }
     
@@ -3863,7 +3863,7 @@
         
         java.sql.Time sqlTime = new java.sql.Time(cal.getTimeInMillis());
         
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_QNAME);
         assertEquals(control, test);
     }
     
@@ -3882,21 +3882,21 @@
         
         java.sql.Time sqlTime = new java.sql.Time(cal.getTimeInMillis());
         
-        String test = (String)xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
+        String test = xcm.convertObject(sqlTime, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals(control, test);
     }
     
     // String -> java.sql.Date tests
     public void testPostADDateStringToSQLDate() {
         String control = "0001-01-01";
-        java.sql.Date sqlDate = (java.sql.Date) xcm.convertObject(control, java.sql.Date.class);
+        java.sql.Date sqlDate = xcm.convertObject(control, java.sql.Date.class);
         String test = sqlDate.toString();
         assertEquals(control, test);
     }
     
     public void testPostADDateStringToSQLDate_Date() {
         String control = "0001-01-01";
-        java.sql.Date sqlDate = (java.sql.Date) xcm.convertObject(control, java.sql.Date.class, XMLConstants.DATE_QNAME);
+        java.sql.Date sqlDate = xcm.convertObject(control, java.sql.Date.class, XMLConstants.DATE_QNAME);
         String test = sqlDate.toString();
         assertEquals(control, test);
     }
@@ -3904,7 +3904,7 @@
     // String -> java.util.Date tests
     public void testPostADDateStringToUtilDate() {
         String input = "0001-01-01T01:01:01.001" + TIMEZONE_OFFSET;
-        java.util.Date test = (java.util.Date) xcm.convertObject(input, java.util.Date.class);
+        java.util.Date test = xcm.convertObject(input, java.util.Date.class);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -3922,7 +3922,7 @@
     
     public void testPostADDateStringToUtilDate_Date() {
         String input = "0001-01-01T01:01:01.001" + TIMEZONE_OFFSET;
-        java.util.Date test = (java.util.Date) xcm.convertObject(input, java.util.Date.class, XMLConstants.DATE_QNAME);
+        java.util.Date test = xcm.convertObject(input, java.util.Date.class, XMLConstants.DATE_QNAME);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -3936,7 +3936,7 @@
     
     public void testPostADDateStringToUtilDate_DateTime() {
         String input = "0001-01-01T01:01:01.001" + TIMEZONE_OFFSET;
-        java.util.Date test = (java.util.Date) xcm.convertObject(input, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
+        java.util.Date test = xcm.convertObject(input, java.util.Date.class, XMLConstants.DATE_TIME_QNAME);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -3955,7 +3955,7 @@
     // String -> java.sql.Timestamp tests
     public void testPostADDateStringToSqlTimestamp() {
         String input = "0001-01-01T01:01:01.001";
-        java.sql.Timestamp test = (java.sql.Timestamp) xcm.convertObject(input, java.sql.Timestamp.class);
+        java.sql.Timestamp test = xcm.convertObject(input, Timestamp.class);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -3973,7 +3973,7 @@
     
     public void testPostADDateStringToSqlTimestamp_DateTime() {
         String input = "0001-01-01T01:01:01.001";
-        java.sql.Timestamp test = (java.sql.Timestamp) xcm.convertObject(input, java.sql.Timestamp.class, XMLConstants.DATE_TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(input, Timestamp.class, XMLConstants.DATE_TIME_QNAME);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -3991,7 +3991,7 @@
     
     public void testPostADDateStringToSqlTimestamp_Date() {
         String input = "0001-01-01";
-        java.sql.Timestamp test = (java.sql.Timestamp) xcm.convertObject(input, java.sql.Timestamp.class, XMLConstants.DATE_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(input, Timestamp.class, XMLConstants.DATE_QNAME);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -4005,7 +4005,7 @@
     
     public void testPostADDateStringToSqlTimestamp_Time() {
         String input = "01:01:01.001";
-        java.sql.Timestamp test = (java.sql.Timestamp) xcm.convertObject(input, java.sql.Timestamp.class, XMLConstants.TIME_QNAME);
+        java.sql.Timestamp test = xcm.convertObject(input, Timestamp.class, XMLConstants.TIME_QNAME);
         
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -4021,7 +4021,7 @@
     // String -> java.sql.Time tests
     public void testPostADDateStringToSqlTime() {
         String input = "01:01:01";
-        java.sql.Time test = (java.sql.Time) xcm.convertObject(input, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(input, Time.class);
         java.sql.Time control = java.sql.Time.valueOf(input);
         
         assertEquals(control, test);
@@ -4029,7 +4029,7 @@
     
     public void testPostADDateStringToSqlTimeZeroed() {
         String input = "00:00:00";
-        java.sql.Time test = (java.sql.Time) xcm.convertObject(input, java.sql.Time.class);
+        java.sql.Time test = xcm.convertObject(input, Time.class);
         java.sql.Time control = java.sql.Time.valueOf(input);
         
         assertEquals(control, test);
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DoubleToBigDecimalTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DoubleToBigDecimalTestCases.java
index a6822dd..338d9c4 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DoubleToBigDecimalTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/DoubleToBigDecimalTestCases.java
@@ -34,7 +34,7 @@
     public void testConvertDoubleToBigDecimal1() {
         String controlString = "1.1";
         Double controlDouble = Double.valueOf(controlString);
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals(controlString, testString);
     }
@@ -42,7 +42,7 @@
     public void testConvertDoubleToBigDecimal2a() {
         String controlString = "1";
         Double controlDouble = 1.0;
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals(controlString, testString);
     }
@@ -50,7 +50,7 @@
     public void testConvertDoubleToBigDecimal2b() {
         String controlString = "1";
         Double controlDouble = 1.0;
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals(controlString, testString);
     }
@@ -58,7 +58,7 @@
     public void testConvertDoubleToBigDecimal3a() {
         String controlString = "1.0E-10";
         Double controlDouble = Double.valueOf(controlString);
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals(controlString, testString);
     }
@@ -66,7 +66,7 @@
     public void testConvertDoubleToBigDecimal3b() {
         String controlString = "0.00000000010";
         Double controlDouble = Double.valueOf(controlString);
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals("1.0E-10", testString);
     }
@@ -74,7 +74,7 @@
     public void testConvertDoubleToBigDecimal4a() {
         String controlString = "1000000000";
         Double controlDouble = 1000000000.0;
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals("1.0E+9", testString);
     }
@@ -82,7 +82,7 @@
     public void testConvertDoubleToBigDecimal4b() {
         String controlString = "1000000000";
         Double controlDouble = 1000000000.0;
-        BigDecimal testBigDecimal = (BigDecimal) xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
+        BigDecimal testBigDecimal = xmlConversionManager.convertObject(controlDouble, BigDecimal.class);
         String testString = String.valueOf(testBigDecimal);
         assertEquals("1.0E+9", testString);
     }
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/ListTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/ListTestCases.java
index 3bae042..fe24ea3 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/ListTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/ListTestCases.java
@@ -44,7 +44,7 @@
         list.add(CONTROL_ITEM_1);
         list.add(CONTROL_ITEM_2);
         String control = CONTROL_STRING;
-        String test = (String)xcm.convertObject(list, String.class);
+        String test = xcm.convertObject(list, String.class);
         assertEquals(control, test);
     }
 
@@ -53,7 +53,7 @@
         list.add(CONTROL_ITEM_1);
         list.add(CONTROL_ITEM_2);
         String control = CONTROL_STRING;
-        String test = (String)xcm.convertObject(list, String.class, XMLConstants.STRING_QNAME);
+        String test = xcm.convertObject(list, String.class, XMLConstants.STRING_QNAME);
         assertEquals(control, test);
     }
 
@@ -62,7 +62,7 @@
         List control = new ArrayList(2);
         control.add(CONTROL_ITEM_1);
         control.add(CONTROL_ITEM_2);
-        List test = (List)xcm.convertObject(string, List.class);
+        List test = xcm.convertObject(string, List.class);
         assertEquals(control, test);
     }
 
@@ -71,7 +71,7 @@
         List control = new ArrayList(2);
         control.add(CONTROL_ITEM_1);
         control.add(CONTROL_ITEM_2);
-        List test = (List)xcm.convertObject(string, List.class, XMLConstants.STRING_QNAME);
+        List test = xcm.convertObject(string, List.class, XMLConstants.STRING_QNAME);
         assertEquals(control, test);
     }
 }
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/NumberTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/NumberTestCases.java
index 46293c4..916b2d9 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/NumberTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/NumberTestCases.java
@@ -38,7 +38,7 @@
 
     public void testConvertWithPlusToByte() {
         Byte controlByte = Byte.valueOf("1");
-        Byte testByte = (Byte) xmlConversionManager.convertObject("+1", Byte.class);
+        Byte testByte = xmlConversionManager.convertObject("+1", Byte.class);
         String testString = String.valueOf(testByte);
         String controlString = String.valueOf(controlByte);
         assertEquals(controlString, testString);
@@ -46,7 +46,7 @@
 
     public void testConvertWithPlusToInteger() {
         Integer controlInteger = Integer.valueOf("1");
-        Integer testInteger = (Integer) xmlConversionManager.convertObject("+1", Integer.class);
+        Integer testInteger = xmlConversionManager.convertObject("+1", Integer.class);
         String testString = String.valueOf(testInteger);
         String controlString = String.valueOf(controlInteger);
         assertEquals(controlString, testString);
@@ -54,7 +54,7 @@
 
     public void testConvertWithMinuToByte() {
         Byte controlByte = Byte.valueOf("-1");
-        Byte testByte = (Byte) xmlConversionManager.convertObject("-1", Byte.class);
+        Byte testByte = xmlConversionManager.convertObject("-1", Byte.class);
         String testString = String.valueOf(testByte);
         String controlString = String.valueOf(controlByte);
         assertEquals(controlString, testString);
@@ -62,79 +62,79 @@
 
     public void testConvertWithMinusToInteger() {
         Integer controlInteger = Integer.valueOf("-1");
-        Integer testInteger = (Integer) xmlConversionManager.convertObject("-1", Integer.class);
+        Integer testInteger = xmlConversionManager.convertObject("-1", Integer.class);
         String testString = String.valueOf(testInteger);
         String controlString = String.valueOf(controlInteger);
         assertEquals(controlString, testString);
     }
 
     public void testConvertEmptyStringTo_byte() {
-        byte test = (Byte) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, byte.class);
+        byte test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, byte.class);
         assertEquals(0, test);
     }
 
     public void testConvertEmptyStringTo_Byte() {
-        Byte test = (Byte) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Byte.class);
+        Byte test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Byte.class);
         assertEquals(0, test.byteValue());
     }
 
     public void testConvertEmptyStringTo_double() {
-        double test = (Double) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, double.class);
+        double test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, double.class);
         assertEquals(0.0, test);
     }
 
     public void testConvertEmptyStringTo_Double() {
-        Double test = (Double) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Double.class);
+        Double test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Double.class);
         assertEquals(0.0, test);
     }
 
     public void testConvertEmptyStringTo_float() {
-        float test = (Float) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, float.class);
+        float test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, float.class);
         assertEquals(0.0, test, 0);
     }
 
     public void testConvertEmptyStringTo_Float() {
-        Float test = (Float) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Float.class);
+        Float test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Float.class);
         assertEquals(0.0, test, 0);
     }
 
     public void testConvertEmptyStringTo_int() {
-        int test = (Integer) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, int.class);
+        int test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, int.class);
         assertEquals(0, test);
     }
 
     public void testConvertEmptyStringTo_Integer() {
-        Integer test = (Integer) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Integer.class);
+        Integer test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Integer.class);
         assertEquals(0, test.intValue());
     }
 
     public void testConvertEmptyStringTo_long() {
-        long test = (Long) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, long.class);
+        long test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, long.class);
         assertEquals(0, test);
     }
 
     public void testConvertEmptyStringTo_Long() {
-        Long test = (Long) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Long.class);
+        Long test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Long.class);
         assertEquals(0, test.longValue());
     }
 
     public void testConvertEmptyStringTo_short() {
-        short test = (Short) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, short.class);
+        short test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, short.class);
         assertEquals(0, test);
     }
 
     public void testConvertEmptyStringTo_Short() {
-        Short test = (Short) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Short.class);
+        Short test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, Short.class);
         assertEquals(0, test.shortValue());
     }
 
     public void testConvertEmptyStringTo_BigDecimal() {
-        BigDecimal test = (BigDecimal) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, BigDecimal.class);
+        BigDecimal test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, BigDecimal.class);
         assertNull(test);
     }
 
     public void testConvertEmptyStringTo_BigInteger() {
-        BigInteger test = (BigInteger) xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, BigInteger.class);
+        BigInteger test = xmlConversionManager.convertObject(XMLConstants.EMPTY_STRING, BigInteger.class);
         assertNull(test);
     }
 
@@ -142,7 +142,7 @@
     public void testConvertBigDecimalTo_String() {
         String controlString = "0.000000001";
         BigDecimal controlBigDecimal = new BigDecimal(controlString);
-        String testString = (String)xmlConversionManager.convertObject(controlBigDecimal, String.class);
+        String testString = xmlConversionManager.convertObject(controlBigDecimal, String.class);
         assertEquals(controlString, testString);
     }
 
@@ -150,7 +150,7 @@
     public void testConvertBigDecimalWithQNameTo_String() {
         String controlString = "0.000000001";
         BigDecimal controlBigDecimal = new BigDecimal(controlString);
-        String testString = (String)xmlConversionManager.convertObject(controlBigDecimal, String.class, XMLConstants.STRING_QNAME);
+        String testString = xmlConversionManager.convertObject(controlBigDecimal, String.class, XMLConstants.STRING_QNAME);
         assertEquals(controlString, testString);
     }
 
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/QNameTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/QNameTestCases.java
index a739265..55d052f 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/QNameTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/QNameTestCases.java
@@ -40,77 +40,77 @@
 
     public void testQNameToQName() {
         QName control = CONTROL_QNAME;
-        QName test = (QName)xcm.convertObject(control, QName.class);
+        QName test = xcm.convertObject(control, QName.class);
         assertEquals(control, test);
     }
 
     public void testQNameToString_default_null() {
         QName qName = null;
         QName control = null;
-        String test = (String)xcm.convertObject(control, String.class);
+        String test = xcm.convertObject(control, String.class);
         assertEquals(control, test);
     }
 
     public void testQNameToString_default() {
         QName qName = CONTROL_QNAME;
         String control = CONTROL_STRING;
-        String test = (String)xcm.convertObject(qName, String.class);
+        String test = xcm.convertObject(qName, String.class);
         assertEquals(control, test);
     }
 
     public void testQNameToString_default_ns() {
         QName qName = CONTROL_QNAME_NS;
         String control = CONTROL_STRING_NS;
-        String test = (String)xcm.convertObject(qName, String.class);
+        String test = xcm.convertObject(qName, String.class);
         assertEquals(control, test);
     }
 
     public void testQNameToString_qname() {
         QName qName = CONTROL_QNAME;
         String control = CONTROL_STRING;
-        String test = (String)xcm.convertObject(qName, String.class, XMLConstants.QNAME_QNAME);
+        String test = xcm.convertObject(qName, String.class, XMLConstants.QNAME_QNAME);
         assertEquals(control, test);
     }
 
     public void testQNameToString_qname_ns() {
         QName qName = CONTROL_QNAME_NS;
         String control = CONTROL_STRING_NS;
-        String test = (String)xcm.convertObject(qName, String.class, XMLConstants.QNAME_QNAME);
+        String test = xcm.convertObject(qName, String.class, XMLConstants.QNAME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToQName_default_null() {
         String string = null;
         QName control = null;
-        QName test = (QName)xcm.convertObject(string, QName.class);
+        QName test = xcm.convertObject(string, QName.class);
         assertEquals(control, test);
     }
 
     public void testStringToQName_default() {
         String string = CONTROL_STRING;
         QName control = CONTROL_QNAME;
-        QName test = (QName)xcm.convertObject(string, QName.class);
+        QName test = xcm.convertObject(string, QName.class);
         assertEquals(control, test);
     }
 
     public void testStringToQName_default_ns() {
         String string = CONTROL_STRING_NS;
         QName control = CONTROL_QNAME_NS;
-        QName test = (QName)xcm.convertObject(string, QName.class);
+        QName test = xcm.convertObject(string, QName.class);
         assertEquals(control, test);
     }
 
     public void testStringToQName_qname() {
         String string = CONTROL_STRING;
         QName control = CONTROL_QNAME;
-        QName test = (QName)xcm.convertObject(string, QName.class, XMLConstants.QNAME_QNAME);
+        QName test = xcm.convertObject(string, QName.class, XMLConstants.QNAME_QNAME);
         assertEquals(control, test);
     }
 
     public void testStringToQName_qname_ns() {
         String string = CONTROL_STRING_NS;
         QName control = CONTROL_QNAME_NS;
-        QName test = (QName)xcm.convertObject(string, QName.class, XMLConstants.QNAME_QNAME);
+        QName test = xcm.convertObject(string, QName.class, XMLConstants.QNAME_QNAME);
         assertEquals(control, test);
     }
 
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/UrlTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/UrlTestCases.java
index 960ed3c..18008bf 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/UrlTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/UrlTestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -34,18 +34,18 @@
 
     public void testValidStringToUrl() throws Exception {
         URL control = new URL(URL);
-        URL test = (URL) xmlConversionManager.convertObject(URL, URL.class);
+        URL test = xmlConversionManager.convertObject(URL, URL.class);
         assertEquals(control, test);
     }
 
     public void testNullStringToUrl() throws Exception {
-        URL test = (URL) xmlConversionManager.convertObject(null, URL.class);
+        URL test = xmlConversionManager.convertObject(null, URL.class);
         assertNull(test);
     }
 
     public void testInvalidStringToUrl() {
         try {
-            URL test = (URL) xmlConversionManager.convertObject("abc", URL.class);
+            URL test = xmlConversionManager.convertObject("abc", URL.class);
         } catch(ConversionException e) {
             return;
         } catch(Exception e) {
@@ -56,25 +56,25 @@
 
     public void testUrlToString() throws Exception {
         URL control = new URL(URL);
-        String test = (String) xmlConversionManager.convertObject(control, String.class);
+        String test = xmlConversionManager.convertObject(control, String.class);
         assertEquals(URL, test);
     }
 
     public void testNullUrlToString() {
-        String test = (String) xmlConversionManager.convertObject(null, String.class);
+        String test = xmlConversionManager.convertObject(null, String.class);
         assertNull(test);
     }
 
     public void testUrlToUrl() throws Exception {
         URL control = new URL(URL);
-        URL test = (URL) xmlConversionManager.convertObject(control, URL.class);
+        URL test = xmlConversionManager.convertObject(control, URL.class);
         assertEquals(control, test);
     }
 
     public void testUrlToInteger() {
         try {
             URL control = new URL(URL);
-            URL test = (URL) xmlConversionManager.convertObject(control, Integer.class);
+            xmlConversionManager.convertObject(control, Integer.class);
         } catch(ConversionException e) {
             return;
         } catch(Exception e) {
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/XMLGregorianCalendarTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/XMLGregorianCalendarTestCases.java
index 7f6db7c..8f24235 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/XMLGregorianCalendarTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/oxm/xmlconversionmanager/XMLGregorianCalendarTestCases.java
@@ -168,28 +168,28 @@
         String timeString       = "07:30:00+03:00";
         String dateTimeString   = "2009-02-17T07:30:00.000+03:00";
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_DAY_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_DAY_QNAME);
         assertEquals("Object to String conversion failed.", gDayString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_MONTH_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_MONTH_QNAME);
         assertEquals("Object to String conversion failed.", gMonthString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_MONTH_DAY_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_MONTH_DAY_QNAME);
         assertEquals("Object to String conversion failed.", gMonthDayString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_YEAR_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_YEAR_QNAME);
         assertEquals("Object to String conversion failed.", gYearString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.G_YEAR_MONTH_QNAME);
         assertEquals("Object to String conversion failed.", gYearMonthString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.DATE_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.DATE_QNAME);
         assertEquals("Object to String conversion failed.", dateString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.TIME_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.TIME_QNAME);
         assertEquals("Object to String conversion failed.", timeString, testString);
 
-        testString = (String) getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.DATE_TIME_QNAME);
+        testString = getXmlConversionManager().convertObject(aCal, String.class, XMLConstants.DATE_TIME_QNAME);
         assertEquals("Object to String conversion failed.", dateTimeString, testString);
     }
 
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDODataObject.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDODataObject.java
index e0d9946..d88931c 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDODataObject.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDODataObject.java
@@ -693,7 +693,7 @@
         Type sdotype = null;
         boolean isMany = false;
         boolean isContainment = false;
-        Class valueClass = value.getClass();
+        Class<? extends Object> valueClass = value.getClass();
 
         if (value instanceof Collection) {
             if (((Collection)value).size() > 0) {
@@ -745,7 +745,7 @@
         propertyDO.set("name", name);
         boolean isMany = false;
         boolean isContainment = false;
-        Class valueClass = value.getClass();
+        Class<? extends Object> valueClass = value.getClass();
 
         if (value instanceof Collection) {
             if (((Collection)value).size() > 0) {
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOType.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOType.java
index fc6e519..def14e3 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOType.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/SDOType.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -180,7 +180,7 @@
         if ((javaClass == null) && (javaClassName != null)) {
             try {
                 SDOClassLoader loader = ((SDOXMLHelper)aHelperContext.getXMLHelper()).getLoader();
-                Class clazz = loader.getParent().loadClass(javaClassName);
+                Class<?> clazz = loader.getParent().loadClass(javaClassName);
                 if(isValidInstanceClass(clazz)) {
                     javaClass = clazz;
                 } else {
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/ApplicationAccessWLS.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/ApplicationAccessWLS.java
index 69d7802..461fd76 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/ApplicationAccessWLS.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/ApplicationAccessWLS.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -143,14 +143,14 @@
 
         try {
             // Get component invocation manager
-            final Class cicManagerClass = PrivilegedAccessHelper.getClassForName(CIC_MANAGER_CLASS_NAME);
+            final Class<Object> cicManagerClass = PrivilegedAccessHelper.getClassForName(CIC_MANAGER_CLASS_NAME);
             final Method getInstance = PrivilegedAccessHelper.getDeclaredMethod(cicManagerClass, "getInstance", new Class[]{});
             cicManagerInstance = PrivilegedAccessHelper.invokeMethod(getInstance, cicManagerClass);
 
             // Get component invocation context
             getCurrentCicMethod = PrivilegedAccessHelper.getMethod(cicManagerClass, "getCurrentComponentInvocationContext", new Class[]{}, true);
 
-            final Class cicClass = PrivilegedAccessHelper.getClassForName(CIC_CLASS_NAME);
+            final Class<Object> cicClass = PrivilegedAccessHelper.getClassForName(CIC_CLASS_NAME);
             getApplicationIdMethod = PrivilegedAccessHelper.getDeclaredMethod(cicClass, "getApplicationId", new Class[]{});
 
             return true;
@@ -165,7 +165,7 @@
      */
     protected boolean initUsingApplicationAccess() {
         try {
-            final Class applicationAccessClass = PrivilegedAccessHelper.getClassForName("weblogic.application.ApplicationAccess");
+            final Class<Object> applicationAccessClass = PrivilegedAccessHelper.getClassForName("weblogic.application.ApplicationAccess");
             final Method getApplicationAccessMethod = PrivilegedAccessHelper.getDeclaredMethod(applicationAccessClass, "getApplicationAccess", new Class[]{});
             applicationAccessInstance = PrivilegedAccessHelper.invokeMethod(getApplicationAccessMethod, applicationAccessClass);
 
@@ -185,7 +185,7 @@
      */
     private String getAppNameUsingCic() throws InvocationTargetException, IllegalAccessException {
         final Object cicInstance = PrivilegedAccessHelper.invokeMethod(getCurrentCicMethod, cicManagerInstance);
-        return (String) PrivilegedAccessHelper.invokeMethod(getApplicationIdMethod, cicInstance);
+        return PrivilegedAccessHelper.invokeMethod(getApplicationIdMethod, cicInstance);
     }
 
     /**
@@ -193,9 +193,9 @@
      */
     private String getAppNameUsingApplicationAccess(ClassLoader classLoader) throws InvocationTargetException, IllegalAccessException {
         final Object[] parameters = new Object[] {classLoader};
-        final String appName = (String) PrivilegedAccessHelper.invokeMethod(getApplicationNameMethod, applicationAccessInstance, parameters);
+        final String appName = PrivilegedAccessHelper.invokeMethod(getApplicationNameMethod, applicationAccessInstance, parameters);
         if (appName != null) {
-            final String appVersion = (String) PrivilegedAccessHelper.invokeMethod(getApplicationVersionMethod, applicationAccessInstance, parameters);
+            final String appVersion = PrivilegedAccessHelper.invokeMethod(getApplicationVersionMethod, applicationAccessInstance, parameters);
             if (appVersion != null) {
                 return appName + "#" + appVersion;
             }
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/DynamicClassWriter.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/DynamicClassWriter.java
index 430ff4c..7ccd85c 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/DynamicClassWriter.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/DynamicClassWriter.java
@@ -68,7 +68,7 @@
         if (type.isSubType()) {
             try {
                 Field parentEndPropertyIndexField = PrivilegedAccessHelper.getField(parentClass, END_PROPERTY_INDEX, true);
-                Integer parentEndPropertyIndex = (Integer) PrivilegedAccessHelper.getValueFromField(parentEndPropertyIndexField, parentClass);
+                Integer parentEndPropertyIndex = PrivilegedAccessHelper.getValueFromField(parentEndPropertyIndexField, parentClass);
                 startPropertyIndex = parentEndPropertyIndex + 1;
             } catch (NoSuchFieldException e) {
                 startPropertyIndex = 0;
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassGenerator.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassGenerator.java
index 466311d..ec5b563 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassGenerator.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOClassGenerator.java
@@ -14,11 +14,13 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.sdo.helper;
 
+import commonj.sdo.Type;
 import commonj.sdo.helper.HelperContext;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 import javax.xml.namespace.QName;
@@ -221,7 +223,7 @@
 
     public Map generate(Source xsdSource, CodeWriter aCodeWriter, SchemaResolver schemaResolver, boolean bProcessImports) {
         SDOTypesGenerator gen = new SDOTypesGenerator(aHelperContext);
-        java.util.List types = gen.define(xsdSource, schemaResolver, true, bProcessImports);
+        List<Type> types = gen.define(xsdSource, schemaResolver, true, bProcessImports);
         return generate(aCodeWriter, types);
     }
 
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOCopyHelper.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOCopyHelper.java
index b671745..6a16728 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOCopyHelper.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOCopyHelper.java
@@ -26,7 +26,6 @@
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOSequence;
-import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.ValueStore;
 import org.eclipse.persistence.exceptions.SDOException;
 import commonj.sdo.ChangeSummary;
@@ -155,9 +154,9 @@
         }
 
         if (dataObject.getType().isSequenced()) {
-            List settings = ((SDOSequence)dataObject.getSequence()).getSettings();
+            List<Setting> settings = ((SDOSequence)dataObject.getSequence()).getSettings();
             for (int index = 0, size = dataObject.getSequence().size(); index < size; index++) {
-                Setting nextSetting = (Setting)settings.get(index);
+                Setting nextSetting = settings.get(index);
 
                 Property prop = dataObject.getSequence().getProperty(index);
                 if (prop == null || prop.getType().isDataType()) {
@@ -394,9 +393,9 @@
 
         SDOProperty seqProperty = null;
         try {
-            List settings = origSequence.getSettings();
+            List<Setting> settings = origSequence.getSettings();
             for (int index = 0, size = origSequence.size(); index < size; index++) {
-                Setting nextSetting = (Setting)settings.get(index);
+                Setting nextSetting = settings.get(index);
                 seqProperty = origSequence.getProperty(nextSetting);
 
                 if ((null == seqProperty) || seqProperty.getType().isDataType()) {
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDODataHelper.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDODataHelper.java
index e62b35a..ab44eee 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDODataHelper.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDODataHelper.java
@@ -32,7 +32,6 @@
 import javax.xml.namespace.QName;
 import org.eclipse.persistence.sdo.SDOConstants;
 import org.eclipse.persistence.sdo.SDOProperty;
-import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.exceptions.ConversionException;
 import org.eclipse.persistence.exceptions.SDOException;
 import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession;
@@ -734,18 +733,18 @@
             // convert a DataHandler to a string, by getting the bytes and then
             // calling into conversion manager
             try {
-                Class binaryDataHelper = PrivilegedAccessHelper.getClassForName("org.eclipse.persistence.internal.oxm.XMLBinaryDataHelper");
+                Class<Object> binaryDataHelper = PrivilegedAccessHelper.getClassForName("org.eclipse.persistence.internal.oxm.XMLBinaryDataHelper");
                 java.lang.reflect.Method getHelperMethod = PrivilegedAccessHelper.getMethod(binaryDataHelper, "getXMLBinaryDataHelper", new Class[] {}, false);
                 java.lang.reflect.Method stringToDataHandlerMethod = PrivilegedAccessHelper.getMethod(binaryDataHelper, "stringFromDataHandler", new Class[] { Object.class, QName.class, CoreAbstractSession.class }, false);
 
                 Object helper = PrivilegedAccessHelper.invokeMethod(getHelperMethod, binaryDataHelper, new Object[] {});
-                String result = (String) PrivilegedAccessHelper.invokeMethod(stringToDataHandlerMethod, helper, new Object[] { value, xsdType, ((SDOXMLHelper) getHelperContext().getXMLHelper()).getXmlContext().getSession() });
+                String result = PrivilegedAccessHelper.invokeMethod(stringToDataHandlerMethod, helper, new Object[] { value, xsdType, ((SDOXMLHelper) getHelperContext().getXMLHelper()).getXmlContext().getSession() });
                 return result;
             } catch (Exception ex) {
-                return (String) getXMLConversionManager().convertObject(value, ClassConstants.STRING, xsdType);
+                return getXMLConversionManager().convertObject(value, ClassConstants.STRING, xsdType);
             }
         }
-        return (String) getXMLConversionManager().convertObject(value, ClassConstants.STRING, xsdType);
+        return getXMLConversionManager().convertObject(value, ClassConstants.STRING, xsdType);
     }
 
     /**
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOEqualityHelper.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOEqualityHelper.java
index d822fa2..42676f0 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOEqualityHelper.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOEqualityHelper.java
@@ -24,7 +24,6 @@
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOSequence;
-import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.oxm.XMLRoot;
 import org.eclipse.persistence.oxm.sequenced.Setting;
 
@@ -240,8 +239,8 @@
             return false;
         }
         // the settings inside the sequence must be new objects
-        List originalSettingsList = aSequence.getSettings();
-        List copySettingsList = aSequenceCopy.getSettings();
+        List<Setting> originalSettingsList = aSequence.getSettings();
+        List<Setting> copySettingsList = aSequenceCopy.getSettings();
         if ((null == originalSettingsList) || (null == copySettingsList)) {
             return false;
         }
@@ -258,8 +257,8 @@
          */
         if (isDeep) {
             for (int index = 0, size = aSequence.size(); index < size; index++) {
-                originalProperty = aSequence.getProperty((Setting) originalSettingsList.get(index));
-                copyProperty = aSequenceCopy.getProperty((Setting) copySettingsList.get(index));
+                originalProperty = aSequence.getProperty(originalSettingsList.get(index));
+                copyProperty = aSequenceCopy.getProperty(copySettingsList.get(index));
 
                 // we must handle null properties that represent unstructured text
                 // both null = unstructured
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOHelperContext.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOHelperContext.java
index 030a025..167d226 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOHelperContext.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOHelperContext.java
@@ -543,7 +543,7 @@
         if (null == contextMap) {
             contextMap = new ConcurrentHashMap<String, HelperContext>();
             // use putIfAbsent to avoid concurrent entries in the map
-            ConcurrentHashMap existingMap = helperContexts.putIfAbsent(contextMapKey, contextMap);
+            ConcurrentHashMap<String, HelperContext> existingMap = helperContexts.putIfAbsent(contextMapKey, contextMap);
             if (existingMap != null) {
                 // if a new entry was just added, use it instead of the one we just created
                 contextMap = existingMap;
@@ -1329,7 +1329,7 @@
         if (null == alias) {
             alias = new ConcurrentHashMap<String, String>();
             // use putIfAbsent to avoid concurrent entries in the map
-            ConcurrentHashMap existingMap = aliasMap.putIfAbsent(mapKey, alias);
+            ConcurrentHashMap<String, String> existingMap = aliasMap.putIfAbsent(mapKey, alias);
             if (existingMap != null) {
                 // if a new entry was just added, use it instead of the one we just created
                 alias = existingMap;
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOMarshalListener.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOMarshalListener.java
index b90f019..9cc5981 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOMarshalListener.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOMarshalListener.java
@@ -220,7 +220,7 @@
                 List unsetPropNames = changeSummary.getUnsetProps(nextModifiedDO);
                 if (!unsetPropNames.isEmpty()) {
                     XMLConversionManager xmlConversionManager = ((SDOXMLHelper)typeHelper.getHelperContext().getXMLHelper()).getXmlConversionManager();
-                    String unsetPropsString = (String)xmlConversionManager.convertObject(unsetPropNames, String.class);
+                    String unsetPropsString = xmlConversionManager.convertObject(unsetPropNames, String.class);
                     csNode.setAttributeNS(SDOConstants.SDO_URL, sdoPrefix +//
                                           SDOConstants.SDO_XPATH_NS_SEPARATOR_FRAGMENT +//
                                           SDOConstants.CHANGESUMMARY_UNSET, unsetPropsString);
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOSchemaGenerator.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOSchemaGenerator.java
index c247990..fc27274 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOSchemaGenerator.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOSchemaGenerator.java
@@ -572,7 +572,7 @@
         if (sdoProperty.isDefaultSet()) {
             if (!sdoProperty.isMany() && sdoProperty.getType().isDataType()) {
                 XMLConversionManager xmlConversionManager = ((SDOXMLHelper)aHelperContext.getXMLHelper()).getXmlConversionManager();
-                elem.setDefaultValue((String)xmlConversionManager.convertObject(sdoProperty.getDefault(), ClassConstants.STRING, sdoProperty.getXsdType()));
+                elem.setDefaultValue(xmlConversionManager.convertObject(sdoProperty.getDefault(), ClassConstants.STRING, sdoProperty.getXsdType()));
             }
 
         }
@@ -678,7 +678,7 @@
         if (((SDOProperty)property).isDefaultSet()) {
             if (!property.isMany() && property.getType().isDataType()) {
                 XMLConversionManager xmlConversionManager = ((SDOXMLHelper)aHelperContext.getXMLHelper()).getXmlConversionManager();
-                attr.setDefaultValue((String)xmlConversionManager.convertObject(property.getDefault(), ClassConstants.STRING, ((SDOProperty)property).getXsdType()));
+                attr.setDefaultValue(xmlConversionManager.convertObject(property.getDefault(), ClassConstants.STRING, ((SDOProperty)property).getXsdType()));
             }
         }
         addSimpleComponentAnnotations(attr, property, false);
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOTypesGenerator.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOTypesGenerator.java
index 63f6407..1e5d85c 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOTypesGenerator.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOTypesGenerator.java
@@ -180,10 +180,10 @@
                 ((SDOTypeHelper) aHelperContext.getTypeHelper()).addType(nextSDOType);
             }
 
-            Iterator anonymousIterator = getAnonymousTypes().iterator();
+            Iterator<SDOType> anonymousIterator = getAnonymousTypes().iterator();
 
             while (anonymousIterator.hasNext()) {
-                SDOType nextSDOType = (SDOType) anonymousIterator.next();
+                SDOType nextSDOType = anonymousIterator.next();
                 ((SDOTypeHelper) aHelperContext.getTypeHelper()).getAnonymousTypes().add(nextSDOType);
             }
 
@@ -470,7 +470,7 @@
         String value = (String) complexType.getAttributesMap().get(SDOConstants.SDOXML_ALIASNAME_QNAME);
         if (value != null) {
             XMLConversionManager xmlConversionManager = ((SDOXMLHelper) aHelperContext.getXMLHelper()).getXmlConversionManager();
-            java.util.List names = (java.util.List) xmlConversionManager.convertObject(value, java.util.List.class);
+            java.util.List names = xmlConversionManager.convertObject(value, java.util.List.class);
             currentType.setAliasNames(names);
         }
 
@@ -758,7 +758,7 @@
         String value = (String) simpleType.getAttributesMap().get(SDOConstants.SDOXML_ALIASNAME_QNAME);
         if (value != null) {
             XMLConversionManager xmlConversionManager = ((SDOXMLHelper) aHelperContext.getXMLHelper()).getXmlConversionManager();
-            java.util.List names = (java.util.List) xmlConversionManager.convertObject(value, java.util.List.class);
+            java.util.List names = xmlConversionManager.convertObject(value, java.util.List.class);
             currentType.setAliasNames(names);
         }
 
@@ -1706,7 +1706,7 @@
         String aliasNamesValue = (String) simpleComponent.getAttributesMap().get(SDOConstants.SDOXML_ALIASNAME_QNAME);
         if (aliasNamesValue != null) {
             XMLConversionManager xmlConversionManager = ((SDOXMLHelper) aHelperContext.getXMLHelper()).getXmlConversionManager();
-            java.util.List names = (java.util.List) xmlConversionManager.convertObject(aliasNamesValue, java.util.List.class);
+            java.util.List names = xmlConversionManager.convertObject(aliasNamesValue, java.util.List.class);
             p.setAliasNames(names);
         }
 
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOUnmarshalListener.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOUnmarshalListener.java
index 42636d1..2e72d3a 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOUnmarshalListener.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/SDOUnmarshalListener.java
@@ -144,7 +144,7 @@
                     List unsetValueList = new ArrayList();
                     if ((unsetValue != null) && (unsetValue.length() > 0)) {
                         XMLConversionManager xmlConversionManager = ((SDOXMLHelper) aHelperContext.getXMLHelper()).getXmlConversionManager();
-                        unsetValueList = (List)xmlConversionManager.convertObject(unsetValue, List.class);
+                        unsetValueList = xmlConversionManager.convertObject(unsetValue, List.class);
                     }
                     if (nextModifiedDO != null) {
                         nextModifiedDO._setModified(true);
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/delegates/SDOTypeHelperDelegate.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/delegates/SDOTypeHelperDelegate.java
index d372725..c70afcb 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/delegates/SDOTypeHelperDelegate.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/delegates/SDOTypeHelperDelegate.java
@@ -475,7 +475,7 @@
         wrappersHashMap.put(SDOConstants.SDO_SHORTOBJECT.getQName(), SDO_SHORTOBJECT_WRAPPER);
 
         // Now add these into the impl-to-type Map
-        Iterator wrappers = wrappersHashMap.values().iterator();
+        Iterator<SDOType> wrappers = wrappersHashMap.values().iterator();
         while (wrappers.hasNext()) {
             SDOWrapperType wrapper = (SDOWrapperType) wrappers.next();
             Iterator descriptors = wrapper.getDescriptorsMap().values().iterator();
diff --git a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/jaxb/JAXBValueStore.java b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/jaxb/JAXBValueStore.java
index e1b44fd..a878f4f 100644
--- a/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/jaxb/JAXBValueStore.java
+++ b/sdo/org.eclipse.persistence.sdo/src/main/java/org/eclipse/persistence/sdo/helper/jaxb/JAXBValueStore.java
@@ -372,20 +372,20 @@
                     xPathFragment = null;
                     break;
                 }
-                Map attributeChildrenMap = xPathNode.getAttributeChildrenMap();
+                Map<XPathFragment, XPathNode> attributeChildrenMap = xPathNode.getAttributeChildrenMap();
                 if (null == attributeChildrenMap) {
                     xPathNode = null;
                 } else {
-                    xPathNode = (XPathNode) attributeChildrenMap.get(xPathFragment);
+                    xPathNode = attributeChildrenMap.get(xPathFragment);
                 }
             } else if (xPathFragment.nameIsText()) {
                 xPathNode = xPathNode.getTextNode();
             } else {
-                Map nonAttributeChildrenMap = xPathNode.getNonAttributeChildrenMap();
+                Map<XPathFragment, XPathNode> nonAttributeChildrenMap = xPathNode.getNonAttributeChildrenMap();
                 if (null == nonAttributeChildrenMap) {
                     xPathNode = null;
                 } else {
-                    xPathNode = (XPathNode) nonAttributeChildrenMap.get(xPathFragment);
+                    xPathNode = nonAttributeChildrenMap.get(xPathFragment);
                 }
             }
             xPathFragment = xPathFragment.getNextFragment();
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOTestCase.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOTestCase.java
index 2243371..07dfd8d 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOTestCase.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOTestCase.java
@@ -35,15 +35,15 @@
 import java.util.List;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.eclipse.persistence.oxm.sequenced.Setting;
 import org.eclipse.persistence.sdo.SDOChangeSummary;
 import org.eclipse.persistence.sdo.SDOConstants;
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOSequence;
 import org.eclipse.persistence.sdo.SDOSetting;
-import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.ValueStore;
-import org.eclipse.persistence.sdo.helper.SDOClassLoader;
 import org.eclipse.persistence.sdo.helper.SDODataHelper;
 import org.eclipse.persistence.sdo.helper.SDOHelperContext;
 import org.eclipse.persistence.sdo.helper.SDOTypeHelper;
@@ -53,7 +53,6 @@
 import commonj.sdo.impl.HelperProvider;
 import org.eclipse.persistence.Version;
 import org.eclipse.persistence.logging.AbstractSessionLog;
-import org.eclipse.persistence.platform.xml.XMLComparer;
 
 import static org.eclipse.persistence.sdo.SDOConstants.*;
 
@@ -406,9 +405,9 @@
                     } else if (aType.equals(SDO_CHARACTER)) {
                         assertEquals(0, ((Character)aPropertyValue).charValue());
                     } else if (aType.equals(SDO_DOUBLE)) {
-                        assertEquals(0, (Double) aPropertyValue);
+                        assertEquals(0, aPropertyValue);
                     } else if (aType.equals(SDO_FLOAT)) {
-                        assertEquals(0, (Float) aPropertyValue);
+                        assertEquals(0, aPropertyValue);
                     } else if (aType.equals(SDO_INT)) {
                         assertEquals(0, ((Integer)aPropertyValue).intValue());
                     } else if (aType.equals(SDO_SHORT)) {
@@ -699,8 +698,8 @@
         // the settings inside the sequence must be new objects
         SDOSetting originalSetting = null;
         SDOSetting copySetting = null;
-        List originalSettingsList = aSequence.getSettings();
-        List copySettingsList = aSequenceCopy.getSettings();
+        List<? super Setting> originalSettingsList = aSequence.getSettings();
+        List<? super Setting> copySettingsList = aSequenceCopy.getSettings();
         if (null == originalSettingsList || null == copySettingsList) {
             return false;
         }
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOXMLComparer.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOXMLComparer.java
index 734aed8..aaaf513 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOXMLComparer.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/SDOXMLComparer.java
@@ -38,8 +38,8 @@
             String testValue = test.getNodeValue();
             if (controlValue.length() == testValue.length()) {
                 try {
-                    List controlList = (List)XMLConversionManager.getDefaultXMLManager().convertObject(controlValue, List.class);
-                    List testList = (List)XMLConversionManager.getDefaultXMLManager().convertObject(testValue, List.class);
+                    List controlList = XMLConversionManager.getDefaultXMLManager().convertObject(controlValue, List.class);
+                    List testList = XMLConversionManager.getDefaultXMLManager().convertObject(testValue, List.class);
                     if (controlList.size() == testList.size()) {
                         if ((controlList.containsAll(testList)) && testList.containsAll(controlList)) {
                             return true;
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/datafactory/SDODataFactoryExceptionTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/datafactory/SDODataFactoryExceptionTestCases.java
index fa37e41..9b2d189 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/datafactory/SDODataFactoryExceptionTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/datafactory/SDODataFactoryExceptionTestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -86,7 +86,7 @@
      }
 
      public void testInvalidInterfaceClass() throws Exception {
-         Class theClass = this.getClass();
+         Class<? extends SDODataFactoryExceptionTestCases> theClass = this.getClass();
          try {
              dataFactory.create(theClass);
              fail("An IllegalArugmentException should have occurred");
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/helpercontext/SDOHelperContextTest.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/helpercontext/SDOHelperContextTest.java
index f8029dd..5968c0f 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/helpercontext/SDOHelperContextTest.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/helpercontext/SDOHelperContextTest.java
@@ -186,7 +186,7 @@
     @SuppressWarnings("unchecked")
     public void testNotificationListenerWLS() throws Exception {
         final String applicationName = "App1";
-        Class listenerClass = Class.forName("org.eclipse.persistence.sdo.helper.SDOHelperContext$MyNotificationListener");
+        Class<? extends NotificationListener> listenerClass = (Class<? extends NotificationListener>) Class.forName("org.eclipse.persistence.sdo.helper.SDOHelperContext$MyNotificationListener");
         Constructor<? extends NotificationListener> constructor = listenerClass.getDeclaredConstructor(String.class, int.class);
         Field helperContextsField = SDOHelperContext.class.getDeclaredField("helperContexts");
         Field appNameToClassLoaderMapField = SDOHelperContext.class.getDeclaredField("appNameToClassLoaderMap");
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/mappings/MappingsTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/mappings/MappingsTestCases.java
index 3cd4dc7..62c8644 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/mappings/MappingsTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/mappings/MappingsTestCases.java
@@ -70,7 +70,7 @@
         assertTrue(doSimpleList.contains("FOO"));
         assertTrue(doSimpleList.contains("BAR"));
 
-        List simpleList = root.getSimpleList();
+        List<String> simpleList = root.getSimpleList();
         assertEquals(2, simpleList.size());
         assertTrue(simpleList.contains("FOO"));
         assertTrue(simpleList.contains("BAR"));
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/datatype/SDOXMLHelperDatatypeTestCase.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/datatype/SDOXMLHelperDatatypeTestCase.java
index 5167ec1..7e372e8 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/datatype/SDOXMLHelperDatatypeTestCase.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/datatype/SDOXMLHelperDatatypeTestCase.java
@@ -18,22 +18,17 @@
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.StringReader;
-import java.util.ArrayList;
 
 import javax.xml.transform.stream.StreamResult;
 
 import org.eclipse.persistence.sdo.SDOConstants;
-import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.SDOXMLDocument;
-import org.eclipse.persistence.sdo.helper.SDOXMLHelper;
-import org.eclipse.persistence.sdo.helper.delegates.SDOTypeHelperDelegator;
 import org.eclipse.persistence.testing.sdo.SDOTestCase;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Property;
 import commonj.sdo.helper.XMLDocument;
 
 public abstract class SDOXMLHelperDatatypeTestCase extends SDOTestCase {
@@ -125,7 +120,7 @@
 
         assertNull(document.getRootObject().getType().getInstanceClass());
 
-        Class instanceClassFromDocument = document.getRootObject().get("value").getClass();
+        Class<? extends Object> instanceClassFromDocument = document.getRootObject().get("value").getClass();
         assertEquals(getDatatypeJavaClass(), instanceClassFromDocument);
     }
 
@@ -137,7 +132,7 @@
 
         assertNull(document.getRootObject().getType().getInstanceClass());
 
-        Class instanceClassFromDocument = document.getRootObject().get("value").getClass();
+        Class<? extends Object> instanceClassFromDocument = document.getRootObject().get("value").getClass();
         assertEquals(getDatatypeJavaClass(), instanceClassFromDocument);
     }
 
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/loadandsave/LoadAndSaveTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/loadandsave/LoadAndSaveTestCases.java
index 69e851d..8a97d1f 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/loadandsave/LoadAndSaveTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xmlhelper/loadandsave/LoadAndSaveTestCases.java
@@ -73,7 +73,7 @@
         String className = package1 + "/" + getRootInterfaceName();
         className = className.replaceAll("/", ".");
 
-        Class urlLoadedClass = myURLLoader.loadClass(className);
+        Class<?> urlLoadedClass = myURLLoader.loadClass(className);
 
         ((SDOXMLHelper)xmlHelper).setLoader(new SDOClassLoader(myURLLoader, aHelperContext));
         Class loadedClass2 = ((SDOXMLHelper)xmlHelper).getLoader().loadClass(className);
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/ComplexImportsAndIncludesTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/ComplexImportsAndIncludesTestCases.java
index e99ca35..aefcdc7 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/ComplexImportsAndIncludesTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/ComplexImportsAndIncludesTestCases.java
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
 import javax.xml.transform.Source;
@@ -62,7 +63,7 @@
             java.util.Properties fileProps = new java.util.Properties();
             fileProps.load(indexFIS);
 
-            java.util.Enumeration keyEnum = fileProps.keys();
+            Enumeration<Object> keyEnum = fileProps.keys();
             while (keyEnum.hasMoreElements()) {
                 String s = (String) keyEnum.nextElement();
                 fileIndex.put(fileProps.get(s), s);
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/DefineWithImportsNoSchemaLocationTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/DefineWithImportsNoSchemaLocationTestCases.java
index c0c1df1..5fefa86 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/DefineWithImportsNoSchemaLocationTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/helper/xsdhelper/define/DefineWithImportsNoSchemaLocationTestCases.java
@@ -16,7 +16,7 @@
 
 import commonj.sdo.DataObject;
 import commonj.sdo.Type;
-import java.io.FileInputStream;
+
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
@@ -25,8 +25,6 @@
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
 import junit.textui.TestRunner;
-import org.eclipse.persistence.sdo.SDOConstants;
-import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.helper.SDOXSDHelper;
 import org.eclipse.persistence.sdo.helper.SchemaResolver;
@@ -50,7 +48,7 @@
 
         List types = ((SDOXSDHelper) xsdHelper).define(new StreamSource(is), new TestResolver(getSchemaLocation()));
         log("\nExpected:\n");
-        List controlTypes = getControlTypes();
+        List<Type> controlTypes = getControlTypes();
         log(controlTypes);
 
         log("\nActual:\n");
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/changesummary/ChangeSummaryXSDWithCSonChildUndoTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/changesummary/ChangeSummaryXSDWithCSonChildUndoTestCases.java
index c698778..45cb9e3 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/changesummary/ChangeSummaryXSDWithCSonChildUndoTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/changesummary/ChangeSummaryXSDWithCSonChildUndoTestCases.java
@@ -14,21 +14,13 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.sdo.model.changesummary;
 
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import junit.textui.TestRunner;
 import org.eclipse.persistence.sdo.SDOChangeSummary;
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.ValueStore;
-import org.eclipse.persistence.sdo.helper.ListWrapper;
-import org.eclipse.persistence.testing.sdo.SDOTestCase;
 import commonj.sdo.ChangeSummary;
 import commonj.sdo.DataObject;
-import commonj.sdo.Property;
-import commonj.sdo.helper.XMLDocument;
 
 /**
  * This test suite will exercise mulit-operations on changeSummaries that are below the root as well as inter-changeSummary ops.
@@ -411,7 +403,7 @@
         // verify that the objects are returned back to their original stes
         assertNotNull(salesPO1DO.get("items"));
         assertNull(salesPO1DO2.get("items"));
-        List preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
+        List<DataObject> preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
         assertEquals(62, preOrderList.size());
     }
 
@@ -507,7 +499,7 @@
         // verify that the object above the tree is still set
         assertNotNull(salesDO.get("employee[1]"));
         assertNotNull(salesPO1DO.get("buyer"));
-        List preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
+        List<DataObject> preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
         assertEquals(63, preOrderList.size());
     }
 
@@ -1037,7 +1029,7 @@
         assertNotNull(salesPO1ItemsDO.getChangeSummary());
         assertNotNull(salesPO2ItemsDO.getChangeSummary());
 
-        List preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
+        List<DataObject> preOrderList = preOrderTraversalDataObjectList((SDODataObject)rootObject, false);
         assertEquals(62, preOrderList.size());
 
         // preoperation setup
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/OpenSequencedTypeTestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/OpenSequencedTypeTestCases.java
index 6d32a94..c3b184e 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/OpenSequencedTypeTestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/OpenSequencedTypeTestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -17,7 +17,6 @@
 import org.eclipse.persistence.sdo.dataobjects.OpenSequencedTypeImpl;
 import org.eclipse.persistence.testing.sdo.SDOTestCase;
 
-import commonj.sdo.Type;
 import commonj.sdo.helper.TypeHelper;
 
 public class OpenSequencedTypeTestCases extends SDOTestCase {
@@ -34,7 +33,7 @@
 
         // Test that the implClass of the Type found in TypeHelper matches the
         // Class in our library (therefore not generated dynamically).
-        Class classFromLib = OpenSequencedTypeImpl.class;
+        Class<OpenSequencedTypeImpl> classFromLib = OpenSequencedTypeImpl.class;
         assertEquals("Classes did not match", classFromLib, typeFromTypeHelper.getImplClass());
     }
 
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/XPathEngineBug242108TestCases.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/XPathEngineBug242108TestCases.java
index 163e03d..61bfdf3 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/XPathEngineBug242108TestCases.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/dataobject/xpathengine/XPathEngineBug242108TestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -25,7 +25,6 @@
 import org.eclipse.persistence.testing.sdo.SDOTestCase;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.helper.DataFactory;
 
 public class XPathEngineBug242108TestCases extends SDOTestCase {
 
@@ -51,7 +50,7 @@
 
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = IllegalArgumentException.class;
+        Class<IllegalArgumentException> expectedExceptionClass = IllegalArgumentException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity[0]", new String("Test"));
@@ -67,7 +66,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = IndexOutOfBoundsException.class;
+        Class<IndexOutOfBoundsException> expectedExceptionClass = IndexOutOfBoundsException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity[99]", new String("Test"));
@@ -83,7 +82,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = IndexOutOfBoundsException.class;
+        Class<IndexOutOfBoundsException> expectedExceptionClass = IndexOutOfBoundsException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity.99", new String("Test"));
@@ -99,7 +98,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = IllegalArgumentException.class;
+        Class<IllegalArgumentException> expectedExceptionClass = IllegalArgumentException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity", new String("Test"));
@@ -115,7 +114,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = SDOException.class;
+        Class<SDOException> expectedExceptionClass = SDOException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity[0]/what", new String("Test"));
@@ -131,7 +130,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = SDOException.class;
+        Class<SDOException> expectedExceptionClass = SDOException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity[99]/what", new String("Test"));
@@ -147,7 +146,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = SDOException.class;
+        Class<SDOException> expectedExceptionClass = SDOException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity.99/what", new String("Test"));
@@ -163,7 +162,7 @@
         List types = xsdHelper.define(is, null);
         DataObject do1 = dataFactory.create(testObjectUri, testObjectName);
 
-        Class expectedExceptionClass = SDOException.class;
+        Class<SDOException> expectedExceptionClass = SDOException.class;
         Class caughtExceptionClass = null;
         try {
             do1.set("activity/what", new String("Test"));
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/property/SDOPropertyEqualityTests.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/property/SDOPropertyEqualityTests.java
index 3136c71..a7795a6 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/property/SDOPropertyEqualityTests.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/property/SDOPropertyEqualityTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -95,7 +95,7 @@
     }
 
     private List<DataObject> queryDO() {
-        List result = new ArrayList<DataObject>();
+        List<DataObject> result = new ArrayList<>();
 
         DataObject item1DO = DataFactory.INSTANCE.create("org.example", "Item");
         item1DO.set("name", "Telephone");
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestCS.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestCS.java
index b07e3d6..2d5d08d 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestCS.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestCS.java
@@ -32,13 +32,11 @@
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOSequence;
-import org.eclipse.persistence.sdo.SDOSetting;
 import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.helper.DefaultSchemaLocationResolver;
 import org.eclipse.persistence.sdo.helper.ListWrapper;
 import org.eclipse.persistence.sdo.helper.SDOXSDHelper;
 import org.eclipse.persistence.exceptions.SDOException;
-import org.eclipse.persistence.oxm.XMLConstants;
 
 public class SDOSequenceTestCS extends SDOSequenceTestCases {
 
@@ -2466,7 +2464,7 @@
         List<DataObject> aListToAdd = new ArrayList<DataObject>();
         aListToAdd.add(item3);
         aListToAdd.add(item3);
-        for(Iterator i = aListToAdd.iterator(); i.hasNext();) {
+        for(Iterator<DataObject> i = aListToAdd.iterator(); i.hasNext();) {
             // add to the end of the list
             existingList.add(i.next());
         }
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestXSD.java b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestXSD.java
index 025423f..556d877 100644
--- a/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestXSD.java
+++ b/sdo/org.eclipse.persistence.sdo/src/test/java/org/eclipse/persistence/testing/sdo/model/sequence/SDOSequenceTestXSD.java
@@ -26,18 +26,15 @@
 import java.util.List;
 
 import junit.textui.TestRunner;
-import org.eclipse.persistence.sdo.SDOChangeSummary;
 import org.eclipse.persistence.sdo.SDOConstants;
 import org.eclipse.persistence.sdo.SDODataObject;
 import org.eclipse.persistence.sdo.SDOProperty;
 import org.eclipse.persistence.sdo.SDOSequence;
-import org.eclipse.persistence.sdo.SDOSetting;
 import org.eclipse.persistence.sdo.SDOType;
 import org.eclipse.persistence.sdo.helper.DefaultSchemaLocationResolver;
 import org.eclipse.persistence.sdo.helper.ListWrapper;
 import org.eclipse.persistence.sdo.helper.SDOXSDHelper;
 import org.eclipse.persistence.exceptions.SDOException;
-import org.eclipse.persistence.oxm.XMLConstants;
 
 public class SDOSequenceTestXSD extends SDOSequenceTestCases {
 
@@ -2783,7 +2780,7 @@
         List<DataObject> aListToAdd = new ArrayList<DataObject>();
         aListToAdd.add(item3);
         aListToAdd.add(item3);
-        for(Iterator i = aListToAdd.iterator(); i.hasNext();) {
+        for(Iterator<DataObject> i = aListToAdd.iterator(); i.hasNext();) {
             // add to the end of the list
             existingList.add(i.next());
         }
@@ -3368,7 +3365,7 @@
         aListToAdd.add(item4);
         aListToAdd.add(item5);
         // add each to the end of the list
-        for(Iterator i = aListToAdd.iterator(); i.hasNext();) {
+        for(Iterator<DataObject> i = aListToAdd.iterator(); i.hasNext();) {
             existingList.add(i.next());
         }
 
diff --git a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/DBWSBuilder.java b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/DBWSBuilder.java
index a38656d..726ded0 100644
--- a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/DBWSBuilder.java
+++ b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/DBWSBuilder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -605,7 +605,7 @@
                 Class<?> driverClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     driverClass = AccessController.doPrivileged(
-                        new PrivilegedClassForName(driverClassName));
+                        new PrivilegedClassForName<>(driverClassName));
                 }
                 else {
                     driverClass = PrivilegedAccessHelper.getClassForName(driverClassName);
@@ -696,7 +696,7 @@
                 Class<?> platformClass = null;
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     platformClass = AccessController.doPrivileged(
-                        new PrivilegedClassForName(platformClassname));
+                        new PrivilegedClassForName<>(platformClassname));
                 }
                 else {
                     platformClass =
diff --git a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/Util.java b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/Util.java
index 899e3c5..554c21c 100644
--- a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/Util.java
+++ b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/Util.java
@@ -41,8 +41,6 @@
 import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
 import static org.eclipse.persistence.internal.helper.ClassConstants.BIGDECIMAL;
 import static org.eclipse.persistence.internal.helper.ClassConstants.BOOLEAN;
-import static org.eclipse.persistence.internal.helper.ClassConstants.JavaSqlDate_Class;
-import static org.eclipse.persistence.internal.helper.ClassConstants.JavaSqlTimestamp_Class;
 import static org.eclipse.persistence.internal.helper.ClassConstants.STRING;
 import static org.eclipse.persistence.internal.oxm.Constants.BASE_64_BINARY_QNAME;
 import static org.eclipse.persistence.internal.oxm.Constants.COLON;
@@ -74,6 +72,7 @@
 
 //EclipseLink imports
 import org.eclipse.persistence.descriptors.RelationalDescriptor;
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.oxm.schema.model.Any;
 import org.eclipse.persistence.internal.oxm.schema.model.ComplexType;
@@ -674,10 +673,10 @@
                 return BOOLEAN;
             }
             if (DATE_STR.equals(typeName)) {
-                return JavaSqlDate_Class;
+                return CoreClassConstants.SQLDATE;
             }
             if (TIMESTAMP_STR.equals(typeName)) {
-                return JavaSqlTimestamp_Class;
+                return CoreClassConstants.TIMESTAMP;
             }
         }
         return STRING;
diff --git a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/oracle/OracleHelper.java b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/oracle/OracleHelper.java
index 4382386..78a5f6b 100644
--- a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/oracle/OracleHelper.java
+++ b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/dbws/oracle/OracleHelper.java
@@ -19,7 +19,6 @@
 import static java.sql.Types.STRUCT;
 import static java.util.logging.Level.FINEST;
 // EclipseLink imports
-import static org.eclipse.persistence.internal.helper.ClassConstants.Object_Class;
 import static org.eclipse.persistence.internal.oxm.Constants.ANY_QNAME;
 import static org.eclipse.persistence.internal.oxm.Constants.COLON;
 import static org.eclipse.persistence.internal.oxm.Constants.DATE_QNAME;
@@ -80,6 +79,7 @@
 import javax.xml.namespace.QName;
 
 import org.eclipse.persistence.descriptors.ClassDescriptor;
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.internal.helper.ComplexDatabaseType;
 import org.eclipse.persistence.internal.helper.DatabaseField;
@@ -1556,9 +1556,9 @@
             xField.addJavaConversion(java.sql.Date.class, DATE_QNAME);
             xdesc.getNamespaceResolver().put(SCHEMA_PREFIX, SCHEMA_URL);
         } else {
-            Class<?> attributeClass = (Class<?>)XMLConversionManager.getDefaultXMLTypes().get(qnameFromDatabaseType);
+            Class<?> attributeClass = XMLConversionManager.getDefaultXMLTypes().get(qnameFromDatabaseType);
             if (attributeClass == null) {
-                attributeClass =  Object_Class;
+                attributeClass =  CoreClassConstants.OBJECT;
             }
             fieldMapping.setAttributeClassification(attributeClass);
         }
diff --git a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/JPAMetadataGenerator.java b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/JPAMetadataGenerator.java
index 00f5973..15c46fa 100644
--- a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/JPAMetadataGenerator.java
+++ b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/JPAMetadataGenerator.java
@@ -1107,7 +1107,7 @@
         Class<?> platformClass = null;
         try {
             if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                platformClass = AccessController.doPrivileged(new PrivilegedClassForName(platformClassName));
+                platformClass = AccessController.doPrivileged(new PrivilegedClassForName<>(platformClassName));
             } else {
                 platformClass = PrivilegedAccessHelper.getClassForName(platformClassName);
             }
@@ -1115,7 +1115,7 @@
         } catch (PrivilegedActionException | ClassNotFoundException | NullPointerException e) {
             try {
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
-                    platformClass = AccessController.doPrivileged(new PrivilegedClassForName(DEFAULT_PLATFORM));
+                    platformClass = AccessController.doPrivileged(new PrivilegedClassForName<>(DEFAULT_PLATFORM));
                 } else {
                     platformClass = PrivilegedAccessHelper.getClassForName(DEFAULT_PLATFORM);
                 }
diff --git a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/Util.java b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/Util.java
index 540adcf..2aafc43 100644
--- a/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/Util.java
+++ b/utils/org.eclipse.persistence.dbws.builder/src/main/java/org/eclipse/persistence/tools/metadata/generation/Util.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,7 +14,6 @@
 //     David McCann - 2.6.0 - July 09, 2013 - Initial Implementation
 package org.eclipse.persistence.tools.metadata.generation;
 
-import static org.eclipse.persistence.internal.helper.ClassConstants.Object_Class;
 import static org.eclipse.persistence.platform.database.oracle.plsql.OraclePLSQLTypes.XMLType;
 
 import java.sql.Types;
@@ -23,6 +22,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.persistence.internal.core.helper.CoreClassConstants;
 import org.eclipse.persistence.internal.databaseaccess.DatabasePlatform;
 import org.eclipse.persistence.internal.helper.ClassConstants;
 import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;
@@ -360,7 +360,7 @@
     public static Class<?> getClassFromJDBCTypeName(String typeName, DatabasePlatform databasePlatform) {
         Class<?> clz = databasePlatform.getClassTypes().get(typeName);
         if (clz == null) {
-            return Object_Class;
+            return CoreClassConstants.OBJECT;
         }
         return clz;
     }