You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2022/08/25 19:03:27 UTC

[db-jdo] branch main updated: Update pom.xml to show compiler warnings (#54)

This is an automated email from the ASF dual-hosted git repository.

mbo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/db-jdo.git


The following commit(s) were added to refs/heads/main by this push:
     new 11bd3802 Update pom.xml to show compiler warnings (#54)
11bd3802 is described below

commit 11bd3802cc576f732741efdbfc56ef8f16c760ff
Author: Craig L Russell <ap...@gmail.com>
AuthorDate: Thu Aug 25 12:03:22 2022 -0700

    Update pom.xml to show compiler warnings (#54)
    
    * Update pom.xml to show compiler warnings
    
    * JDO-817: First version removing compiler warnings
    
    * JDO-817: removing compiler warnings Raw use og parameterzied class
    
    * JDO-817 removing compiler warnings: unused import
    
    * JDO-817 removing compiler warnings: declaration can have final modifier
    
    * JDO-817 removing compiler warnings: field may be final
    
    * JDO-817 removing compiler warnings: call toString on an array
    
    * JDO-817 removing compiler warnings: Duplicate branch in switch
    
    * JDO-817 removing compiler warnings: Redundant String operation
    
    * JDO-817 removing compiler warnings: redundant type cast
    
    * JDO-817 removing compiler warnings: unnecessary interface modifier, unnecessary semicoln
    
    * JDO-817 removing compiler warnings: unnecessary call to toString + unnecessary conversion to String
    
    * JDO-817 removing compiler warnings: getCompanyModelInstances methods return correct generic list
    
    * JDO-817: corrected namoing of instance variables
    
    * JDO-817 removing compiler warnings: QueryElementHolder becomes generic class
    
    * JDO-817 removing compiler warnings: @SuppressWarnings for set methods in fieldtypes classes
    
    * JDO-817 removing compiler warnings: using pm.newQuery() with class argument
    
    * JDO-817 removing compiler warnings: SuppressWarnings when creating a query from singleStringJDOQL
    
    * JDO-817: removing compiler warnings add profile warnings to configure compiler-plugin
    
    * JDO-817 removing compiler warnings: replace for/while loops with enhanced for loop
    
    * JDO-817 removing compiler warnings: empty catch block, empty finally, throw inside finally
    
    * JDO-817 removing compiler warnings: unchecked assignment / cast
    
    * JDO-817 removing compiler warnings: raw use of parameterized class
    
    * JDO-817 removing compiler warnings: static variable should be qualified by type name
    
    * JDO-817 removing compiler warnings: remove unused imports
    
    * JDO-817 removing compiler warnings: static variable should be qualified by type name
    
    * JDO-817 removing compiler warnings: serializable class has no definition of serialVersionUID
    
    * JDO-817 removing compiler warnings: miscellaneous warnings
    
    * JDO-817 removing compiler warnings: rawtypes warning
    
    * JDO-817 removing compiler warnings: Replace StringBuffer by StringBuilder
    
    * JDO-817 removing compiler warnings: type can be replaced by <>
    
    * JDO-817 removing compiler warnings: identical catch branches in try
    
    * JDO-817 removing compiler warnings: try finally replaceable with try with resources
    
    * JDO-817 removing compiler warnings: if can be replaced with switch;  redundant throws clause
    
    * JDO-817 removing compiler warnings: use -Xlint:all,-try,-rawtypes as default
    
    * JDO-817 removing compiler warnings: added a new paragraph about wraings to the readme
    
    * JDO-817 removing compiler warnings: "raw use of parameterized class" in api submodule
    
    * JDO-817 removing compiler warnings: method close w/o throws clause in Query and Extent
    
    * JDO-817 removing compiler warnings: „redundant cast“ in api submodule
    
    * DO-817 removing compiler warnings: „serializable class has no definition of serialVersionUID“ in api submodule
    
    * JDO-817 removing compiler warnings: "raw use of parameterized class" in api submodule
    
    * JDO-817 removing compiler warnings: "raw use of parameterized class" in api submodule
    
    * JDO-817 removing compiler warnings: „static method declared final“ in api submodule
    
    * JDO-817 removing compiler warnings: „while loop replaceable with enhanced for loop“ in api submodule
    
    * JDO-817 removing compiler warnings: „anonymous can be replaced by lambda“ in api submodule
    
    * JDO-817 removing compiler warnings: „field can be final" in api submodule
    
    * JDO-817: Change pom version to 3.3-SNAPSHOT
    
    Co-authored-by: Michael Bouschen <Mi...@akquinet.de>
---
 README.md                                          |  11 +
 api/pom.xml                                        |  13 +-
 api/src/main/java/javax/jdo/Enhancer.java          |  34 +-
 api/src/main/java/javax/jdo/Extent.java            |   3 +-
 api/src/main/java/javax/jdo/FetchGroup.java        |   4 +-
 api/src/main/java/javax/jdo/FetchPlan.java         |  10 +-
 api/src/main/java/javax/jdo/JDOException.java      |  16 +-
 api/src/main/java/javax/jdo/JDOHelper.java         | 313 +++++-------
 api/src/main/java/javax/jdo/JDOQLTypedQuery.java   |   2 +-
 .../main/java/javax/jdo/PersistenceManager.java    |  36 +-
 .../java/javax/jdo/PersistenceManagerFactory.java  |   6 +-
 api/src/main/java/javax/jdo/Query.java             |  31 +-
 .../main/java/javax/jdo/annotations/Element.java   |   2 +-
 api/src/main/java/javax/jdo/annotations/Key.java   |   2 +-
 .../javax/jdo/annotations/PersistenceCapable.java  |   2 +-
 .../java/javax/jdo/annotations/Persistent.java     |   2 +-
 api/src/main/java/javax/jdo/annotations/Query.java |   2 +-
 .../main/java/javax/jdo/annotations/Sequence.java  |   2 +-
 api/src/main/java/javax/jdo/annotations/Value.java |   2 +-
 .../java/javax/jdo/datastore/DataStoreCache.java   |  24 +-
 .../main/java/javax/jdo/identity/ByteIdentity.java |  28 +-
 .../main/java/javax/jdo/identity/CharIdentity.java |  30 +-
 .../main/java/javax/jdo/identity/IntIdentity.java  |  26 +-
 .../main/java/javax/jdo/identity/LongIdentity.java |  46 +-
 .../java/javax/jdo/identity/ObjectIdentity.java    |  68 ++-
 .../java/javax/jdo/identity/ShortIdentity.java     |  29 +-
 .../javax/jdo/identity/SingleFieldIdentity.java    |  24 +-
 .../java/javax/jdo/identity/StringIdentity.java    |  26 +-
 .../main/java/javax/jdo/metadata/JDOMetadata.java  |   4 +-
 .../java/javax/jdo/metadata/PackageMetadata.java   |   4 +-
 .../main/java/javax/jdo/query/EnumExpression.java  |   4 +-
 api/src/main/java/javax/jdo/query/Expression.java  |  10 +-
 .../javax/jdo/query/PersistableExpression.java     |   4 +-
 .../java/javax/jdo/query/StringExpression.java     |   2 +-
 api/src/main/java/javax/jdo/spi/I18NHelper.java    |  54 +--
 api/src/main/java/javax/jdo/spi/JDOImplHelper.java | 180 ++++---
 .../java/javax/jdo/spi/RegisterClassEvent.java     |  22 +-
 .../test/java/javax/jdo/AbstractJDOConfigTest.java |  18 +-
 api/src/test/java/javax/jdo/EnhancerTest.java      |  42 +-
 .../test/java/javax/jdo/JDOHelperConfigTest.java   |  22 +-
 api/src/test/java/javax/jdo/JDOHelperTest.java     |  18 +-
 api/src/test/java/javax/jdo/MockEnhancer.java      |  10 +-
 api/src/test/java/javax/jdo/ObjectStateTest.java   |   6 +-
 api/src/test/java/javax/jdo/PMFService.java        |  12 +-
 .../javax/jdo/identity/ConcreteTestIdentity.java   |  12 +-
 .../java/javax/jdo/identity/IntIdentityTest.java   |  18 +-
 .../javax/jdo/identity/ObjectIdentityTest.java     |  19 +-
 .../jdo/listener/InstanceLifecycleEventTest.java   |  20 +-
 api/src/test/java/javax/jdo/pc/PCPoint.java        |  14 +-
 api/src/test/java/javax/jdo/schema/XMLTest.java    |  32 +-
 .../test/java/javax/jdo/spi/JDOImplHelperTest.java |  10 +-
 .../java/javax/jdo/spi/StateInterrogationTest.java |  36 +-
 api/src/test/java/javax/jdo/stub/StubPMF.java      |  24 +-
 api/src/test/java/javax/jdo/util/AbstractTest.java |   6 +-
 .../test/java/javax/jdo/util/BatchTestRunner.java  |  10 +-
 api/src/test/java/javax/jdo/util/XMLTestUtil.java  |  38 +-
 exectck/pom.xml                                    |   4 +-
 parent-pom/pom.xml                                 |  25 +-
 pom.xml                                            |   4 +-
 tck/pom.xml                                        |   7 +-
 .../org/apache/jdo/tck/AbstractReaderTest.java     |  25 +-
 tck/src/main/java/org/apache/jdo/tck/JDO_Test.java | 157 +++---
 .../java/org/apache/jdo/tck/api/SignatureTest.java |  18 +-
 .../api/converter/IntAttributeConverterTest.java   |  10 +-
 .../api/converter/PointAttributeConverterTest.java |   6 +-
 .../tck/api/exceptions/ExceptionConstructor.java   |  33 +-
 .../jdo/tck/api/fetchgroup/FetchGroupTest.java     |  56 ++-
 .../AbstractInstanceLifecycleListener.java         |  22 +-
 .../AccessOtherInstancesInPrestore.java            |   2 +-
 .../AccessingFieldsInPredelete.java                |  19 +-
 .../api/instancecallbacks/CallingJdoPostload.java  |   8 +-
 .../api/instancecallbacks/CallingJdoPreclear.java  |   1 -
 .../api/instancecallbacks/CallingJdoPrestore.java  |  26 +-
 .../InstanceLifecycleListenerAttach.java           |  30 +-
 .../InstanceLifecycleListenerClear.java            |  25 +-
 .../InstanceLifecycleListenerCreate.java           |  23 +-
 .../InstanceLifecycleListenerDelete.java           |  25 +-
 .../InstanceLifecycleListenerDetach.java           |  26 +-
 .../InstanceLifecycleListenerDirty.java            |  21 +-
 .../InstanceLifecycleListenerLoad.java             |  20 +-
 .../InstanceLifecycleListenerStore.java            |  20 +-
 ...ationOfNontransactionalNonpersistentFields.java |  14 +-
 .../NoAccessToFieldsAfterPredelete.java            |  11 +-
 .../apache/jdo/tck/api/jdohelper/GetObjectIds.java |  28 +-
 .../apache/jdo/tck/api/jdohelper/IsDetached.java   |   2 +-
 .../AbstractPersistenceCapableTest.java            |   3 +-
 .../persistencecapable/NewObjectIdInstance.java    |   2 +-
 .../ConcurrentPersistenceManagersSameClasses.java  |  11 +-
 .../api/persistencemanager/DataStoreCacheTest.java |   5 +-
 .../persistencemanager/DataStoreConnection.java    |   7 +-
 .../DataStoreConnectionThrows.java                 |   7 +-
 .../api/persistencemanager/DatastoreTimeout.java   |  82 ++--
 .../api/persistencemanager/DeletePersistent.java   |   8 +-
 .../DeletePersistentAllFails.java                  |   5 +-
 ...DeletePersistentFailsIfInstanceIsTransient.java |   5 +-
 ...InstanceManagedByAnotherPersistenceManager.java |   4 +-
 ...etePersistentHasNoEffectOnDeletedInstances.java |   5 +-
 .../tck/api/persistencemanager/GetProperties.java  |  57 ++-
 .../tck/api/persistencemanager/NewInstance.java    |   2 -
 .../ObjectIdUniqueAmongInstances.java              |  10 +-
 .../OneInstanceOfObjectPerPersistenceManager.java  |  16 +-
 .../api/persistencemanager/OptimisticFailure.java  |  16 +-
 .../jdo/tck/api/persistencemanager/ThreadSafe.java |  18 +-
 ...TransactionalInstanceRetainsValuesAtCommit.java |   5 +-
 ...llingEvictAllWithCollectionContainingNulls.java |   5 +-
 ...ingRefreshAllWithCollectionContainingNulls.java |   5 +-
 .../cache/EvictAllWithNoParameters.java            |   4 +-
 .../EvictingCollectionOfInstancesSideEffects.java  |  14 +-
 .../cache/EvictingWithRestoreValuesFalse.java      |   1 -
 .../cache/EvictingWithRetainValuesFalse.java       |   1 -
 .../PassingNullToEvictAllThrowsException.java      |   2 +-
 .../PassingNullToRefreshAllThrowsException.java    |   2 +-
 .../cache/RefreshAllNoParameterSideEffects.java    |   7 +-
 .../cache/RefreshAllSideEffects.java               |  29 +-
 .../cache/RefreshSideEffects.java                  |  12 +-
 .../tck/api/persistencemanager/cache/Retrieve.java |   6 +-
 .../persistencemanager/close/AutoCloseable.java    |   4 +-
 .../close/CloseWithActiveTxRollsBack.java          |   1 -
 .../detach/CopyOnAttachFalse.java                  |   6 +-
 .../detach/DetachAccessUnloadedField.java          |   8 +-
 .../detach/DetachAllOnCommit.java                  |  13 -
 .../persistencemanager/detach/DetachAttach.java    |  13 +-
 .../detach/DetachAttachDirty.java                  |  13 +-
 .../api/persistencemanager/detach/DetachCopy.java  |  16 +-
 .../persistencemanager/detach/DetachSerialize.java |   7 +-
 .../api/persistencemanager/detach/DetachTest.java  |  10 +-
 .../detach/DetachUndetachable.java                 |   8 +-
 .../detach/SetDetachAllOnCommit.java               |   3 +-
 ...WithInstancesMadePersistentViaReachability.java |  23 +-
 .../extent/GetExtentWithNoSubclasses.java          |  20 +-
 .../extent/GetExtentWithSubclasses.java            |  15 +-
 .../fetchplan/AbstractFetchPlanTest.java           |  17 +-
 .../fetchplan/FetchPlanInterface.java              |  60 ++-
 .../fetchplan/FetchPlanIsCopy.java                 |   6 +-
 .../fetchplan/FetchPlanMakeTransient.java          |   4 +-
 .../fetchplan/FetchPlanQuery.java                  |   5 +-
 .../fetchplan/FetchPlanRefresh.java                |   3 +-
 .../fetchplan/FetchPlanRetrieve.java               |   3 +-
 ...etObjectByIdNoValidationInstanceNotInCache.java |   2 +-
 .../getobject/GetObjectIdClass.java                |   4 +-
 ...assForAbstractOrNonPersistenceCapableClass.java |   4 +-
 .../GetObjectIdForPersistentInterface.java         |   6 +-
 .../getobject/GetObjectsById.java                  |  27 +-
 .../lifecycle/MakeNontransactionalAllFails.java    |   5 +-
 .../MakeNontransactionalDirtyInstance.java         |  26 +-
 .../lifecycle/MakeNontransactionalIsImmediate.java |  19 +-
 ...akeNontransactionalPersistentCleanInstance.java |  32 +-
 ...MakeNontransactionalTransientCleanInstance.java |  34 +-
 .../lifecycle/MakePersistent.java                  |   9 +-
 .../lifecycle/MakePersistentAllFails.java          |   5 +-
 .../lifecycle/MakePersistentAssignsObjectId.java   |  14 +-
 ...InstanceManagedByAnotherPersistenceManager.java |   5 +-
 ...PersistentHasNoEffectOnPersistentInstances.java |   5 +-
 .../lifecycle/MakeTransactional.java               |  22 +-
 ...ctionalANontransactionalPersistentInstance.java |  11 +-
 .../lifecycle/MakeTransactionalAllFails.java       |   5 +-
 .../lifecycle/MakeTransactionalIsImmediate.java    |  22 +-
 ...eTransactionalPriorToTransactionRolledback.java |   4 +-
 ...keTransactionalWithinTransactionRolledback.java |   5 +-
 .../lifecycle/MakeTransient.java                   |  15 +-
 .../lifecycle/MakeTransientAllFails.java           |   4 +-
 .../MakeTransientCausesLossOfIdentity.java         |   5 +-
 .../MakeTransientFailsWithDirtyInstance.java       |   4 +-
 .../MakeTransientFieldsPreservedUnchanged.java     |  14 +-
 ...keTransientHasNoEffectOnTransientInstances.java |   4 +-
 .../MakeTransientNotSubjectToRollback.java         |   5 +-
 .../nullargs/DeletePersistentNullArgs.java         |  12 +-
 .../nullargs/DetachCopyNullArgs.java               |  12 +-
 .../persistencemanager/nullargs/EvictNullArgs.java |  12 +-
 .../nullargs/MakeNontransactionalNullArgs.java     |  12 +-
 .../nullargs/MakePersistentNullArgs.java           |  12 +-
 .../nullargs/MakeTransactionalNullArgs.java        |  12 +-
 .../nullargs/MakeTransientNullArgs.java            |  12 +-
 .../nullargs/PersistenceManagerNullsTest.java      |  68 ++-
 .../nullargs/RefreshNullArgs.java                  |  12 +-
 .../nullargs/RetrieveNullArgs.java                 |  12 +-
 .../nullargs/RetrieveWithFetchPlanNullArgs.java    |  13 +-
 .../persistencemanagerfactory/AbstractGetPMF.java  |  24 +-
 .../AfterCloseGetPMThrowsException.java            |   2 +-
 .../AfterCloseSetMethodsThrowException.java        |  54 +--
 ...erGetPersistenceManagerNoSetMethodsSucceed.java |  41 +-
 .../tck/api/persistencemanagerfactory/Close.java   |  18 +-
 .../CloseFailsIfTransactionActive.java             |  21 +-
 ...seWithoutPermissionThrowsSecurityException.java |   3 +-
 .../GetManagedClasses.java                         |   3 +-
 .../persistencemanagerfactory/GetPMFByStream.java  |   1 +
 .../GetPMFByStreamAndClassLoader.java              |   1 +
 .../GetPersistenceManagerForUser.java              |   1 +
 .../persistencemanagerfactory/GetProperties.java   |   2 +-
 .../SetConnectionPassword.java                     |   1 +
 .../SetConnectionURL.java                          |   1 +
 .../SetConnectionUserName.java                     |   1 +
 .../persistencemanagerfactory/SetIgnoreCache.java  |   3 +-
 .../SetMultithreaded.java                          |   6 +-
 .../SetNonTransactionalRead.java                   |   3 +-
 .../SetNonTransactionalWrite.java                  |   3 +-
 .../persistencemanagerfactory/SetOptimistic.java   |   1 +
 .../api/persistencemanagerfactory/SetReadOnly.java |   3 +-
 .../persistencemanagerfactory/SetRetainValues.java |   3 +-
 .../SetTransactionIsolationLevel.java              |   9 +-
 .../SupportedOptions.java                          |   7 +-
 .../config/JDOConfigListener.java                  |   4 +-
 .../config/Jdoconfig.java                          |   3 +-
 .../config/Persistence.java                        |   2 +-
 .../config/StoreListenerGetInstance.java           |   2 +-
 .../config/ThrowOnUnknownStandardProperties.java   |   6 +-
 .../metadata/GetMetadataTest.java                  |   2 +-
 .../apache/jdo/tck/enhancement/EnhancerTest.java   |   6 +-
 .../org/apache/jdo/tck/extents/AutoCloseable.java  |   9 +-
 .../java/org/apache/jdo/tck/extents/CloseAll.java  |  10 +-
 .../CloseOfExtentIteratorIsIteratorSpecific.java   |   9 +-
 .../org/apache/jdo/tck/extents/ExtentTest.java     |  50 +-
 .../apache/jdo/tck/extents/GetCandidateClass.java  |   7 +-
 .../jdo/tck/extents/GetPersistenceManager.java     |   2 +-
 .../apache/jdo/tck/extents/HasSubclassesFalse.java |   2 +-
 .../apache/jdo/tck/extents/HasSubclassesTrue.java  |   2 +-
 ...nstancesDeletedPriorToIterationNotReturned.java |  44 +-
 ...InstancesPersistedPriorToIterationReturned.java |  42 +-
 .../IteratorHasNextFalseAfterExtentClose.java      |  70 ++-
 .../jdo/tck/extents/IteratorMutatingMethods.java   |   6 +-
 .../tck/extents/IteratorNextAfterExtentClose.java  |  14 +-
 .../extents/IteratorNextAfterExtentCloseAll.java   |  12 +-
 .../java/org/apache/jdo/tck/extents/Iterators.java |   4 +-
 ...ltiplePMsReturnInstancesRepresentingSamePC.java |   4 +-
 .../NontransactionalWriteDatastoreCommit.java      |   9 +-
 ...ntransactionalWriteDatastoreCommitConflict.java |   9 +-
 .../NontransactionalWriteDatastoreRollback.java    |   9 +-
 .../NontransactionalWriteOptimisticCommit.java     |   9 +-
 ...transactionalWriteOptimisticCommitConflict.java |   9 +-
 .../NontransactionalWriteOptimisticRollback.java   |   9 +-
 .../tck/lifecycle/NontransactionalWriteTest.java   |  12 +-
 .../tck/lifecycle/NontransactionalWriteThrows.java |   5 -
 ...tIdNotModifiedWhenObjectIdInstanceModified.java |  10 +-
 .../PMReturnsIdenticalInstancesForEqualObjIds.java |   4 +-
 .../PMsCanSharePCClassesButNotPCInstances.java     |  25 +-
 .../apache/jdo/tck/lifecycle/StateTransitions.java | 272 ++++-------
 .../lifecycle/StateTransitionsReturnedObjects.java |  27 +-
 .../jdo/tck/mapping/AbstractRelationshipTest.java  |  20 +-
 .../apache/jdo/tck/mapping/CompletenessTest.java   |  12 +-
 .../jdo/tck/mapping/CompletenessTestJPA.java       |  12 +-
 .../jdo/tck/mapping/CompletenessTestList.java      |  12 +-
 .../jdo/tck/mapping/CompletenessTestMap.java       |  12 +-
 .../jdo/tck/mapping/CompletenessTestOrder.java     |  12 +-
 .../mapping/Relationship1To1AllRelationships.java  |   6 +-
 .../mapping/Relationship1To1NoRelationships.java   |   6 +-
 .../Relationship1ToManyAllRelationships.java       |  11 +-
 .../Relationship1ToManyNoRelationships.java        |  11 +-
 .../RelationshipManyToManyAllRelationships.java    |  14 +-
 .../RelationshipManyToManyNoRelationships.java     |  14 +-
 .../tck/mapping/RelationshipNegative1To1Test.java  |   2 +-
 .../mapping/RelationshipNegative1ToManyTest.java   |   2 +-
 .../tck/models/embedded/EmbeddedInheritance.java   |   6 +-
 .../SecondClassObjectsTrackTheirChanges.java       |   3 +-
 .../models/fieldtypes/TestArrayCollections.java    |  17 +-
 .../fieldtypes/TestArrayListCollections.java       |  22 +-
 .../fieldtypes/TestCollectionCollections.java      |  16 +-
 .../models/fieldtypes/TestFieldsOfBigDecimal.java  |   2 +-
 .../models/fieldtypes/TestFieldsOfBigInteger.java  |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfBoolean.java |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfByte.java    |   6 +-
 .../models/fieldtypes/TestFieldsOfCharacter.java   |   6 +-
 .../tck/models/fieldtypes/TestFieldsOfDate.java    |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfDouble.java  |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfFloat.java   |   6 +-
 .../tck/models/fieldtypes/TestFieldsOfInteger.java |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfLocale.java  |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfLong.java    |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfObject.java  |   4 +-
 .../fieldtypes/TestFieldsOfPrimitivedouble.java    |   8 +-
 .../tck/models/fieldtypes/TestFieldsOfShort.java   |   2 +-
 .../models/fieldtypes/TestFieldsOfSimpleEnum.java  |   2 +-
 .../tck/models/fieldtypes/TestFieldsOfString.java  |   6 +-
 .../TestHashMapStringKeyCollections.java           |  44 +-
 .../TestHashMapStringValueCollections.java         |  47 +-
 .../models/fieldtypes/TestHashSetCollections.java  |  24 +-
 .../TestHashtableStringKeyCollections.java         |  44 +-
 .../TestHashtableStringValueCollections.java       |  47 +-
 .../fieldtypes/TestLinkedListCollections.java      |  20 +-
 .../tck/models/fieldtypes/TestListCollections.java |  14 +-
 .../fieldtypes/TestMapStringKeyCollections.java    |  43 +-
 .../fieldtypes/TestMapStringValueCollections.java  |  47 +-
 .../tck/models/fieldtypes/TestSetCollections.java  |  24 +-
 .../TestTreeMapStringKeyCollections.java           |  44 +-
 .../TestTreeMapStringValueCollections.java         |  47 +-
 .../models/fieldtypes/TestTreeSetCollections.java  |  18 +-
 .../apache/jdo/tck/models/fieldtypes/TestUtil.java |  91 ++--
 .../models/fieldtypes/TestVectorCollections.java   |  11 +-
 .../inheritance/FieldWithSameNameInSuperclass.java |  28 +-
 ...rsistentFieldsAreNonPersistentInSubclasses.java |  12 +-
 .../inheritance/NonpersistentSuperClass.java       |  28 +-
 ...ceCapableFlexibilityInInheritanceHierarchy.java |  28 +-
 .../PersistentFieldsArePersistentInSubClasses.java |  24 +-
 .../jdo/tck/models/inheritance/TestParts.java      |   6 +-
 ...actionalFieldsAreTransactionalInSubclasses.java |  12 +-
 .../org/apache/jdo/tck/pc/building/Kitchen.java    |   5 +
 .../jdo/tck/pc/building/MultifunctionOven.java     |   3 +
 .../java/org/apache/jdo/tck/pc/building/Oven.java  |   2 +
 .../org/apache/jdo/tck/pc/company/Address.java     |  41 +-
 .../org/apache/jdo/tck/pc/company/Company.java     |  64 +--
 .../apache/jdo/tck/pc/company/CompanyFactory.java  |   2 +-
 .../tck/pc/company/CompanyFactoryAbstractImpl.java |   8 +-
 .../CompanyFactoryAnnotatedAbstractDelegator.java  |  25 +-
 .../pc/company/CompanyFactoryConcreteClass.java    |   4 +-
 .../tck/pc/company/CompanyFactoryNewInstance.java  |  18 +-
 .../jdo/tck/pc/company/CompanyFactoryPMClass.java  |  22 +-
 .../tck/pc/company/CompanyFactoryPMInterface.java  |   4 +-
 .../jdo/tck/pc/company/CompanyFactoryRegistry.java |  15 +-
 .../jdo/tck/pc/company/CompanyModelReader.java     |  35 +-
 .../apache/jdo/tck/pc/company/DentalInsurance.java |  10 +-
 .../org/apache/jdo/tck/pc/company/Department.java  |  71 +--
 .../org/apache/jdo/tck/pc/company/Employee.java    |  61 +--
 .../jdo/tck/pc/company/FullTimeEmployee.java       |   9 +-
 .../org/apache/jdo/tck/pc/company/ICompany.java    |   4 +-
 .../org/apache/jdo/tck/pc/company/IDepartment.java |  12 +-
 .../org/apache/jdo/tck/pc/company/IEmployee.java   |  16 +-
 .../org/apache/jdo/tck/pc/company/IPerson.java     |   4 +-
 .../org/apache/jdo/tck/pc/company/IProject.java    |   8 +-
 .../org/apache/jdo/tck/pc/company/Insurance.java   |  43 +-
 .../jdo/tck/pc/company/MedicalInsurance.java       |  14 +-
 .../org/apache/jdo/tck/pc/company/MeetingRoom.java |  41 +-
 .../org/apache/jdo/tck/pc/company/PICompany.java   |   4 +-
 .../apache/jdo/tck/pc/company/PIDepartment.java    |   8 +-
 .../org/apache/jdo/tck/pc/company/PIEmployee.java  |  16 +-
 .../org/apache/jdo/tck/pc/company/PIPerson.java    |   4 +-
 .../org/apache/jdo/tck/pc/company/PIProject.java   |   8 +-
 .../jdo/tck/pc/company/PartTimeEmployee.java       |  11 +-
 .../java/org/apache/jdo/tck/pc/company/Person.java |  65 +--
 .../org/apache/jdo/tck/pc/company/Project.java     |  69 +--
 .../CompanyFactoryAnnotatedFCAppConcrete.java      |  24 +-
 .../CompanyFactoryAnnotatedFCAppPM.java            |  24 +-
 .../CompanyFactoryAnnotatedFCDSConcrete.java       |  24 +-
 .../CompanyFactoryAnnotatedFCDSPM.java             |  24 +-
 .../CompanyFactoryAnnotatedPMFieldClass.java       |  26 +-
 .../tck/pc/companyAnnotatedFC/FCAppAddress.java    |  43 +-
 .../tck/pc/companyAnnotatedFC/FCAppCompany.java    |  42 +-
 .../companyAnnotatedFC/FCAppDentalInsurance.java   |   9 +-
 .../tck/pc/companyAnnotatedFC/FCAppDepartment.java |  68 +--
 .../tck/pc/companyAnnotatedFC/FCAppEmployee.java   |  57 ++-
 .../companyAnnotatedFC/FCAppFullTimeEmployee.java  |  11 +-
 .../tck/pc/companyAnnotatedFC/FCAppInsurance.java  |  45 +-
 .../companyAnnotatedFC/FCAppMedicalInsurance.java  |  11 +-
 .../pc/companyAnnotatedFC/FCAppMeetingRoom.java    |  41 +-
 .../companyAnnotatedFC/FCAppPartTimeEmployee.java  |  10 +-
 .../jdo/tck/pc/companyAnnotatedFC/FCAppPerson.java |  67 +--
 .../tck/pc/companyAnnotatedFC/FCAppProject.java    |  64 +--
 .../jdo/tck/pc/companyAnnotatedFC/FCDSAddress.java |  43 +-
 .../jdo/tck/pc/companyAnnotatedFC/FCDSCompany.java |  63 +--
 .../pc/companyAnnotatedFC/FCDSDentalInsurance.java |   9 +-
 .../tck/pc/companyAnnotatedFC/FCDSDepartment.java  |  68 +--
 .../tck/pc/companyAnnotatedFC/FCDSEmployee.java    |  54 ++-
 .../companyAnnotatedFC/FCDSFullTimeEmployee.java   |   9 +-
 .../tck/pc/companyAnnotatedFC/FCDSInsurance.java   |  45 +-
 .../companyAnnotatedFC/FCDSMedicalInsurance.java   |   9 +-
 .../tck/pc/companyAnnotatedFC/FCDSMeetingRoom.java |  41 +-
 .../companyAnnotatedFC/FCDSPartTimeEmployee.java   |   9 +-
 .../jdo/tck/pc/companyAnnotatedFC/FCDSPerson.java  |  66 +--
 .../jdo/tck/pc/companyAnnotatedFC/FCDSProject.java |  65 +--
 .../CompanyFactoryAnnotatedJPAAppConcrete.java     |  24 +-
 .../CompanyFactoryAnnotatedJPAAppPM.java           |  24 +-
 .../CompanyFactoryAnnotatedPMFieldClassJPA.java    |  26 +-
 .../tck/pc/companyAnnotatedJPA/JPAAppAddress.java  |  43 +-
 .../tck/pc/companyAnnotatedJPA/JPAAppCompany.java  |  67 +--
 .../companyAnnotatedJPA/JPAAppDentalInsurance.java |   9 +-
 .../pc/companyAnnotatedJPA/JPAAppDepartment.java   |  69 +--
 .../tck/pc/companyAnnotatedJPA/JPAAppEmployee.java |  58 +--
 .../JPAAppFullTimeEmployee.java                    |  12 +-
 .../pc/companyAnnotatedJPA/JPAAppInsurance.java    |  46 +-
 .../JPAAppMedicalInsurance.java                    |  11 +-
 .../JPAAppPartTimeEmployee.java                    |  10 +-
 .../tck/pc/companyAnnotatedJPA/JPAAppPerson.java   |  91 ++--
 .../pc/companyAnnotatedJPA/JPAAppPhoneNumber.java  |  18 +-
 .../tck/pc/companyAnnotatedJPA/JPAAppProject.java  |  64 +--
 .../CompanyFactoryAnnotatedPCAppConcrete.java      |  24 +-
 .../CompanyFactoryAnnotatedPCAppPM.java            |  24 +-
 .../CompanyFactoryAnnotatedPCDSConcrete.java       |  24 +-
 .../CompanyFactoryAnnotatedPCDSPM.java             |  24 +-
 .../tck/pc/companyAnnotatedPC/PCAppAddress.java    |  43 +-
 .../tck/pc/companyAnnotatedPC/PCAppCompany.java    |  64 +--
 .../companyAnnotatedPC/PCAppDentalInsurance.java   |   9 +-
 .../tck/pc/companyAnnotatedPC/PCAppDepartment.java |  69 +--
 .../tck/pc/companyAnnotatedPC/PCAppEmployee.java   |  54 ++-
 .../companyAnnotatedPC/PCAppFullTimeEmployee.java  |  11 +-
 .../tck/pc/companyAnnotatedPC/PCAppInsurance.java  |  45 +-
 .../companyAnnotatedPC/PCAppMedicalInsurance.java  |  11 +-
 .../companyAnnotatedPC/PCAppPartTimeEmployee.java  |  10 +-
 .../jdo/tck/pc/companyAnnotatedPC/PCAppPerson.java |  69 +--
 .../tck/pc/companyAnnotatedPC/PCAppProject.java    |  69 +--
 .../jdo/tck/pc/companyAnnotatedPC/PCDSAddress.java |  43 +-
 .../jdo/tck/pc/companyAnnotatedPC/PCDSCompany.java |  64 +--
 .../pc/companyAnnotatedPC/PCDSDentalInsurance.java |   9 +-
 .../tck/pc/companyAnnotatedPC/PCDSDepartment.java  |  69 +--
 .../tck/pc/companyAnnotatedPC/PCDSEmployee.java    |  55 ++-
 .../companyAnnotatedPC/PCDSFullTimeEmployee.java   |   9 +-
 .../tck/pc/companyAnnotatedPC/PCDSInsurance.java   |  45 +-
 .../companyAnnotatedPC/PCDSMedicalInsurance.java   |   9 +-
 .../companyAnnotatedPC/PCDSPartTimeEmployee.java   |   9 +-
 .../jdo/tck/pc/companyAnnotatedPC/PCDSPerson.java  |  68 +--
 .../jdo/tck/pc/companyAnnotatedPC/PCDSProject.java |  66 +--
 .../CompanyFactoryAnnotatedPIAppPM.java            |  24 +-
 .../CompanyFactoryAnnotatedPIDSPM.java             |  24 +-
 .../CompanyFactoryAnnotatedPMInterface.java        |  22 +-
 .../tck/pc/companyAnnotatedPI/PIAppCompany.java    |   5 +-
 .../tck/pc/companyAnnotatedPI/PIAppDepartment.java |   8 +-
 .../tck/pc/companyAnnotatedPI/PIAppEmployee.java   |  17 +-
 .../jdo/tck/pc/companyAnnotatedPI/PIAppPerson.java |   4 +-
 .../tck/pc/companyAnnotatedPI/PIAppProject.java    |   9 +-
 .../jdo/tck/pc/companyAnnotatedPI/PIDSCompany.java |   5 +-
 .../tck/pc/companyAnnotatedPI/PIDSDepartment.java  |   8 +-
 .../tck/pc/companyAnnotatedPI/PIDSEmployee.java    |  17 +-
 .../jdo/tck/pc/companyAnnotatedPI/PIDSPerson.java  |   4 +-
 .../jdo/tck/pc/companyAnnotatedPI/PIDSProject.java |   9 +-
 .../jdo/tck/pc/companyListWithoutJoin/Company.java |  60 +--
 .../pc/companyListWithoutJoin/CompanyFactory.java  |   4 +-
 .../CompanyFactoryAbstractImpl.java                |   6 +-
 .../CompanyFactoryConcreteClass.java               |   6 +-
 .../CompanyFactoryPMClass.java                     |  12 +-
 .../CompanyFactoryPMInterface.java                 |  12 +-
 .../CompanyFactoryRegistry.java                    |  15 +-
 .../companyListWithoutJoin/CompanyModelReader.java |  23 +-
 .../tck/pc/companyListWithoutJoin/Department.java  |  55 +--
 .../tck/pc/companyListWithoutJoin/Employee.java    |  34 +-
 .../companyListWithoutJoin/FullTimeEmployee.java   |  10 +-
 .../tck/pc/companyListWithoutJoin/ICompany.java    |   4 +-
 .../tck/pc/companyListWithoutJoin/IDepartment.java |   4 +-
 .../tck/pc/companyListWithoutJoin/IEmployee.java   |   8 +-
 .../companyListWithoutJoin/PartTimeEmployee.java   |  10 +-
 .../jdo/tck/pc/companyListWithoutJoin/Person.java  |  51 +-
 .../jdo/tck/pc/companyMapWithoutJoin/Company.java  |  60 +--
 .../pc/companyMapWithoutJoin/CompanyFactory.java   |   4 +-
 .../CompanyFactoryAbstractImpl.java                |   6 +-
 .../CompanyFactoryConcreteClass.java               |   6 +-
 .../CompanyFactoryPMClass.java                     |  12 +-
 .../CompanyFactoryPMInterface.java                 |  12 +-
 .../CompanyFactoryRegistry.java                    |  15 +-
 .../companyMapWithoutJoin/CompanyModelReader.java  |  23 +-
 .../tck/pc/companyMapWithoutJoin/Department.java   |  56 +--
 .../jdo/tck/pc/companyMapWithoutJoin/Employee.java |  35 +-
 .../pc/companyMapWithoutJoin/FullTimeEmployee.java |   5 +-
 .../jdo/tck/pc/companyMapWithoutJoin/ICompany.java |   4 +-
 .../tck/pc/companyMapWithoutJoin/IDepartment.java  |   4 +-
 .../tck/pc/companyMapWithoutJoin/IEmployee.java    |   8 +-
 .../jdo/tck/pc/companyMapWithoutJoin/IPerson.java  |   1 -
 .../pc/companyMapWithoutJoin/PartTimeEmployee.java |  10 +-
 .../jdo/tck/pc/companyMapWithoutJoin/Person.java   |  53 +--
 .../org/apache/jdo/tck/pc/fieldtypes/AllTypes.java |  25 +-
 .../jdo/tck/pc/fieldtypes/ArrayCollections.java    |   9 +-
 .../tck/pc/fieldtypes/ArrayListCollections.java    | 109 +++--
 .../tck/pc/fieldtypes/CollectionCollections.java   | 101 ++--
 .../jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.java  |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfBigInteger.java  |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfBoolean.java     |   5 +-
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfByte.java |   4 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfCharacter.java   |   5 +-
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfDate.java |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfDouble.java      |  37 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfFloat.java       |   4 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfInteger.java     |  37 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfLocale.java      |   5 +-
 .../apache/jdo/tck/pc/fieldtypes/FieldsOfLong.java |  37 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfObject.java      |   5 +-
 .../pc/fieldtypes/FieldsOfPrimitiveboolean.java    |   4 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitivebyte.java   |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitivechar.java   |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitivedouble.java |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitivefloat.java  |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitiveint.java    |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitivelong.java   |   5 +-
 .../tck/pc/fieldtypes/FieldsOfPrimitiveshort.java  |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfShort.java       |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfSimpleClass.java |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfSimpleEnum.java  |   5 +-
 .../tck/pc/fieldtypes/FieldsOfSimpleInterface.java |   5 +-
 .../jdo/tck/pc/fieldtypes/FieldsOfString.java      |  37 +-
 .../pc/fieldtypes/HashMapStringKeyCollections.java | 211 ++++----
 .../fieldtypes/HashMapStringValueCollections.java  | 196 ++++----
 .../jdo/tck/pc/fieldtypes/HashSetCollections.java  | 101 ++--
 .../fieldtypes/HashtableStringKeyCollections.java  | 211 ++++----
 .../HashtableStringValueCollections.java           | 196 ++++----
 .../tck/pc/fieldtypes/LinkedListCollections.java   | 101 ++--
 .../jdo/tck/pc/fieldtypes/ListCollections.java     | 101 ++--
 .../tck/pc/fieldtypes/MapStringKeyCollections.java | 239 +++++-----
 .../pc/fieldtypes/MapStringValueCollections.java   | 222 ++++-----
 .../jdo/tck/pc/fieldtypes/SetCollections.java      | 101 ++--
 .../apache/jdo/tck/pc/fieldtypes/SimpleClass.java  |  33 +-
 .../apache/jdo/tck/pc/fieldtypes/SimpleEnum.java   |  18 +-
 .../jdo/tck/pc/fieldtypes/SimpleInterface.java     |   8 +-
 .../pc/fieldtypes/TreeMapStringKeyCollections.java | 211 ++++----
 .../fieldtypes/TreeMapStringValueCollections.java  | 196 ++++----
 .../jdo/tck/pc/fieldtypes/TreeSetCollections.java  |  92 ++--
 .../jdo/tck/pc/fieldtypes/VectorCollections.java   | 101 ++--
 .../apache/jdo/tck/pc/inheritance/AllPersist.java  |   3 +
 .../jdo/tck/pc/inheritance/FieldSameName.java      |   3 +
 .../jdo/tck/pc/inheritance/TopNonPersistB.java     |   5 +-
 .../apache/jdo/tck/pc/inheritance/TopPersist.java  |   5 +-
 .../instancecallbacks/InstanceCallbackClass.java   |  63 ++-
 .../InstanceCallbackNonPersistFdsClass.java        |  36 +-
 .../jdo/tck/pc/lifecycle/StateTransitionObj.java   |  14 +-
 .../org/apache/jdo/tck/pc/mylib/MylibReader.java   |  14 +-
 .../java/org/apache/jdo/tck/pc/mylib/PCClass.java  |   8 +-
 .../java/org/apache/jdo/tck/pc/mylib/PCPoint.java  |   8 +-
 .../java/org/apache/jdo/tck/pc/mylib/PCPoint2.java |   7 +-
 .../java/org/apache/jdo/tck/pc/mylib/PCRect.java   |   3 +
 .../apache/jdo/tck/pc/mylib/PrimitiveTypes.java    |  10 +-
 .../apache/jdo/tck/pc/mylib/VersionedPCPoint.java  |  16 +-
 .../org/apache/jdo/tck/pc/newInstance/Address.java |  14 +-
 .../apache/jdo/tck/pc/newInstance/Address_bad.java |  14 +-
 .../java/org/apache/jdo/tck/pc/order/Order.java    |  58 +--
 .../org/apache/jdo/tck/pc/order/OrderFactory.java  |   7 +-
 .../jdo/tck/pc/order/OrderFactoryAbstractImpl.java |   8 +-
 .../tck/pc/order/OrderFactoryConcreteClass.java    |   7 +-
 .../jdo/tck/pc/order/OrderFactoryPMClass.java      |   9 +-
 .../jdo/tck/pc/order/OrderFactoryPMInterface.java  |   9 +-
 .../jdo/tck/pc/order/OrderFactoryRegistry.java     |  13 +-
 .../org/apache/jdo/tck/pc/order/OrderItem.java     |  44 +-
 .../apache/jdo/tck/pc/order/OrderModelReader.java  |  15 +-
 .../apache/jdo/tck/pc/query/LocalDateSample.java   |   2 +
 .../jdo/tck/pc/query/LocalDateTimeSample.java      |   2 +
 .../apache/jdo/tck/pc/query/LocalTimeSample.java   |   2 +
 .../org/apache/jdo/tck/pc/query/MathSample.java    |   2 +
 .../jdo/tck/pc/query/NamedQueriesSample.java       |   3 +
 .../org/apache/jdo/tck/pc/query/TimeSample.java    |   3 +
 .../org/apache/jdo/tck/pc/shoppingcart/Cart.java   |  11 +-
 .../apache/jdo/tck/pc/shoppingcart/CartEntry.java  |   7 +-
 .../apache/jdo/tck/pc/shoppingcart/Product.java    |   5 +
 .../jdo/tck/pc/shoppingcart/Undetachable.java      |   7 +-
 .../AbstractPCPointSingleField.java                |  10 +-
 .../jdo/tck/pc/singlefieldidentity/Employee.java   |   9 +-
 .../pc/singlefieldidentity/FullTimeEmployee.java   |   4 +-
 .../PCPointSingleFieldByte.java                    |   4 +-
 .../PCPointSingleFieldCharacter.java               |   7 +-
 .../PCPointSingleFieldDate.java                    |   5 +-
 .../PCPointSingleFieldInteger.java                 |   7 +-
 .../PCPointSingleFieldLong.java                    |   7 +-
 .../PCPointSingleFieldPrimitivebyte.java           |   7 +-
 .../PCPointSingleFieldPrimitivechar.java           |   7 +-
 .../PCPointSingleFieldPrimitiveint.java            |   7 +-
 .../PCPointSingleFieldPrimitivelong.java           |   7 +-
 .../PCPointSingleFieldPrimitiveshort.java          |   7 +-
 .../PCPointSingleFieldShort.java                   |   7 +-
 .../PCPointSingleFieldString.java                  |   7 +-
 .../pc/singlefieldidentity/PartTimeEmployee.java   |   5 +-
 .../jdo/tck/pc/singlefieldidentity/Person.java     |  14 +-
 .../apache/jdo/tck/query/QueryElementHolder.java   |  73 +--
 .../java/org/apache/jdo/tck/query/QueryTest.java   | 236 +++++----
 .../apache/jdo/tck/query/api/AutoCloseable.java    |  20 +-
 .../org/apache/jdo/tck/query/api/ChangeQuery.java  |   5 +-
 .../java/org/apache/jdo/tck/query/api/Close.java   |  23 +-
 .../org/apache/jdo/tck/query/api/CloseAll.java     |  11 +-
 .../org/apache/jdo/tck/query/api/CompileQuery.java |   8 +-
 .../apache/jdo/tck/query/api/DeclareImports.java   |  16 +-
 .../jdo/tck/query/api/DeclareParameters.java       |  22 +-
 .../apache/jdo/tck/query/api/DeclareVariables.java |  10 +-
 .../org/apache/jdo/tck/query/api/ExecuteQuery.java |  30 +-
 .../jdo/tck/query/api/ExecuteQueryWithArray.java   |  15 +-
 .../jdo/tck/query/api/ExecuteQueryWithMap.java     |  20 +-
 .../org/apache/jdo/tck/query/api/GetFetchPlan.java |  24 +-
 .../apache/jdo/tck/query/api/GetIgnoreCache.java   |   4 +-
 .../jdo/tck/query/api/GetPersistenceManager.java   |   6 +-
 ...sistenceManagerFromRestoredSerializedQuery.java |  17 +-
 .../jdo/tck/query/api/InvalidNamedQuery.java       |   2 +-
 .../jdo/tck/query/api/MetadataSearchOrder.java     |  23 +-
 .../jdo/tck/query/api/NamedQueryNotFound.java      |   2 +-
 .../query/api/NamedQueryRepeatableAnnotations.java |   6 +-
 .../apache/jdo/tck/query/api/NewNamedQuery.java    |   7 +-
 ...ryFromExistingQueryBoundToPMFromSameVendor.java |  39 +-
 .../api/NewQueryFromRestoredSerializedQuery.java   |  18 +-
 .../jdo/tck/query/api/NewQuerySingleString.java    |  38 +-
 .../tck/query/api/NewQueryWithCandidateClass.java  |   3 +-
 .../NewQueryWithCandidateClassAndCollection.java   |   3 +-
 .../api/NewQueryWithCandidateClassAndExtent.java   |   7 +-
 .../api/NewQueryWithCandidateClassAndFilter.java   |   7 +-
 ...NewQueryWithCandidateClassCollectionFilter.java |   5 +-
 .../jdo/tck/query/api/NewQueryWithExtent.java      |   3 +-
 .../tck/query/api/NewQueryWithExtentAndFilter.java |   7 +-
 .../api/NewQueryWithSpecifiedLanguageAndQuery.java |  19 +-
 .../org/apache/jdo/tck/query/api/QueryCancel.java  |  26 +-
 .../apache/jdo/tck/query/api/QueryExtentions.java  |  17 +-
 .../apache/jdo/tck/query/api/SampleQueries.java    | 137 ++++--
 .../apache/jdo/tck/query/api/SaveAsNamedQuery.java |  14 +-
 .../jdo/tck/query/api/SetCandidateCollection.java  |  16 +-
 .../jdo/tck/query/api/SetCandidateExtent.java      |  16 +-
 .../org/apache/jdo/tck/query/api/SetFilter.java    |   9 +-
 .../org/apache/jdo/tck/query/api/SetGrouping.java  |   8 +-
 .../apache/jdo/tck/query/api/SetIgnoreCache.java   |   6 +-
 .../org/apache/jdo/tck/query/api/SetOrdering.java  |  14 +-
 .../org/apache/jdo/tck/query/api/SetRange.java     |   9 +-
 .../org/apache/jdo/tck/query/api/SetResult.java    |  12 +-
 .../apache/jdo/tck/query/api/SetResultClass.java   |   5 +-
 .../org/apache/jdo/tck/query/api/SetUnique.java    |  11 +-
 .../tck/query/api/SetterReplacePreviousValues.java |  97 ++--
 .../jdo/tck/query/api/SingleStringQuery.java       |  15 +-
 .../jdo/tck/query/api/UnmodifiableQuery.java       |  52 +-
 .../jdo/tck/query/delete/DeleteCallback.java       | 155 +++---
 .../jdo/tck/query/delete/DeletePersistentAll.java  |   8 +-
 .../jdo/tck/query/delete/DeleteQueryElements.java  | 239 +++++-----
 ...nmentPrePostIncrementDecrementNotSupported.java |   6 +-
 .../java/org/apache/jdo/tck/query/jdoql/Cast.java  |  12 +-
 .../query/jdoql/CharacterAndStringLiterals.java    |  75 ++-
 .../jdoql/ComparingCollectionFieldToNull.java      |   8 +-
 ...omparingPersistentAndNonPersistentInstance.java |  14 +-
 .../tck/query/jdoql/DenoteUniquenessInFilter.java  |  17 +-
 ...ExecuteQueryWhenPersistenceManagerIsClosed.java |   7 +-
 ...gMultipleQueriesSimultaneouslyIsThreadSafe.java |  42 +-
 ...eryWhenNoTransactionNoNontransactionalRead.java |   8 +-
 .../org/apache/jdo/tck/query/jdoql/Having.java     |  78 +--
 .../query/jdoql/IdentifiersEqualFieldNames.java    |  27 +-
 .../apache/jdo/tck/query/jdoql/IfElseInFilter.java | 111 +++--
 .../jdo/tck/query/jdoql/IgnoreCacheFalse.java      |  43 +-
 ...ctiveQueryInstanceInSamePersistenceManager.java |  11 +-
 .../tck/query/jdoql/MultipleIdenticalImports.java  |  20 +-
 .../tck/query/jdoql/NamespaceOfIdentifiers.java    |  15 +-
 .../query/jdoql/NavigationComparisonWithNull.java  |  74 ++-
 .../jdoql/NavigationThroughACollectionField.java   |   7 +-
 .../jdoql/NavigationThroughANullValuedField.java   |  22 +-
 ...NavigationThroughReferencesUsesDotOperator.java |  25 +-
 .../apache/jdo/tck/query/jdoql/NegativeRange.java  |   9 +-
 .../jdoql/NullCollectionsAndContainsMethod.java    |  18 +-
 .../tck/query/jdoql/NullCollectionsAndIsEmpty.java |   8 +-
 .../jdo/tck/query/jdoql/OrderingSpecification.java |  31 +-
 .../jdoql/ParenthesesMarkOperatorPrecedence.java   |  64 ++-
 .../apache/jdo/tck/query/jdoql/PositiveRange.java  |  25 +-
 .../jdo/tck/query/jdoql/QueryIsSerializable.java   |  26 +-
 .../jdoql/QueryResultPassedToAnotherQuery.java     |  35 +-
 .../jdo/tck/query/jdoql/QueryWithNoFilter.java     |  16 +-
 .../apache/jdo/tck/query/jdoql/RangeAsString.java  |  26 +-
 ...ializedQueryInstanceLosesAssociationWithPM.java |  13 +-
 .../query/jdoql/SeparateNamespaceForTypeNames.java |  15 +-
 .../jdoql/WhiteSpaceIsACharacterAndIgnored.java    |  19 +-
 .../query/jdoql/keywords/InvalidUseOfKeywords.java |  72 +--
 .../query/jdoql/keywords/KeywordsAsFieldNames.java |  72 +--
 .../jdo/tck/query/jdoql/keywords/SingleString.java |   3 +-
 .../ThisIsReservedWordForElementOfCollection.java  |   7 +-
 .../query/jdoql/keywords/UppercaseLowercase.java   |  12 +-
 .../keywords/UseOfThisToAcessHiddenField.java      |  21 +-
 .../tck/query/jdoql/methods/EnumMethodOrdinal.java |  12 +-
 .../query/jdoql/methods/EnumMethodToString.java    |  12 +-
 .../MethodsAndObjectConstructionNotSupported.java  |   9 +-
 .../query/jdoql/methods/StartsWithAndEndsWith.java |  10 +-
 .../jdoql/methods/SupportedCollectionMethods.java  |  34 +-
 .../query/jdoql/methods/SupportedDateMethods.java  |  14 +-
 .../jdoql/methods/SupportedJDOHelperMethods.java   |  55 ++-
 .../query/jdoql/methods/SupportedListMethods.java  |  13 +-
 .../jdoql/methods/SupportedLocalDateMethods.java   |   7 +-
 .../methods/SupportedLocalDateTimeMethods.java     |  13 +-
 .../jdoql/methods/SupportedLocalTimeMethods.java   |  13 +-
 .../query/jdoql/methods/SupportedMapMethods.java   |  32 +-
 .../query/jdoql/methods/SupportedMathMethods.java  | 245 +++++-----
 .../jdoql/methods/SupportedOptionalMethods.java    |  23 +-
 .../jdoql/methods/SupportedStringMethods.java      |  78 +--
 .../query/jdoql/methods/SupportedTimeMethods.java  |  29 +-
 .../tck/query/jdoql/operators/BinaryAddition.java  |  11 +-
 .../query/jdoql/operators/BinarySubtraction.java   |  13 +-
 .../jdoql/operators/BitwiseBinaryOperators.java    |  25 +-
 .../query/jdoql/operators/BitwiseComplement.java   |  14 +-
 .../query/jdoql/operators/BooleanLogicalAND.java   |  21 +-
 .../query/jdoql/operators/BooleanLogicalOR.java    |  27 +-
 .../tck/query/jdoql/operators/ComparisonTests.java |  71 ++-
 .../tck/query/jdoql/operators/ConditionalAND.java  |  19 +-
 .../tck/query/jdoql/operators/ConditionalOR.java   |  23 +-
 .../jdo/tck/query/jdoql/operators/Division.java    |  15 +-
 .../jdo/tck/query/jdoql/operators/Equality.java    | 393 +++++++--------
 ...dComparisonsBetweenDateFieldsAndParameters.java |  20 +-
 ...risonsBetweenPrimitivesAndWrapperInstances.java |  23 +-
 ...omparisonsBetweenStringFieldsAndParameters.java |  17 +-
 .../jdo/tck/query/jdoql/operators/GreaterThan.java | 374 +++++++--------
 .../query/jdoql/operators/GreaterThanOrEqual.java  | 378 +++++++--------
 .../jdo/tck/query/jdoql/operators/Instanceof.java  |  10 +-
 .../jdo/tck/query/jdoql/operators/LessThan.java    | 374 +++++++--------
 .../tck/query/jdoql/operators/LessThanOrEqual.java | 374 +++++++--------
 .../query/jdoql/operators/LogicalComplement.java   |  51 +-
 .../jdo/tck/query/jdoql/operators/Modulo.java      |  11 +-
 .../tck/query/jdoql/operators/Multiplication.java  |   7 +-
 .../jdo/tck/query/jdoql/operators/NotEquals.java   | 350 +++++++-------
 .../operators/PromotionOfNumericOperands.java      |   7 +-
 .../tck/query/jdoql/operators/SignInversion.java   |  11 +-
 .../query/jdoql/operators/StringConcatenation.java |  10 +-
 .../jdo/tck/query/jdoql/operators/UnaryPlus.java   |   7 +-
 .../jdoql/parameters/BoundParameterCheck.java      |   3 +-
 .../parameters/DomainObjectsAsParameters.java      |  94 ++--
 .../query/jdoql/parameters/ImplicitParameters.java |  19 +-
 .../query/jdoql/parameters/MixedParameters.java    | 128 ++---
 .../query/jdoql/parameters/OrderOfParameters.java  |   7 +-
 .../parameters/ParameterBoundToDifferentPM.java    |   5 +-
 ...eclaredWithSameNameAsFieldOfCandidateClass.java |  35 +-
 .../parameters/PrimitiveParameterPassedAsNull.java |   3 +-
 .../query/jdoql/subqueries/AggregateOnSize.java    |  13 +-
 .../jdoql/subqueries/CorrelatedSubqueries.java     |  56 +--
 .../CorrelatedSubqueriesWithParameters.java        |  40 +-
 .../subqueries/MultipleCallsReplaceSubquery.java   |  11 +-
 .../jdoql/subqueries/NonCorrelatedSubqueries.java  |  31 +-
 .../NullCandidateCollectionExpression.java         |  12 +-
 .../jdoql/subqueries/NullSubqueryParameter.java    |  13 +-
 .../jdoql/subqueries/NullVariableDeclaration.java  |  10 +-
 .../tck/query/jdoql/subqueries/SubqueriesTest.java |   9 +-
 .../subqueries/UnmodifiedSubqueryInstance.java     |  20 +-
 .../tck/query/jdoql/variables/MixedVariables.java  | 107 +++--
 .../jdoql/variables/UnconstrainedVariable.java     |   6 +-
 ...eclaredWithSameNameAsFieldOfCandidateClass.java |  16 +-
 .../query/jdoql/variables/VariablesAndFields.java  |  33 +-
 .../jdoql/variables/VariablesWithoutExtent.java    |   5 +-
 .../jdo/tck/query/result/AggregateResult.java      |  93 ++--
 .../apache/jdo/tck/query/result/DefaultResult.java |   9 +-
 .../apache/jdo/tck/query/result/DefaultUnique.java |  28 +-
 .../query/result/DistinctCandidateInstances.java   |  21 +-
 .../apache/jdo/tck/query/result/DistinctQuery.java |  17 +-
 .../org/apache/jdo/tck/query/result/Grouping.java  |  44 +-
 .../apache/jdo/tck/query/result/IfElseResult.java  | 101 ++--
 .../jdo/tck/query/result/ImmutableQueryResult.java |  16 +-
 .../jdo/tck/query/result/MethodsInResult.java      |  14 +-
 .../jdo/tck/query/result/NPEInResultExpr.java      |   6 +-
 .../apache/jdo/tck/query/result/NullResults.java   |  10 +-
 .../result/ProjectedSCODoesNotTrackChanges.java    |  12 +-
 .../tck/query/result/ResultClassRequirements.java  | 209 ++++----
 .../jdo/tck/query/result/ResultExpressions.java    | 182 +++----
 .../apache/jdo/tck/query/result/ShapeOfResult.java |  31 +-
 .../org/apache/jdo/tck/query/result/Unique.java    |  15 +-
 .../jdo/tck/query/result/VariableInResult.java     |  23 +-
 .../result/VariableInResultMultipleNavigation.java |  33 +-
 .../query/result/VariableInResultNavigation.java   |  38 +-
 .../tck/query/result/classes/PublicPutMethod.java  |   4 +-
 .../jdo/tck/query/sql/AllowedAPIMethods.java       |  52 +-
 .../apache/jdo/tck/query/sql/ExecuteWithMap.java   |  44 +-
 .../org/apache/jdo/tck/query/sql/NewQuery.java     |   5 +-
 .../apache/jdo/tck/query/sql/NoCandidateClass.java |   6 +-
 .../apache/jdo/tck/query/sql/ShapeOfResult.java    |  17 +-
 .../jdo/tck/transactions/SetIsolationLevel.java    |  16 +-
 .../tck/transactions/SetNontransactionalRead.java  |  10 +-
 .../WhenNontransactionalReadIsFalse.java           |   6 +-
 .../apache/jdo/tck/util/BatchResultPrinter.java    |  37 +-
 .../org/apache/jdo/tck/util/BatchTestRunner.java   |  44 +-
 .../org/apache/jdo/tck/util/ClassGenerator.java    | 530 ++++++++++-----------
 .../org/apache/jdo/tck/util/ConsoleFileOutput.java |   4 +-
 .../org/apache/jdo/tck/util/ConversionHelper.java  |  34 +-
 .../java/org/apache/jdo/tck/util/DeepEquality.java |   4 +-
 .../org/apache/jdo/tck/util/EqualityHelper.java    | 193 ++++----
 .../apache/jdo/tck/util/GetSupportedOptions.java   |  13 +-
 .../apache/jdo/tck/util/JDOCustomDateEditor.java   |  11 +
 .../org/apache/jdo/tck/util/JDOJdk14Logger.java    |  46 +-
 .../org/apache/jdo/tck/util/ResultSummary.java     |  35 +-
 .../java/org/apache/jdo/tck/util/RogueBarrier.java |  19 +-
 .../org/apache/jdo/tck/util/SystemCfgSummary.java  |  13 +-
 .../org/apache/jdo/tck/util/TCKFileHandler.java    |  28 +-
 .../jdo/tck/util/ThreadExceptionHandler.java       |   9 +-
 .../apache/jdo/tck/util/signature/Formatter.java   |  44 +-
 .../jdo/tck/util/signature/SignatureVerifier.java  | 502 ++++++++++---------
 .../apache/jdo/tck/util/signature/TypeHelper.java  |  59 +--
 tck/src/main/resources/conf/jdo-signatures.txt     |  25 +-
 747 files changed, 10433 insertions(+), 11593 deletions(-)

diff --git a/README.md b/README.md
index d031ce5a..214bf885 100644
--- a/README.md
+++ b/README.md
@@ -150,4 +150,15 @@ While running the TCK, maven uses the following configuration files in src/conf:
     * jdo.tck.mapping : The file designator that maven.xml uses to build a javax.jdo.option.Mapping value and corresponding schema name (required)
 * exclude.list  : A list of test classes NOT to execute during a TCK test run
 
+### Warnings
 
+There is a profile called `warnings` that configures the maven-compiler-plugin to show compiler warnings and passes 
+`-Xlint:all,-try,-rawtypes` as argument to javac. Activate the warnings profile to enable compiler warnings. 
+Please note, the tck enables the profile `jdori` per default and this default is disabled when specifying the profile 
+`warnings`. So if you want to run the tck with the jdori with warnings enabled please use the following:
+
+    mvn -Pwarnings,jdori clean install
+
+You can pass different compiler arguments using the -D option:
+
+    mvn -Pwarnings,jdori -DcompilerArgument=-Xlint:all clean install
diff --git a/api/pom.xml b/api/pom.xml
index bdf916a4..ef42e3ca 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -21,13 +21,13 @@
     <parent>
         <groupId>org.apache.jdo</groupId>
         <artifactId>parent-pom</artifactId>
-        <version>3.2.2-SNAPSHOT</version>
+        <version>3.3-SNAPSHOT</version>
         <relativePath>../parent-pom</relativePath>
     </parent>
 
     <groupId>javax.jdo</groupId>
     <artifactId>jdo-api</artifactId>
-    <version>3.2.2-SNAPSHOT</version>
+    <version>3.3-SNAPSHOT</version>
     <!-- The name is used when generating a NOTICE file -->
     <name>JDO API</name>
 
@@ -57,15 +57,6 @@
                     <execution />
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <showWarnings>true</showWarnings>
-                    <fork>true</fork>
-                    <compilerArgument>-Xlint:unchecked</compilerArgument>
-                </configuration>
-            </plugin>
             <!-- The next two plugins are required until such time as https://issues.apache.org/jira/browse/FELIX-3352 is fixed. -->
             <plugin>
                 <groupId>org.apache.felix</groupId>
diff --git a/api/src/main/java/javax/jdo/Enhancer.java b/api/src/main/java/javax/jdo/Enhancer.java
index 19d14ec2..7eed3f13 100644
--- a/api/src/main/java/javax/jdo/Enhancer.java
+++ b/api/src/main/java/javax/jdo/Enhancer.java
@@ -74,13 +74,13 @@ public class Enhancer {
         I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
 
     /** New Line */
-    private char NL = '\n'; //NOI18N
+    private static final char NL = '\n'; //NOI18N
     /** Jar file suffix */
-    private String JAR_FILE_SUFFIX = ".jar"; //NOI18N
+    private static final String JAR_FILE_SUFFIX = ".jar"; //NOI18N
     /** JDO Metadata file suffix */
-    private String JDO_FILE_SUFFIX = ".jdo"; //NOI18N
+    private static final String JDO_FILE_SUFFIX = ".jdo"; //NOI18N
     /** Class file suffix */
-    private String CLASS_FILE_SUFFIX = ".class"; //NOI18N
+    private static final String CLASS_FILE_SUFFIX = ".class"; //NOI18N
 
     /** Error indicator */
     private boolean error = false;
@@ -88,7 +88,7 @@ public class Enhancer {
     private boolean printAndExit = false;
 
     /** Persistence Units */
-    private List<String> persistenceUnitNames = new ArrayList<String>();
+    private final List<String> persistenceUnitNames = new ArrayList<>();
     /** Target Directory Parameter */
     private String directoryName = null;
     /** ClassLoader for JDOEnhancer */
@@ -102,17 +102,17 @@ public class Enhancer {
     /** Recurse flag */
     private boolean recurse = false;
     /** Error messages should be empty unless there is an error */
-    private StringBuilder errorBuffer = new StringBuilder();
+    private final StringBuilder errorBuffer = new StringBuilder();
     /** Verbose messages are always collected but only output if verbose flag is set */
-    private StringBuilder verboseBuffer = new StringBuilder();
+    private final StringBuilder verboseBuffer = new StringBuilder();
     /** File Names */
-    private List<String> fileNames = new ArrayList<String>();
+    private List<String> fileNames = new ArrayList<>();
     /** Class File Names */
-    private List<String> classFileNames = new ArrayList<String>();
+    private final List<String> classFileNames = new ArrayList<>();
     /** JDO File Names */
-    private List<String> jdoFileNames = new ArrayList<String>();
+    private final List<String> jdoFileNames = new ArrayList<>();
     /** Jar File Names */
-    private List<String> jarFileNames = new ArrayList<String>();
+    private final List<String> jarFileNames = new ArrayList<>();
     /** The number of classes validated by the JDOEnhancer */
     private int numberOfValidatedClasses = 0;
     /** The number of classes enhanced by the JDOEnhancer */
@@ -154,13 +154,11 @@ public class Enhancer {
             addVerboseMessage("MSG_EnhancerProperty", PROPERTY_ENHANCER_VERSION_NUMBER, //NOI18N
                     properties.getProperty(PROPERTY_ENHANCER_VERSION_NUMBER));
             Set<Entry<Object, Object>> props = properties.entrySet();
-            Iterator<Entry<Object, Object>> entries = props.iterator();
-            while (entries.hasNext()) {
-                Entry<Object, Object> entry = entries.next();
+            for (Entry<Object, Object> entry : props) {
                 if (!(PROPERTY_ENHANCER_VENDOR_NAME.equals(entry.getKey()) ||
                         PROPERTY_ENHANCER_VERSION_NUMBER.equals(entry.getKey()))) {
-                    addVerboseMessage("MSG_EnhancerProperty", (String)entry.getKey(), //NOI18N
-                            (String)entry.getValue());                    
+                    addVerboseMessage("MSG_EnhancerProperty", (String) entry.getKey(), //NOI18N
+                            (String) entry.getValue());
                 }
             }
             enhancer.setVerbose(verbose);
@@ -227,7 +225,7 @@ public class Enhancer {
      */
     private void parseArgs(String[] args) {
         boolean doneWithOptions = false;
-        fileNames = new ArrayList<String>();
+        fileNames = new ArrayList<>();
         for (int i = 0; i < args.length; ++i) {
             String arg = args[i];
             // if first argument is ? then simply print usage and return.
@@ -364,7 +362,7 @@ public class Enhancer {
         // separate classPath using system class path separator
         String separator = System.getProperty("path.separator");
         String[] paths = classPath.split(separator);
-        List<URL> urls = new ArrayList<URL>();
+        List<URL> urls = new ArrayList<>();
         for (String path: paths) {
             // for each path construct a URL from the File
             File file = new File(path);
diff --git a/api/src/main/java/javax/jdo/Extent.java b/api/src/main/java/javax/jdo/Extent.java
index 120200f3..afe8cbdd 100644
--- a/api/src/main/java/javax/jdo/Extent.java
+++ b/api/src/main/java/javax/jdo/Extent.java
@@ -86,9 +86,8 @@ public interface Extent<E> extends Iterable<E>, AutoCloseable {
 
     /**
      * Don't use this method directly; use <code>closeAll()</code> instead. It is intended for use with try-with-resources.
-     * @throws Exception if this resource cannot be closed
      */
-    void close() throws Exception;
+    void close();
 
     /** Get the fetch plan associated with this Extent.
      * @return the fetch plan
diff --git a/api/src/main/java/javax/jdo/FetchGroup.java b/api/src/main/java/javax/jdo/FetchGroup.java
index ca4d2ace..ff341091 100644
--- a/api/src/main/java/javax/jdo/FetchGroup.java
+++ b/api/src/main/java/javax/jdo/FetchGroup.java
@@ -140,7 +140,7 @@ public interface FetchGroup {
      * @return the persistent type
      * @since 2.2
      */
-    Class getType();
+    Class<?> getType();
 
     /** 
      * Get the post-load property of this FetchGroup.
@@ -260,7 +260,7 @@ public interface FetchGroup {
      * in the FetchGroup
      * @since 2.2
      */
-    Set getMembers();
+    Set<String> getMembers();
 
     /**
      * Make this FetchGroup unmodifiable. If already unmodifiable, this method
diff --git a/api/src/main/java/javax/jdo/FetchPlan.java b/api/src/main/java/javax/jdo/FetchPlan.java
index 85ea6722..d24ce42f 100644
--- a/api/src/main/java/javax/jdo/FetchPlan.java
+++ b/api/src/main/java/javax/jdo/FetchPlan.java
@@ -118,7 +118,7 @@ public interface FetchPlan {
      * of all currently active fetch groups
      * @since 2.0
      */
-    Set getGroups();
+    Set<String> getGroups();
 
     /** 
      * Set a collection of groups.
@@ -126,7 +126,7 @@ public interface FetchPlan {
      * @return the FetchPlan
      * @since 2.0
      */
-    FetchPlan setGroups(Collection fetchGroupNames);
+    FetchPlan setGroups(Collection<String> fetchGroupNames);
 
     /** 
      * Set a collection of groups.
@@ -169,7 +169,7 @@ public interface FetchPlan {
      * @return This FetchPlan
      * @since 2.0
      */
-    FetchPlan setDetachmentRoots(Collection roots);
+    FetchPlan setDetachmentRoots(Collection<?> roots);
 
     /**
      * Get the roots for DetachAllOnCommit.
@@ -184,14 +184,14 @@ public interface FetchPlan {
      * @return This FetchPlan
      * @since 2.0
      */
-    FetchPlan setDetachmentRootClasses(Class... rootClasses);
+    FetchPlan setDetachmentRootClasses(Class<?>... rootClasses);
 
     /**
      * Get the root classes for DetachAllOnCommit.
      * @return The detachment root classes
      * @since 2.0
      */
-    Class[] getDetachmentRootClasses();
+    Class<?>[] getDetachmentRootClasses();
 
     /**
      * Set the fetch size for large result set support. Use
diff --git a/api/src/main/java/javax/jdo/JDOException.java b/api/src/main/java/javax/jdo/JDOException.java
index 18007f6c..c448b410 100644
--- a/api/src/main/java/javax/jdo/JDOException.java
+++ b/api/src/main/java/javax/jdo/JDOException.java
@@ -47,7 +47,7 @@ public class JDOException extends java.lang.RuntimeException {
     /**
      * The Internationalization message helper.
      */
-    private static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
+    private static final I18NHelper MSG = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
 
     /** 
      * Flag indicating whether printStackTrace is being executed.
@@ -164,7 +164,7 @@ public class JDOException extends java.lang.RuntimeException {
      * @return never.
      */
     public Throwable initCause(Throwable cause) {
-        throw new JDOFatalInternalException(msg.msg("ERR_CannotInitCause"));
+        throw new JDOFatalInternalException(MSG.msg("ERR_CannotInitCause"));
     }
   
     /** The <code>String</code> representation includes the name of the class,
@@ -180,7 +180,7 @@ public class JDOException extends java.lang.RuntimeException {
         sb.append (super.toString());
         // include failed object information
         if (failed != null) {
-            sb.append ("\n").append (msg.msg ("MSG_FailedObject"));
+            sb.append ("\n").append (MSG.msg ("MSG_FailedObject"));
             String failedToString = null;
             try {
                 failedToString = failed.toString();
@@ -188,7 +188,7 @@ public class JDOException extends java.lang.RuntimeException {
                 // include the information from the exception thrown by failed.toString
                 Object objectId = JDOHelper.getObjectId(failed);
                 if (objectId == null) {
-                    failedToString = msg.msg("MSG_ExceptionGettingFailedToString", //NOI18N
+                    failedToString = MSG.msg("MSG_ExceptionGettingFailedToString", //NOI18N
                                        exceptionToString(ex));
                 }
                 else {
@@ -200,7 +200,7 @@ public class JDOException extends java.lang.RuntimeException {
                     catch (Exception ex2) {
                         objectIdToString = exceptionToString(ex2);
                     }
-                    failedToString = msg.msg("MSG_ExceptionGettingFailedToStringObjectId", //NOI18N
+                    failedToString = MSG.msg("MSG_ExceptionGettingFailedToStringObjectId", //NOI18N
                                        exceptionToString(ex), objectIdToString);
                 }
             }
@@ -209,7 +209,7 @@ public class JDOException extends java.lang.RuntimeException {
         // include nested Throwable information, but only if not called by
         // printStackTrace; the stacktrace will include the cause anyway.
         if (len > 0 && !inPrintStackTrace) {
-            sb.append ("\n").append (msg.msg ("MSG_NestedThrowables")).append ("\n");
+            sb.append ("\n").append (MSG.msg ("MSG_NestedThrowables")).append ("\n");
             Throwable exception = nested[0];
             sb.append (exception==null?"null":exception.toString()); //NOI18N
             for (int i=1; i<len; ++i) {
@@ -242,7 +242,7 @@ public class JDOException extends java.lang.RuntimeException {
             inPrintStackTrace = true;
             super.printStackTrace(s);
             if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
+                s.println (MSG.msg ("MSG_NestedThrowablesStackTrace"));
                 for (int i=0; i<len; ++i) {
                     Throwable exception = nested[i];
                     if (exception != null) {
@@ -266,7 +266,7 @@ public class JDOException extends java.lang.RuntimeException {
             inPrintStackTrace = true;
             super.printStackTrace(s);
             if (len > 0) {
-                s.println (msg.msg ("MSG_NestedThrowablesStackTrace"));
+                s.println (MSG.msg ("MSG_NestedThrowablesStackTrace"));
                 for (int i=0; i<len; ++i) {
                     Throwable exception = nested[i];
                     if (exception != null) {
diff --git a/api/src/main/java/javax/jdo/JDOHelper.java b/api/src/main/java/javax/jdo/JDOHelper.java
index 892d4683..78d938e9 100644
--- a/api/src/main/java/javax/jdo/JDOHelper.java
+++ b/api/src/main/java/javax/jdo/JDOHelper.java
@@ -50,7 +50,6 @@ import javax.jdo.spi.JDOImplHelper;
 import javax.jdo.spi.JDOImplHelper.StateInterrogationBooleanReturn;
 import javax.jdo.spi.JDOImplHelper.StateInterrogationObjectReturn;
 import javax.jdo.spi.PersistenceCapable;
-import javax.jdo.spi.StateInterrogation;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -94,7 +93,7 @@ public class JDOHelper implements Constants {
 
     /** The Internationalization message helper.
      */
-    private final static I18NHelper msg = 
+    private final static I18NHelper MSG =
         I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
 
     /**
@@ -103,7 +102,7 @@ public class JDOHelper implements Constants {
      * properties.
      */
     static Map<String, String> createAttributePropertyXref() {
-        Map<String, String> xref = new HashMap<String,String>();
+        Map<String, String> xref = new HashMap<>();
 
         xref.put(
             PMF_ATTRIBUTE_CLASS,
@@ -175,19 +174,13 @@ public class JDOHelper implements Constants {
     /** The JDOImplHelper instance used for handling non-binary-compatible
      *  implementations.
      */
-    private static JDOImplHelper implHelper = (JDOImplHelper)
-        doPrivileged(
-            new PrivilegedAction<JDOImplHelper> () {
-                public JDOImplHelper run () {
-                    return JDOImplHelper.getInstance();
-                }
-            }
-        );
+    private static final JDOImplHelper IMPL_HELPER =
+            doPrivileged((PrivilegedAction<JDOImplHelper>) JDOImplHelper::getInstance);
 
     /** The singleton instance of JDOHelper.
      * @since 2.1
      */
-    private static JDOHelper instance = new JDOHelper();
+    private static final JDOHelper INSTANCE = new JDOHelper();
 
     /**
      * Return the singleton instance of JDOHelper. This instance is 
@@ -196,7 +189,7 @@ public class JDOHelper implements Constants {
      * @return the thread-safe singleton JDOHelper
      */
     public static JDOHelper getInstance() {
-        return instance;
+        return INSTANCE;
     }
 
     /** Some applications might prefer to use instance
@@ -208,102 +201,62 @@ public class JDOHelper implements Constants {
     /** The stateless instance used for handling non-binary-compatible
     *  implementations of getPersistenceManager.
     */
-    static StateInterrogationObjectReturn getPersistenceManager =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getPersistenceManager(pc);
-            }
-        };
+    static final StateInterrogationObjectReturn getPersistenceManager =
+            (pc, si) -> si.getPersistenceManager(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of getObjectId.
     */
-    static StateInterrogationObjectReturn getObjectId =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getObjectId(pc);
-            }
-        };
+    static final StateInterrogationObjectReturn getObjectId =
+           (pc, si) -> si.getObjectId(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of getTransactionalObjectId.
     */
-    static StateInterrogationObjectReturn getTransactionalObjectId =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getTransactionalObjectId(pc);
-            }
-        };
+    static final StateInterrogationObjectReturn getTransactionalObjectId =
+           (pc, si) -> si.getTransactionalObjectId(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of getVersion.
     */
-    static StateInterrogationObjectReturn getVersion =
-        new StateInterrogationObjectReturn() {
-            public Object get(Object pc, StateInterrogation si) {
-                return si.getVersion(pc);
-            }
-        };
+    static final StateInterrogationObjectReturn getVersion =
+           (pc, si) -> si.getVersion(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isPersistent.
     */
-    static StateInterrogationBooleanReturn isPersistent =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isPersistent(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isPersistent =
+           (pc, si) -> si.isPersistent(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isTransactional.
     */
-    static StateInterrogationBooleanReturn isTransactional =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isTransactional(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isTransactional =
+           (pc, si) -> si.isTransactional(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isDirty.
     */
-    static StateInterrogationBooleanReturn isDirty =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDirty(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isDirty =
+           (pc, si) -> si.isDirty(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isNew.
     */
-    static StateInterrogationBooleanReturn isNew =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isNew(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isNew =
+           (pc, si) -> si.isNew(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isDeleted.
     */
-    static StateInterrogationBooleanReturn isDeleted =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDeleted(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isDeleted =
+           (pc, si) -> si.isDeleted(pc);
 
    /** The stateless instance used for handling non-binary-compatible
     *  implementations of isDetached.
     */
-    static StateInterrogationBooleanReturn isDetached =
-        new StateInterrogationBooleanReturn() {
-            public Boolean is(Object pc, StateInterrogation si) {
-                return si.isDetached(pc);
-            }
-        };
+    static final StateInterrogationBooleanReturn isDetached =
+           (pc, si) -> si.isDetached(pc);
 
     /** Return the associated <code>PersistenceManager</code> if there is one.
      * Transactional and persistent instances return the associated
@@ -322,7 +275,7 @@ public class JDOHelper implements Constants {
             return ((PersistenceCapable)pc).jdoGetPersistenceManager();
         } else {
             return (PersistenceManager)
-                implHelper.nonBinaryCompatibleGet(pc, getPersistenceManager);
+                IMPL_HELPER.nonBinaryCompatibleGet(pc, getPersistenceManager);
         }
       }
     
@@ -343,7 +296,7 @@ public class JDOHelper implements Constants {
         if (pc instanceof PersistenceCapable) {
             ((PersistenceCapable)pc).jdoMakeDirty(fieldName);
         } else {
-             implHelper.nonBinaryCompatibleMakeDirty(pc, fieldName);
+             IMPL_HELPER.nonBinaryCompatibleMakeDirty(pc, fieldName);
         }
     }
     
@@ -381,7 +334,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoGetObjectId();
         } else {
-            return implHelper.nonBinaryCompatibleGet(pc, getObjectId);
+            return IMPL_HELPER.nonBinaryCompatibleGet(pc, getObjectId);
         }
     }
 
@@ -398,7 +351,7 @@ public class JDOHelper implements Constants {
      * @since 2.0
      */
     public static Collection<Object> getObjectIds(Collection<?> pcs) {
-        ArrayList<Object> result = new ArrayList<Object>();
+        ArrayList<Object> result = new ArrayList<>();
         for (Iterator<?> it = pcs.iterator(); it.hasNext();) {
             result.add(getObjectId(it.next()));
         }
@@ -438,7 +391,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoGetTransactionalObjectId();
         } else {
-            return implHelper.nonBinaryCompatibleGet(
+            return IMPL_HELPER.nonBinaryCompatibleGet(
                 pc, getTransactionalObjectId);
         }
     }
@@ -453,7 +406,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoGetVersion();
         } else {
-            return implHelper.nonBinaryCompatibleGet(pc, getVersion);
+            return IMPL_HELPER.nonBinaryCompatibleGet(pc, getVersion);
         }
     }
     /** Tests whether the parameter instance is dirty.
@@ -475,7 +428,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsDirty();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDirty);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isDirty);
         }
     }
 
@@ -494,7 +447,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsTransactional();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isTransactional);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isTransactional);
         }
     }
 
@@ -515,7 +468,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsPersistent();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isPersistent);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isPersistent);
         }
     }
 
@@ -537,7 +490,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsNew();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isNew);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isNew);
         }
     }
 
@@ -559,7 +512,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsDeleted();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDeleted);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isDeleted);
         }
     }
     
@@ -579,7 +532,7 @@ public class JDOHelper implements Constants {
       if (pc instanceof PersistenceCapable) {
           return ((PersistenceCapable)pc).jdoIsDetached();
         } else {
-            return implHelper.nonBinaryCompatibleIs(pc, isDetached);
+            return IMPL_HELPER.nonBinaryCompatibleIs(pc, isDetached);
         }
     }
 
@@ -796,9 +749,9 @@ public class JDOHelper implements Constants {
     protected static PersistenceManagerFactory getPersistenceManagerFactory
             (Map<?, ?> overrides, Map<?, ?> props, ClassLoader pmfClassLoader) {
         
-        List<Throwable> exceptions = new ArrayList<Throwable>();
+        List<Throwable> exceptions = new ArrayList<>();
         if (pmfClassLoader == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullLoader")); //NOI18N
 
         JDOImplHelper.assertOnlyKnownStandardProperties(overrides);
@@ -842,8 +795,7 @@ public class JDOHelper implements Constants {
                 while (urls.hasMoreElements()) {
 
                     try {
-                        pmfClassName = getClassNameFromURL(
-                                (URL) urls.nextElement());
+                        pmfClassName = getClassNameFromURL(urls.nextElement());
 
                         // return the implementation that is valid.
                         PersistenceManagerFactory pmf = 
@@ -863,10 +815,9 @@ public class JDOHelper implements Constants {
 
         // no PMF class name in props and no services.  
 
-        throw new JDOFatalUserException(msg.msg(
+        throw new JDOFatalUserException(MSG.msg(
                 "EXC_GetPMFNoPMFClassNamePropertyOrPUNameProperty"),
-                (Throwable[])
-                    exceptions.toArray(new Throwable[exceptions.size()]));
+                exceptions.toArray(new Throwable[exceptions.size()]));
     }
 
     /** Get a class name from a URL. The URL is from getResources with 
@@ -1069,10 +1020,10 @@ public class JDOHelper implements Constants {
             ClassLoader resourceLoader,
             ClassLoader pmfLoader) {
         if (pmfLoader == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullPMFLoader")); //NOI18N
         if (resourceLoader == null) {
-            throw new JDOFatalUserException(msg.msg(
+            throw new JDOFatalUserException(MSG.msg(
                 "EXC_GetPMFNullPropsLoader")); //NOI18N
         }
 
@@ -1109,7 +1060,7 @@ public class JDOHelper implements Constants {
         }
         
         // no PMF found; give up
-        throw new JDOFatalUserException (msg.msg (
+        throw new JDOFatalUserException (MSG.msg (
             "EXC_NoPMFConfigurableViaPropertiesOrXML", name)); //NOI18N
     }
 
@@ -1138,31 +1089,31 @@ public class JDOHelper implements Constants {
                     (PersistenceManagerFactory) invoke(m,
                         null, new Object[]{overrides, properties});
                 if (pmf == null) {
-                        throw new JDOFatalInternalException(msg.msg (
+                        throw new JDOFatalInternalException(MSG.msg (
                             "EXC_GetPMFNullPMF", pmfClassName)); //NOI18N
                     }
                 return pmf;
 
             } catch (ClassNotFoundException e) {
-                throw new JDOFatalUserException(msg.msg(
+                throw new JDOFatalUserException(MSG.msg(
                         "EXC_GetPMFClassNotFound", pmfClassName), e); //NOI18N
             } catch (NoSuchMethodException e) {
-                throw new JDOFatalInternalException(msg.msg(
+                throw new JDOFatalInternalException(MSG.msg(
                         "EXC_GetPMFNoSuchMethod2", pmfClassName), e); //NOI18N
             } catch (NullPointerException e) {
-                throw new JDOFatalInternalException (msg.msg(
+                throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFNullPointerException", pmfClassName), e); //NOI18N
             } catch (IllegalAccessException e) {
-                throw new JDOFatalUserException(msg.msg(
+                throw new JDOFatalUserException(MSG.msg(
                         "EXC_GetPMFIllegalAccess", pmfClassName), e); //NOI18N
             } catch (ClassCastException e) {
-                throw new JDOFatalInternalException (msg.msg(
+                throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFClassCastException", pmfClassName), e); //NOI18N
             } catch (InvocationTargetException ite) {
                 Throwable nested = ite.getTargetException();
                 if (nested instanceof JDOException) {
                     throw (JDOException)nested;
-                } else throw new JDOFatalInternalException (msg.msg(
+                } else throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFUnexpectedException"), ite); //NOI18N
             }
         } else {
@@ -1176,30 +1127,30 @@ public class JDOHelper implements Constants {
                     (PersistenceManagerFactory) invoke(m,
                         null, new Object[]{properties});
                 if (pmf == null) {
-                        throw new JDOFatalInternalException(msg.msg (
+                        throw new JDOFatalInternalException(MSG.msg (
                             "EXC_GetPMFNullPMF", pmfClassName)); //NOI18N
                     }
                 return pmf;
             } catch (ClassNotFoundException e) {
-                throw new JDOFatalUserException(msg.msg(
+                throw new JDOFatalUserException(MSG.msg(
                         "EXC_GetPMFClassNotFound", pmfClassName), e); //NOI18N
             } catch (NoSuchMethodException e) {
-                throw new JDOFatalInternalException(msg.msg(
+                throw new JDOFatalInternalException(MSG.msg(
                         "EXC_GetPMFNoSuchMethod", pmfClassName), e); //NOI18N
             } catch (NullPointerException e) {
-                throw new JDOFatalInternalException (msg.msg(
+                throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFNullPointerException", pmfClassName), e); //NOI18N
             } catch (IllegalAccessException e) {
-                throw new JDOFatalUserException(msg.msg(
+                throw new JDOFatalUserException(MSG.msg(
                         "EXC_GetPMFIllegalAccess", pmfClassName), e); //NOI18N
             } catch (ClassCastException e) {
-                throw new JDOFatalInternalException (msg.msg(
+                throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFClassCastException", pmfClassName), e); //NOI18N
             } catch (InvocationTargetException ite) {
                 Throwable nested = ite.getTargetException();
                 if (nested instanceof JDOException) {
                     throw (JDOException)nested;
-                } else throw new JDOFatalInternalException (msg.msg(
+                } else throw new JDOFatalInternalException (MSG.msg(
                     "EXC_GetPMFUnexpectedException"), ite); //NOI18N
             }
         }
@@ -1222,10 +1173,10 @@ public class JDOHelper implements Constants {
                 // then some kind of resource was found by the given name;
                 // assume that it's a properties file
                 props = new Properties();
-                ((Properties) props).load(in);
+                props.load(in);
             }
         } catch (IOException ioe) {
-            throw new JDOFatalUserException(msg.msg(
+            throw new JDOFatalUserException(MSG.msg(
                 "EXC_GetPMFIOExceptionRsrc", name), ioe); //NOI18N
         } finally {
             if (in != null) {
@@ -1278,8 +1229,7 @@ public class JDOHelper implements Constants {
             ClassLoader resourceLoader,
             String jdoconfigResourceName) {
         // key is PU name, value is Map of PU properties
-        Map<String,Map<Object,Object>> propertiesByNameInAllConfigs
-                = new HashMap<String,Map<Object,Object>>();
+        Map<String,Map<Object,Object>> propertiesByNameInAllConfigs = new HashMap<>();
         try {
             URL firstFoundConfigURL = null;
 
@@ -1288,7 +1238,7 @@ public class JDOHelper implements Constants {
                 getResources(resourceLoader, jdoconfigResourceName);
 
             if (resources.hasMoreElements()) {
-                ArrayList<URL> processedResources = new ArrayList<URL>();
+                ArrayList<URL> processedResources = new ArrayList<>();
 
                 // get ready to parse XML
                 DocumentBuilderFactory factory = getDocumentBuilderFactory();
@@ -1315,7 +1265,7 @@ public class JDOHelper implements Constants {
                         }
                         
                         if (propertiesByNameInAllConfigs.containsKey(name))
-                            throw new JDOFatalUserException (msg.msg(
+                            throw new JDOFatalUserException (MSG.msg(
                                 "EXC_DuplicateRequestedNamedPMFFoundInDifferentConfigs",
                                 "".equals(name)
                                         ? "(anonymous)"
@@ -1331,23 +1281,23 @@ public class JDOHelper implements Constants {
         }
         catch (FactoryConfigurationError e) {
             throw new JDOFatalUserException(
-                msg.msg("ERR_NoDocumentBuilderFactory"), e);
+                MSG.msg("ERR_NoDocumentBuilderFactory"), e);
         }
         catch (IOException ioe) {
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFIOExceptionRsrc", name), ioe); //NOI18N
         }
 
         // done with reading all config resources;
         // return what we found, which may very well be null
-        return (Map<Object,Object>) propertiesByNameInAllConfigs.get(name);
+        return propertiesByNameInAllConfigs.get(name);
     }
 
 
     protected static DocumentBuilderFactory getDocumentBuilderFactory() {
         @SuppressWarnings("static-access")
         DocumentBuilderFactory factory =
-                implHelper.getRegisteredDocumentBuilderFactory();
+                IMPL_HELPER.getRegisteredDocumentBuilderFactory();
         if (factory == null) {
             factory = getDefaultDocumentBuilderFactory();
         }
@@ -1367,7 +1317,7 @@ public class JDOHelper implements Constants {
 
     protected static ErrorHandler getErrorHandler() {
         @SuppressWarnings("static-access")
-        ErrorHandler handler = implHelper.getRegisteredErrorHandler();
+        ErrorHandler handler = IMPL_HELPER.getRegisteredErrorHandler();
         if (handler == null) {
             handler = getDefaultErrorHandler();
         }
@@ -1412,8 +1362,7 @@ public class JDOHelper implements Constants {
             ? ""
             : requestedPMFName.trim();
 
-        Map<String,Map<Object,Object>>
-                propertiesByName = new HashMap<String,Map<Object,Object>>();
+        Map<String,Map<Object,Object>> propertiesByName = new HashMap<>();
         InputStream in = null;
         try {
             DocumentBuilder builder = factory.newDocumentBuilder();
@@ -1425,7 +1374,7 @@ public class JDOHelper implements Constants {
             Element root = doc.getDocumentElement();
             if (root == null) {
                 throw new JDOFatalUserException(
-                    msg.msg("EXC_InvalidJDOConfigNoRoot", url.toExternalForm())
+                    MSG.msg("EXC_InvalidJDOConfigNoRoot", url.toExternalForm())
                 );
             }
 
@@ -1464,7 +1413,7 @@ public class JDOHelper implements Constants {
                     if (!isNullOrBlank(pmfNameFromElem)) {
                         // exception -- PMF name given as both att & elem
                         throw new JDOFatalUserException(
-                            msg.msg(
+                            MSG.msg(
                                 "EXC_DuplicatePMFNamePropertyFoundWithinConfig",
                                 pmfNameFromAtts,
                                 pmfNameFromElem,
@@ -1476,17 +1425,15 @@ public class JDOHelper implements Constants {
 
                 // check for duplicate properties among atts & elems
                 if (requestedPMFName.equals(pmfName)) {
-                    Iterator<?> it =
-                        pmfPropertiesFromAttributes.keySet().iterator();
-                    while (it.hasNext()) {
-                        String property = (String) it.next();
+                    for (Object o : pmfPropertiesFromAttributes.keySet()) {
+                        String property = (String) o;
                         if (pmfPropertiesFromElements.contains(property)) {
                             throw new JDOFatalUserException(
-                                msg.msg(
-                                    "EXC_DuplicatePropertyFound",
-                                    property,
-                                    pmfName,
-                                    url.toExternalForm()));
+                                    MSG.msg(
+                                            "EXC_DuplicatePropertyFound",
+                                            property,
+                                            pmfName,
+                                            url.toExternalForm()));
                         }
                     }
                 }
@@ -1501,7 +1448,7 @@ public class JDOHelper implements Constants {
                 if (pmfName.equals(requestedPMFName)
                     && propertiesByName.containsKey(pmfName)) {
 
-                    throw new JDOFatalUserException(msg.msg(
+                    throw new JDOFatalUserException(MSG.msg(
                             "EXC_DuplicateRequestedNamedPMFFoundInSameConfig",
                         pmfName,
                         url.toExternalForm()));
@@ -1512,17 +1459,17 @@ public class JDOHelper implements Constants {
         }
         catch (IOException ioe) {
             throw new JDOFatalUserException(
-                msg.msg("EXC_GetPMFIOExceptionRsrc", url.toString()),
+                MSG.msg("EXC_GetPMFIOExceptionRsrc", url.toString()),
                 ioe); //NOI18N
         }
         catch (ParserConfigurationException e) {
             throw new JDOFatalInternalException(
-                msg.msg("EXC_ParserConfigException"),
+                MSG.msg("EXC_ParserConfigException"),
                 e);
         }
         catch (SAXParseException e) {
             throw new JDOFatalUserException(
-                msg.msg(
+                MSG.msg(
                     "EXC_SAXParseException",
                     url.toExternalForm(),
                     e.getLineNumber(),
@@ -1531,7 +1478,7 @@ public class JDOHelper implements Constants {
         }
         catch (SAXException e) {
             throw new JDOFatalUserException(
-                msg.msg("EXC_SAXException", url.toExternalForm()),
+                MSG.msg("EXC_SAXException", url.toExternalForm()),
                 e);
         }
         catch (JDOException e) {
@@ -1539,7 +1486,7 @@ public class JDOHelper implements Constants {
         }
         catch (RuntimeException e) {
             throw new JDOFatalUserException(
-                msg.msg("EXC_SAXException", url.toExternalForm()),
+                MSG.msg("EXC_SAXException", url.toExternalForm()),
                 e);
         }
         finally {
@@ -1565,8 +1512,7 @@ public class JDOHelper implements Constants {
             String attName = att.getNodeName();
             String attValue = att.getNodeValue().trim();
 
-            String jdoPropertyName =
-                (String) ATTRIBUTE_PROPERTY_XREF.get(attName);
+            String jdoPropertyName = ATTRIBUTE_PROPERTY_XREF.get(attName);
 
             p.put(
                 jdoPropertyName != null
@@ -1600,12 +1546,12 @@ public class JDOHelper implements Constants {
                 Node nameAtt = attributes.getNamedItem(PROPERTY_ATTRIBUTE_NAME);
                 if (nameAtt == null) {
                     throw new JDOFatalUserException(
-                        msg.msg("EXC_PropertyElementHasNoNameAttribute", url));
+                        MSG.msg("EXC_PropertyElementHasNoNameAttribute", url));
                 }
                 String name = nameAtt.getNodeValue().trim();
                 if ("".equals(name)) {
                     throw new JDOFatalUserException(
-                        msg.msg(
+                        MSG.msg(
                             "EXC_PropertyElementNameAttributeHasNoValue",
                             name,
                             url));
@@ -1614,8 +1560,7 @@ public class JDOHelper implements Constants {
                 // <persistence-manager-factory> attribute names or the
                 // "javax.jdo" property names in <property> element "name"
                 // attributes.  Handy-dandy.
-                String jdoPropertyName =
-                    (String) ATTRIBUTE_PROPERTY_XREF.get(name);
+                String jdoPropertyName = ATTRIBUTE_PROPERTY_XREF.get(name);
                 
                 String propertyName = jdoPropertyName != null
                         ? jdoPropertyName
@@ -1623,7 +1568,7 @@ public class JDOHelper implements Constants {
 
                 if (p.containsKey(propertyName)) {
                     throw new JDOFatalUserException(
-                        msg.msg(
+                        MSG.msg(
                             "EXC_DuplicatePropertyNameGivenInPropertyElement",
                             propertyName,
                             url));
@@ -1646,14 +1591,14 @@ public class JDOHelper implements Constants {
                     INSTANCE_LIFECYCLE_LISTENER_ATTRIBUTE_LISTENER);
                 if (listenerAtt == null) {
                     throw new JDOFatalUserException(
-                        msg.msg(
+                        MSG.msg(
                             "EXC_MissingListenerAttribute",
                             url));
                 }
                 String listener = listenerAtt.getNodeValue().trim();
                 if ("".equals(listener)) {
                     throw new JDOFatalUserException(
-                        msg.msg(
+                        MSG.msg(
                             "EXC_MissingListenerAttributeValue",
                             url));
                 }
@@ -1715,7 +1660,7 @@ public class JDOHelper implements Constants {
     public static PersistenceManagerFactory getPersistenceManagerFactory
             (File propsFile, ClassLoader loader) {
         if (propsFile == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullFile")); //NOI18N
 
         InputStream in = null;
@@ -1723,7 +1668,7 @@ public class JDOHelper implements Constants {
             in = new FileInputStream(propsFile);
             return getPersistenceManagerFactory(in, loader);
         } catch (FileNotFoundException fnfe) {
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNoFile", propsFile), fnfe); //NOI18N
         } finally {
             if (in != null)
@@ -1776,10 +1721,10 @@ public class JDOHelper implements Constants {
     public static PersistenceManagerFactory getPersistenceManagerFactory
             (String jndiLocation, Context context, ClassLoader loader) {
         if (jndiLocation == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullJndiLoc")); //NOI18N
         if (loader == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullLoader")); //NOI18N
         try {
             if (context == null)
@@ -1789,7 +1734,7 @@ public class JDOHelper implements Constants {
             return (PersistenceManagerFactory) PortableRemoteObject.narrow
                 (o, PersistenceManagerFactory.class);
         } catch (NamingException ne) {
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNamingException", jndiLocation, loader), ne); //NOI18N
         }
     }
@@ -1828,7 +1773,7 @@ public class JDOHelper implements Constants {
     public static PersistenceManagerFactory getPersistenceManagerFactory
             (InputStream stream, ClassLoader loader) {
         if (stream == null)
-            throw new JDOFatalUserException (msg.msg (
+            throw new JDOFatalUserException (MSG.msg (
                 "EXC_GetPMFNullStream")); //NOI18N
 
         Properties props = new Properties ();
@@ -1836,7 +1781,7 @@ public class JDOHelper implements Constants {
             props.load (stream);
         } catch (IOException ioe) {
             throw new JDOFatalUserException
-                (msg.msg ("EXC_GetPMFIOExceptionStream"), ioe); //NOI18N
+                (MSG.msg ("EXC_GetPMFIOExceptionStream"), ioe); //NOI18N
         }
         return getPersistenceManagerFactory (props, loader);
     }
@@ -1877,7 +1822,7 @@ public class JDOHelper implements Constants {
      * the invocation returns an instance.
      * Otherwise add the exception thrown to an exception list.
      */
-        ArrayList<Throwable> exceptions = new ArrayList<Throwable>();
+        ArrayList<Throwable> exceptions = new ArrayList<>();
         int numberOfJDOEnhancers = 0;
         try {
             Enumeration<URL> urls = getResources(loader, SERVICE_LOOKUP_ENHANCER_RESOURCE_NAME);
@@ -1885,7 +1830,7 @@ public class JDOHelper implements Constants {
                 while (urls.hasMoreElements()) {
                     numberOfJDOEnhancers++;
                     try {
-                        String enhancerClassName = getClassNameFromURL((URL)urls.nextElement());
+                        String enhancerClassName = getClassNameFromURL(urls.nextElement());
                         Class<?> enhancerClass = forName(enhancerClassName, true, ctrLoader);
                         JDOEnhancer enhancer = (JDOEnhancer)enhancerClass.newInstance();
                         return enhancer;
@@ -1899,8 +1844,8 @@ public class JDOHelper implements Constants {
             exceptions.add(ex);
         }
 
-        throw new JDOFatalUserException(msg.msg("EXC_GetEnhancerNoValidEnhancerAvailable", numberOfJDOEnhancers),
-                (Throwable[])exceptions.toArray(new Throwable[exceptions.size()]));
+        throw new JDOFatalUserException(MSG.msg("EXC_GetEnhancerNoValidEnhancerAvailable", numberOfJDOEnhancers),
+                exceptions.toArray(new Throwable[exceptions.size()]));
     }
 
     /** Get the context class loader associated with the current thread. 
@@ -1910,11 +1855,7 @@ public class JDOHelper implements Constants {
      */
     private static ClassLoader getContextClassLoader() {
         return doPrivileged(
-            new PrivilegedAction<ClassLoader> () {
-                public ClassLoader run () {
-                    return Thread.currentThread().getContextClassLoader();
-                }
-            }
+                (PrivilegedAction<ClassLoader>) () -> Thread.currentThread().getContextClassLoader()
         );
     }
 
@@ -1923,13 +1864,7 @@ public class JDOHelper implements Constants {
      */
     private static InputStream getResourceAsStream(
             final ClassLoader resourceLoader, final String name) {
-        return doPrivileged(
-            new PrivilegedAction<InputStream>() {
-                public InputStream run() {
-                    return resourceLoader.getResourceAsStream(name);
-                }
-            }
-        );
+        return doPrivileged((PrivilegedAction<InputStream>) () -> resourceLoader.getResourceAsStream(name));
     }
 
 
@@ -1948,11 +1883,7 @@ public class JDOHelper implements Constants {
                 throws NoSuchMethodException {
         try {
             return doPrivileged(
-                new PrivilegedExceptionAction<Method>() {
-                    public Method run() throws NoSuchMethodException {
-                        return implClass.getMethod(methodName, parameterTypes);
-                    }
-                }
+                    (PrivilegedExceptionAction<Method>) () -> implClass.getMethod(methodName, parameterTypes)
             );
         } catch (PrivilegedActionException ex) {
             throw (NoSuchMethodException)ex.getException();
@@ -1966,17 +1897,11 @@ public class JDOHelper implements Constants {
             final Object instance, final Object[] parameters) 
                 throws IllegalAccessException, InvocationTargetException {
         try {
-            return (Object) doPrivileged(
-                new PrivilegedExceptionAction<Object>() {
-                    public Object run() 
-                        throws IllegalAccessException, 
-                            InvocationTargetException {
-                        return method.invoke (instance, parameters);
-                    }
-                }
+            return doPrivileged(
+                    (PrivilegedExceptionAction<Object>) () -> method.invoke (instance, parameters)
             );
         } catch (PrivilegedActionException ex) {
-            Exception cause = (Exception)ex.getException();
+            Exception cause = ex.getException();
             if (cause instanceof IllegalAccessException)
                 throw (IllegalAccessException)cause;
             else //if (cause instanceof InvocationTargetException)
@@ -1998,11 +1923,7 @@ public class JDOHelper implements Constants {
                 throws IOException {
         try {
             return doPrivileged(
-                new PrivilegedExceptionAction<Enumeration<URL>>() {
-                    public Enumeration<URL> run() throws IOException {
-                        return resourceLoader.getResources(resourceName);
-                    }
-                }
+                    (PrivilegedExceptionAction<Enumeration<URL>>) () -> resourceLoader.getResources(resourceName)
             );
         } catch (PrivilegedActionException ex) {
             throw (IOException)ex.getException();
@@ -2024,11 +1945,7 @@ public class JDOHelper implements Constants {
                 throws ClassNotFoundException {
         try {
             return doPrivileged(
-                new PrivilegedExceptionAction<Class<?>>() {
-                    public Class<?> run() throws ClassNotFoundException {
-                        return Class.forName(name, init, loader);
-                    }
-                }
+                    (PrivilegedExceptionAction<Class<?>>) () -> Class.forName(name, init, loader)
             );
         } catch (PrivilegedActionException ex) {
             throw (ClassNotFoundException)ex.getException();
@@ -2045,11 +1962,7 @@ public class JDOHelper implements Constants {
             throws IOException {
         try {
             return doPrivileged(
-                new PrivilegedExceptionAction<InputStream>() {
-                    public InputStream run() throws IOException {
-                        return url.openStream();
-                    }
-                }
+                    (PrivilegedExceptionAction<InputStream>) () -> url.openStream()
             );
         } catch (PrivilegedActionException ex) {
             throw (IOException)ex.getException();
diff --git a/api/src/main/java/javax/jdo/JDOQLTypedQuery.java b/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
index 2fd1accd..6a8d7624 100644
--- a/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
+++ b/api/src/main/java/javax/jdo/JDOQLTypedQuery.java
@@ -532,7 +532,7 @@ public interface JDOQLTypedQuery<T> extends Serializable, Closeable {
      * @param values The extension map of keys and values
      * @return This query
      */
-    JDOQLTypedQuery<T> extensions(Map values);
+    JDOQLTypedQuery<T> extensions(Map<String, Object> values);
 
     /**
      * Save the query, as it is currently defined, as a named query under the specified name.
diff --git a/api/src/main/java/javax/jdo/PersistenceManager.java b/api/src/main/java/javax/jdo/PersistenceManager.java
index c67c2079..4250e9a4 100644
--- a/api/src/main/java/javax/jdo/PersistenceManager.java
+++ b/api/src/main/java/javax/jdo/PersistenceManager.java
@@ -99,14 +99,14 @@ public interface PersistenceManager extends AutoCloseable {
      * @param pcs the <code>Collection</code> of instances to evict from the 
      * cache.
      */
-    void evictAll (Collection pcs);
+    void evictAll (Collection<?> pcs);
 
     /** Mark the parameter instances as no longer needed in the cache.
      * @param pcClass the class of instances to evict
      * @param subclasses if true, mark instances of subclasses also
      * @since 2.1
      */
-    void evictAll (boolean subclasses, Class pcClass);
+    void evictAll (boolean subclasses, Class<?> pcClass);
 
     /** Mark all persistent-nontransactional instances as no longer needed 
      * in the cache.  It transitions
@@ -141,7 +141,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @see #refresh(Object pc)
      * @param pcs the <code>Collection</code> of instances to refresh.
      */
-    void refreshAll (Collection pcs);
+    void refreshAll (Collection<?> pcs);
     
     /** Refresh the state of all applicable instances from the data store.
      * <P>If called with an active transaction, all transactional instances
@@ -446,7 +446,7 @@ public interface PersistenceManager extends AutoCloseable {
      * of toString() on the object id instance.
      * @return an instance of the object identity class
      */
-    Object newObjectIdInstance (Class pcClass, Object key);
+    Object newObjectIdInstance (Class<?> pcClass, Object key);
     
     /**
      * Return the objects with the given oids.
@@ -458,7 +458,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @see #getObjectById(Object,boolean)
      * @since 2.0
      */
-    Collection getObjectsById (Collection oids, boolean validate);
+    Collection getObjectsById (Collection<?> oids, boolean validate);
 
     /**
      * Return the objects with the given oids. This method is equivalent 
@@ -470,7 +470,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @see #getObjectsById(Collection,boolean)
      * @since 2.0
      */
-    Collection getObjectsById (Collection oids);
+    Collection getObjectsById (Collection<?> oids);
 
     /**
      * Return the objects with the given oids.
@@ -601,7 +601,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @param pcs a <code>Collection</code> of persistent instances
      * @see #deletePersistent(Object pc)
      */
-    void deletePersistentAll (Collection pcs);
+    void deletePersistentAll (Collection<?> pcs);
     
     /** Make an instance transient, removing it from management by this
      * <code>PersistenceManager</code>.
@@ -631,7 +631,7 @@ public interface PersistenceManager extends AutoCloseable {
      * is preserved unchanged.
      * @param pcs the instances to make transient.
      */ 
-    void makeTransientAll (Collection pcs);
+    void makeTransientAll (Collection<?> pcs);
 
     /** Make an instance transient, removing it from management by this 
      * <code>PersistenceManager</code>. If the useFetchPlan parameter is 
@@ -696,7 +696,7 @@ public interface PersistenceManager extends AutoCloseable {
      * which fields to load and which instances to make transient
      * @since 2.0
      */
-    void makeTransientAll (Collection pcs, boolean useFetchPlan);
+    void makeTransientAll (Collection<?> pcs, boolean useFetchPlan);
 
     /** Make an instance subject to transactional boundaries.
      *
@@ -727,7 +727,7 @@ public interface PersistenceManager extends AutoCloseable {
      * transactional.
      * @see #makeTransactional(Object pc)
      */
-    void makeTransactionalAll (Collection pcs);
+    void makeTransactionalAll (Collection<?> pcs);
     
     /** Make an instance non-transactional after commit.
      *
@@ -754,7 +754,7 @@ public interface PersistenceManager extends AutoCloseable {
      * nontransactional.
      * @see #makeNontransactional(Object pc)
      */
-    void makeNontransactionalAll (Collection pcs);
+    void makeNontransactionalAll (Collection<?> pcs);
 
     /** Retrieve field values of an instance from the store.  This tells
      * the <code>PersistenceManager</code> that the application intends to use 
@@ -791,7 +791,7 @@ public interface PersistenceManager extends AutoCloseable {
      * the class to retrieve associated instances.
      * @param pcs the instances
      */
-    void retrieveAll (Collection pcs);
+    void retrieveAll (Collection<?> pcs);
     
     /** Retrieve field values of instances from the store.  This tells
      * the <code>PersistenceManager</code> that the application intends to use 
@@ -812,7 +812,7 @@ public interface PersistenceManager extends AutoCloseable {
      * which fields to load and which instances to retrieve.
      * @since 1.0.1
      */
-    void retrieveAll (Collection pcs, boolean useFetchPlan);
+    void retrieveAll (Collection<?> pcs, boolean useFetchPlan);
     
     /** Retrieve field values of instances from the store.  This tells
      * the <code>PersistenceManager</code> that the application intends to use 
@@ -882,7 +882,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @return the <code>Class</code> of the ObjectId of the parameter
      * @see #getObjectById
      */
-    Class getObjectIdClass(Class cls);
+    Class<?> getObjectIdClass(Class<?> cls);
   
     /** Set the Multithreaded flag for this <code>PersistenceManager</code>.  
      * Applications that use multiple threads to invoke methods or access fields 
@@ -1215,7 +1215,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @since 2.0
      */
     void addInstanceLifecycleListener (InstanceLifecycleListener listener,
-        Class... classes);
+        Class<?>... classes);
 
     /**
      * Removes the listener instance from the list of lifecycle event listeners.
@@ -1259,7 +1259,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @return the objects
      * @since 2.1
      */
-    Set getManagedObjects(Class... classes);
+    Set getManagedObjects(Class<?>... classes);
 
     /**
      * Get the objects managed by this persistence manager having the
@@ -1269,7 +1269,7 @@ public interface PersistenceManager extends AutoCloseable {
      * @return the objects
      * @since 2.1
      */
-    Set getManagedObjects(EnumSet<ObjectState> states, Class... classes);
+    Set getManagedObjects(EnumSet<ObjectState> states, Class<?>... classes);
 
     /**
      * Get a modifiable <code>FetchGroup</code> for the Class and name.
@@ -1291,7 +1291,7 @@ public interface PersistenceManager extends AutoCloseable {
      * class or interface
      * @since 2.2
      */
-    FetchGroup getFetchGroup(Class cls, String name);
+    FetchGroup getFetchGroup(Class<?> cls, String name);
 
     /**
      * Set a persistence manager property. This can be a standard property
diff --git a/api/src/main/java/javax/jdo/PersistenceManagerFactory.java b/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
index 7daa7e24..5c451365 100644
--- a/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
+++ b/api/src/main/java/javax/jdo/PersistenceManagerFactory.java
@@ -657,7 +657,7 @@ public interface PersistenceManagerFactory extends Serializable {
      * @since 2.0
      */
     void addInstanceLifecycleListener (InstanceLifecycleListener listener,
-        Class[] classes);
+        Class<?>[] classes);
 
     /**
      * Remove the parameter listener instance from the list of
@@ -738,7 +738,7 @@ public interface PersistenceManagerFactory extends Serializable {
      * class or interface
      * @since 2.2
      */
-    FetchGroup getFetchGroup(Class cls, String name);
+    FetchGroup getFetchGroup(Class<?> cls, String name);
 
     /**
      * Get a modifiable Set containing a mutable copy of all currently active
@@ -751,7 +751,7 @@ public interface PersistenceManagerFactory extends Serializable {
      * {@link JDOPermission} ("getMetadata")
      * @since 2.2
      */
-    Set getFetchGroups();
+    Set<FetchGroup> getFetchGroups();
 
     /**
      * Method to register metadata with the persistence process managed by this
diff --git a/api/src/main/java/javax/jdo/Query.java b/api/src/main/java/javax/jdo/Query.java
index 2d3750e6..f1239b95 100644
--- a/api/src/main/java/javax/jdo/Query.java
+++ b/api/src/main/java/javax/jdo/Query.java
@@ -318,7 +318,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @see #executeWithArray(Object[] parameters)
      * @param parameters the <code>Map</code> containing all of the parameters.
      */
-    Object executeWithMap (Map parameters);
+    Object executeWithMap (Map<String, ?> parameters);
     
     /** Execute the query and return the filtered <code>Collection</code>.
      *
@@ -375,9 +375,8 @@ public interface Query<T> extends AutoCloseable, Serializable {
 
     /**
      * Don't use this method directly; use <code>closeAll()</code> instead. It is intended for use with try-with-resources.
-     * @throws Exception if this resource cannot be closed
      */
-    void close() throws Exception;
+    void close();
 
     /**
      * Set the grouping expressions, optionally including a "having"
@@ -468,7 +467,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param cls the result class
      * @since 2.0
      */
-    void setResultClass(Class cls);
+    void setResultClass(Class<?> cls);
 
     /**
      * Set the range of results to return. The execution of the query is
@@ -524,7 +523,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @see #addExtension
      * @since 2.0
      */
-    void setExtensions(Map extensions);
+    void setExtensions(Map<?, ?> extensions);
 
     /**
      * Returns the <code>FetchPlan</code> used by this
@@ -554,7 +553,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @return the number of instances of the candidate class that were deleted
      * @since 2.0
      */
-    long deletePersistentAll(Map parameters);
+    long deletePersistentAll(Map<?, ?> parameters);
 
     /**
      * Deletes all the instances of the candidate class that pass the
@@ -610,7 +609,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      *    String candidateCollectionExpression, String... parameters)
      * @since 2.1
      */
-    void addSubquery(Query sub, String variableDeclaration, String candidateCollectionExpression);
+    void addSubquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression);
 
     /**
      * Add a subquery to this query.
@@ -628,7 +627,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      *    String candidateCollectionExpression, String... parameters)
      * @since 2.1
      */
-    void addSubquery(Query sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
+    void addSubquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
 
     /**
      * Add a subquery to this query.
@@ -669,7 +668,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * the parameters in the subquery
      * @since 2.1
      */
-    void addSubquery(Query sub, String variableDeclaration, 
+    void addSubquery(Query<?> sub, String variableDeclaration,
          String candidateCollectionExpression, String... parameters);
 
     /**
@@ -691,8 +690,8 @@ public interface Query<T> extends AutoCloseable, Serializable {
      *    String candidateCollectionExpression, String... parameters)
      * @since 2.1
      */
-    void addSubquery(Query sub, String variableDeclaration, 
-         String candidateCollectionExpression, Map parameters);
+    void addSubquery(Query<?> sub, String variableDeclaration,
+         String candidateCollectionExpression, Map<?, ?> parameters);
 
     /**
      * Specify a timeout interval (milliseconds) for any read operations
@@ -860,7 +859,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param candidateCollectionExpression the candidate collection of the subquery as an expression using terms of the outer query
      * @return This query
      */
-    Query<T> subquery(Query sub, String variableDeclaration, String candidateCollectionExpression);
+    Query<T> subquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression);
 
     /**
      * Add a subquery to this query.
@@ -871,7 +870,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param parameter the expression from the outer query to bind the parameter in the subquery
      * @return This query
      */
-    Query<T> subquery(Query sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
+    Query<T> subquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression, String parameter);
 
     /**
      * Add a subquery to this query.
@@ -882,7 +881,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param parameters the expressions from the outer query to bind the parameters in the subquery
      * @return This query
      */
-    Query<T> subquery(Query sub, String variableDeclaration, String candidateCollectionExpression, String... parameters);
+    Query<T> subquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression, String... parameters);
 
     /**
      * Add a subquery to this query.
@@ -893,7 +892,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param parameters the expressions from the outer query to bind the parameter in the subquery
      * @return This query
      */
-    Query<T> subquery(Query sub, String variableDeclaration, String candidateCollectionExpression, Map parameters);
+    Query<T> subquery(Query<?> sub, String variableDeclaration, String candidateCollectionExpression, Map<?, ?> parameters);
 
     /**
      * Set the import statements to be used to identify the fully qualified name of variables or parameters. 
@@ -973,7 +972,7 @@ public interface Query<T> extends AutoCloseable, Serializable {
      * @param values The extension map of keys and values
      * @return This query
      */
-    Query<T> extensions(Map values);
+    Query<T> extensions(Map<?, ?> values);
 
     /**
      * Method to set the named parameters on this query prior to execution.
diff --git a/api/src/main/java/javax/jdo/annotations/Element.java b/api/src/main/java/javax/jdo/annotations/Element.java
index 358ad6e5..e91379e4 100644
--- a/api/src/main/java/javax/jdo/annotations/Element.java
+++ b/api/src/main/java/javax/jdo/annotations/Element.java
@@ -41,7 +41,7 @@ public @interface Element
      * implementation supports multiple types.
      * @return the types of elements
      */
-    Class[] types() default {};
+    Class<?>[] types() default {};
 
     /**
      * Whether the element is to be stored serialized (into a join table)
diff --git a/api/src/main/java/javax/jdo/annotations/Key.java b/api/src/main/java/javax/jdo/annotations/Key.java
index e9c76e6f..8f835e29 100644
--- a/api/src/main/java/javax/jdo/annotations/Key.java
+++ b/api/src/main/java/javax/jdo/annotations/Key.java
@@ -41,7 +41,7 @@ public @interface Key
      * implementation supports multiple types.
      * @return the types of keys
      */
-    Class[] types() default {};
+    Class<?>[] types() default {};
 
     /**
      * Whether the key is to be stored serialized (into a single column of a
diff --git a/api/src/main/java/javax/jdo/annotations/PersistenceCapable.java b/api/src/main/java/javax/jdo/annotations/PersistenceCapable.java
index f7c438ed..deeff80b 100644
--- a/api/src/main/java/javax/jdo/annotations/PersistenceCapable.java
+++ b/api/src/main/java/javax/jdo/annotations/PersistenceCapable.java
@@ -84,7 +84,7 @@ public @interface PersistenceCapable
      * Primary key class when using application identity and using own PK. 
      * @return Object-id class (if specified)
      */
-    Class objectIdClass() default void.class;
+    Class<?> objectIdClass() default void.class;
 
     /**
      * Whether this class is cacheable in a Level2 cache.
diff --git a/api/src/main/java/javax/jdo/annotations/Persistent.java b/api/src/main/java/javax/jdo/annotations/Persistent.java
index 46e24690..99d42ca1 100644
--- a/api/src/main/java/javax/jdo/annotations/Persistent.java
+++ b/api/src/main/java/javax/jdo/annotations/Persistent.java
@@ -163,7 +163,7 @@ public @interface Persistent
      * for persistence.
      * @return the types
      */
-    Class[] types() default {};
+    Class<?>[] types() default {};
 
     /** Name of the related member in the other class 
      * where this value is mapped (bidirectional relationship). 
diff --git a/api/src/main/java/javax/jdo/annotations/Query.java b/api/src/main/java/javax/jdo/annotations/Query.java
index c5c652c9..29d96b30 100644
--- a/api/src/main/java/javax/jdo/annotations/Query.java
+++ b/api/src/main/java/javax/jdo/annotations/Query.java
@@ -62,7 +62,7 @@ public @interface Query
     /** Result class into which to put the results.
      * @return the class of the result
      */
-    Class resultClass() default void.class;
+    Class<?> resultClass() default void.class;
 
     /** The name of the fetch plan used by this query
      * @return the fetch plan
diff --git a/api/src/main/java/javax/jdo/annotations/Sequence.java b/api/src/main/java/javax/jdo/annotations/Sequence.java
index 94544348..461e8dd4 100644
--- a/api/src/main/java/javax/jdo/annotations/Sequence.java
+++ b/api/src/main/java/javax/jdo/annotations/Sequence.java
@@ -50,7 +50,7 @@ public @interface Sequence
     /** Name of a factory class for generating the sequence values. 
      * @return the name of the factory class for the sequence
      */
-    Class factoryClass() default void.class;
+    Class<?> factoryClass() default void.class;
 
     /** Vendor extensions for this sequence. 
      * @return vendor extensions
diff --git a/api/src/main/java/javax/jdo/annotations/Value.java b/api/src/main/java/javax/jdo/annotations/Value.java
index f62884b5..8aec0fd5 100644
--- a/api/src/main/java/javax/jdo/annotations/Value.java
+++ b/api/src/main/java/javax/jdo/annotations/Value.java
@@ -41,7 +41,7 @@ public @interface Value
      * implementation supports multiple types.
      * @return the types of values
      */
-    Class[] types() default {};
+    Class<?>[] types() default {};
 
     /**
      * Whether the value  is to be stored serialized (into a single column of a
diff --git a/api/src/main/java/javax/jdo/datastore/DataStoreCache.java b/api/src/main/java/javax/jdo/datastore/DataStoreCache.java
index e2a2fc00..14cefc09 100644
--- a/api/src/main/java/javax/jdo/datastore/DataStoreCache.java
+++ b/api/src/main/java/javax/jdo/datastore/DataStoreCache.java
@@ -55,14 +55,14 @@ public interface DataStoreCache {
      * @param oids the object ids of the instance to evict.
      * @since 2.0
      */
-    void evictAll (Collection oids);
+    void evictAll (Collection<?> oids);
 
     /** Evict the parameter instances from the second-level cache.
      * @param pcClass the class of instances to evict
      * @param subclasses if true, evict instances of subclasses also
      * @since 2.1
      */
-    void evictAll (boolean subclasses, Class pcClass);
+    void evictAll (boolean subclasses, Class<?> pcClass);
 
     /** Pin the parameter instance in the second-level cache.
      * @param oid the object id of the instance to pin.
@@ -74,7 +74,7 @@ public interface DataStoreCache {
      * @param oids the object ids of the instances to pin.
      * @since 2.0
      */
-    void pinAll (Collection oids);
+    void pinAll (Collection<?> oids);
 
     /** Pin the parameter instances in the second-level cache.
      * @param oids the object ids of the instances to pin.
@@ -87,7 +87,7 @@ public interface DataStoreCache {
      * @param subclasses if true, pin instances of subclasses also
      * @since 2.1
      */
-    void pinAll (boolean subclasses, Class pcClass);
+    void pinAll (boolean subclasses, Class<?> pcClass);
 
     /** Unpin the parameter instance from the second-level cache.
      * @param oid the object id of the instance to unpin.
@@ -99,7 +99,7 @@ public interface DataStoreCache {
      * @param oids the object ids of the instance to evict.
      * @since 2.0
      */
-    void unpinAll(Collection oids);
+    void unpinAll(Collection<?> oids);
 
     /** Unpin the parameter instance from the second-level cache.
      * @param oids the object id of the instance to evict.
@@ -112,7 +112,7 @@ public interface DataStoreCache {
      * @param subclasses if true, unpin instances of subclasses also
      * @since 2.1
      */
-    void unpinAll(boolean subclasses, Class pcClass);
+    void unpinAll(boolean subclasses, Class<?> pcClass);
     
     /** 
      * This class is an empty implementation of the DataStoreCache 
@@ -134,10 +134,10 @@ public interface DataStoreCache {
         public void evictAll(Object... oids) {
         }
 
-        public void evictAll(Collection oids) {
+        public void evictAll(Collection<?> oids) {
         }
 
-        public void evictAll(boolean subclasses, Class pcClass) {
+        public void evictAll(boolean subclasses, Class<?> pcClass) {
         }
 
         public void pin(Object oid) {
@@ -146,10 +146,10 @@ public interface DataStoreCache {
         public void pinAll(Object... oids) {
         }
 
-        public void pinAll(Collection oids) {
+        public void pinAll(Collection<?> oids) {
         }
 
-        public void pinAll(boolean subclasses, Class pcClass) {
+        public void pinAll(boolean subclasses, Class<?> pcClass) {
         }
 
         public void unpin(Object oid) {
@@ -158,10 +158,10 @@ public interface DataStoreCache {
         public void unpinAll(Object... oids) {
         }
 
-        public void unpinAll(Collection oids) {
+        public void unpinAll(Collection<?> oids) {
         }
 
-        public void unpinAll(boolean subclasses, Class pcClass) {
+        public void unpinAll(boolean subclasses, Class<?> pcClass) {
         }
     }
 }
diff --git a/api/src/main/java/javax/jdo/identity/ByteIdentity.java b/api/src/main/java/javax/jdo/identity/ByteIdentity.java
index d56a0926..512d9a25 100644
--- a/api/src/main/java/javax/jdo/identity/ByteIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/ByteIdentity.java
@@ -29,8 +29,10 @@ import java.io.ObjectOutput;
 /** This class is for identity with a single byte field.
  * @version 2.0
  */
-public class ByteIdentity extends SingleFieldIdentity {
-    
+public class ByteIdentity extends SingleFieldIdentity<ByteIdentity> {
+
+    private static final long serialVersionUID = 1L;
+
     /** The key.
      */
     private byte key;
@@ -46,7 +48,7 @@ public class ByteIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param key the key
      */
-    public ByteIdentity(Class pcClass, byte key) {
+    public ByteIdentity(Class<?> pcClass, byte key) {
         super(pcClass);
         construct(key);
     }
@@ -55,7 +57,7 @@ public class ByteIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param key the key
      */
-    public ByteIdentity(Class pcClass, Byte key) {
+    public ByteIdentity(Class<?> pcClass, Byte key) {
         super(pcClass);
         setKeyAsObject(key);
         construct(key.byteValue());
@@ -65,7 +67,7 @@ public class ByteIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param str the key
      */
-    public ByteIdentity(Class pcClass, String str) {
+    public ByteIdentity(Class<?> pcClass, String str) {
         super(pcClass);
         assertKeyNotNull(str);
         construct(Byte.parseByte(str));
@@ -110,20 +112,12 @@ public class ByteIdentity extends SingleFieldIdentity {
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof ByteIdentity) {
-        	ByteIdentity other = (ByteIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                return (key - other.key);
-            } else {
-                return result;
-            }
-        }
-        else if (o == null) {
+    public int compareTo(ByteIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
+        int result = super.compare(o);
+        return (result == 0) ? (key - o.key) : result;
     }
 
     /** Create the key as an Object.
diff --git a/api/src/main/java/javax/jdo/identity/CharIdentity.java b/api/src/main/java/javax/jdo/identity/CharIdentity.java
index 7cf03bb6..e5d475bb 100644
--- a/api/src/main/java/javax/jdo/identity/CharIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/CharIdentity.java
@@ -31,11 +31,9 @@ import javax.jdo.spi.I18NHelper;
 /** This class is for identity with a single character field.
  * @version 2.0
  */
-public class CharIdentity extends SingleFieldIdentity {
+public class CharIdentity extends SingleFieldIdentity<CharIdentity> {
 
-    /** The Internationalization message helper.
-     */
-    private static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
+    private static final long serialVersionUID = 1L;
 
     /** The key.
      */
@@ -50,7 +48,7 @@ public class CharIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param key the key
      */
-    public CharIdentity (Class pcClass, char key) {
+    public CharIdentity (Class<?> pcClass, char key) {
         super (pcClass);
         construct(key);
     }
@@ -59,7 +57,7 @@ public class CharIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param key the key
      */
-    public CharIdentity (Class pcClass, Character key) {
+    public CharIdentity (Class<?> pcClass, Character key) {
         super (pcClass);
         setKeyAsObject(key);
         construct(key.charValue());
@@ -70,12 +68,12 @@ public class CharIdentity extends SingleFieldIdentity {
      * @param pcClass the target class
      * @param str the key
      */
-    public CharIdentity (Class pcClass, String str) {
+    public CharIdentity (Class<?> pcClass, String str) {
         super(pcClass);
         assertKeyNotNull(str);
         if (str.length() != 1) 
             throw new IllegalArgumentException(
-                msg.msg("EXC_StringWrongLength")); //NOI18N
+                MSG.msg("EXC_StringWrongLength")); //NOI18N
         construct(str.charAt(0));
     }
 
@@ -118,20 +116,12 @@ public class CharIdentity extends SingleFieldIdentity {
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof CharIdentity) {
-        	CharIdentity other = (CharIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                return (key - other.key);
-            } else {
-                return result;
-            }
-        }
-        else if (o == null) {
+    public int compareTo(CharIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
+        int result = super.compare(o);
+        return (result == 0) ? (key - o.key) : result;
     }
 
     /** Create the key as an Object.
diff --git a/api/src/main/java/javax/jdo/identity/IntIdentity.java b/api/src/main/java/javax/jdo/identity/IntIdentity.java
index e2159409..27a9ebd0 100644
--- a/api/src/main/java/javax/jdo/identity/IntIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/IntIdentity.java
@@ -29,7 +29,9 @@ import java.io.ObjectOutput;
 /** This class is for identity with a single int field.
  * @version 2.0
  */
-public class IntIdentity extends SingleFieldIdentity {
+public class IntIdentity extends SingleFieldIdentity<IntIdentity> {
+
+    private static final long serialVersionUID = 1L;
 
     private int key;
 
@@ -42,7 +44,7 @@ public class IntIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param key the key
      */
-    public IntIdentity (Class pcClass, int key) {
+    public IntIdentity (Class<?> pcClass, int key) {
         super(pcClass);
         construct(key);
 	}
@@ -51,7 +53,7 @@ public class IntIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param key the key
      */
-    public IntIdentity (Class pcClass, Integer key) {
+    public IntIdentity (Class<?> pcClass, Integer key) {
         super(pcClass);
         setKeyAsObject(key);
         construct(key.intValue ());
@@ -62,7 +64,7 @@ public class IntIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param str the key
      */
-    public IntIdentity (Class pcClass, String str) {
+    public IntIdentity (Class<?> pcClass, String str) {
         super(pcClass);
         assertKeyNotNull(str);
         construct(Integer.parseInt(str));
@@ -107,20 +109,12 @@ public class IntIdentity extends SingleFieldIdentity {
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof IntIdentity) {
-        	IntIdentity other = (IntIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                return (key - other.key);
-            } else {
-                return result;
-            }
-        }
-       else if (o == null) {
+    public int compareTo(IntIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
+        int result = super.compare(o);
+        return (result == 0) ? (key - o.key) : result;
     }
 
     /** Create the key as an Object.
diff --git a/api/src/main/java/javax/jdo/identity/LongIdentity.java b/api/src/main/java/javax/jdo/identity/LongIdentity.java
index b522751b..c4c5c7c0 100644
--- a/api/src/main/java/javax/jdo/identity/LongIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/LongIdentity.java
@@ -29,8 +29,10 @@ import java.io.ObjectOutput;
 /** This class is for identity with a single long field.
  * @version 2.0
  */
-public class LongIdentity extends SingleFieldIdentity {
-	
+public class LongIdentity extends SingleFieldIdentity<LongIdentity> {
+
+    private static final long serialVersionUID = 1L;
+
     /** The key.
      */
     private long key;
@@ -44,7 +46,7 @@ public class LongIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param key the key
      */
-    public LongIdentity (Class pcClass, long key) {
+    public LongIdentity (Class<?> pcClass, long key) {
         super (pcClass);
         construct(key);
     }
@@ -53,7 +55,7 @@ public class LongIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param key the key
      */
-    public LongIdentity (Class pcClass, Long key) {
+    public LongIdentity (Class<?> pcClass, Long key) {
         super(pcClass);
         setKeyAsObject(key);
         construct(key.longValue());
@@ -63,7 +65,7 @@ public class LongIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param str the key
      */
-    public LongIdentity (Class pcClass, String str) {
+    public LongIdentity (Class<?> pcClass, String str) {
         super(pcClass);
         assertKeyNotNull(str);
         construct(Long.parseLong(str));
@@ -108,29 +110,25 @@ public class LongIdentity extends SingleFieldIdentity {
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof LongIdentity) {
-        	LongIdentity other = (LongIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                long diff = key - other.key;
-                if (diff == 0) {
-                    return 0;
+    public int compareTo(LongIdentity o) {
+        if (o == null) {
+            throw new ClassCastException("object is null");
+        }
+        int result = super.compare(o);
+        if (result == 0) {
+            long diff = key - o.key;
+            if (diff == 0) {
+                return 0;
+            } else {
+                if (diff < 0) {
+                    return -1;
                 } else {
-                    if (diff < 0) {
-                        return -1;
-                    } else {
-                        return 1;
-                    }
+                    return 1;
                 }
-            } else {
-                return result;
             }
+        } else {
+            return result;
         }
-        else if (o == null) {
-            throw new ClassCastException("object is null");
-        }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
     }
 
     /** Create the key as an Object.
diff --git a/api/src/main/java/javax/jdo/identity/ObjectIdentity.java b/api/src/main/java/javax/jdo/identity/ObjectIdentity.java
index 6cace865..1f558e0d 100644
--- a/api/src/main/java/javax/jdo/identity/ObjectIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/ObjectIdentity.java
@@ -38,21 +38,16 @@ import javax.jdo.spi.JDOImplHelper;
 /** This class is for identity with a single Object type field.
  * @version 2.0
  */
-public class ObjectIdentity extends SingleFieldIdentity {
-    
+public class ObjectIdentity extends SingleFieldIdentity<ObjectIdentity> {
+
+    private static final long serialVersionUID = 1L;
+
     /** The key is stored in the superclass field keyAsObject.
      */
     
     /** The JDOImplHelper instance used for parsing the String to an Object.
      */
-    private static JDOImplHelper helper = (JDOImplHelper)
-        doPrivileged(
-            new PrivilegedAction<JDOImplHelper> () {
-                public JDOImplHelper run () {
-                    return JDOImplHelper.getInstance();
-                }
-            }
-        );
+    private static final JDOImplHelper HELPER = doPrivileged(JDOImplHelper::getInstance);
 
     @SuppressWarnings("unchecked")
     private static <T> T doPrivileged(PrivilegedAction<T> privilegedAction) {
@@ -75,7 +70,7 @@ public class ObjectIdentity extends SingleFieldIdentity {
      * @param param the key
      */
     @SuppressWarnings("static-access")
-    public ObjectIdentity (Class pcClass, Object param) {
+    public ObjectIdentity (Class<?> pcClass, Object param) {
         super (pcClass);
         assertKeyNotNull(param);
         String paramString = null;
@@ -86,20 +81,20 @@ public class ObjectIdentity extends SingleFieldIdentity {
             paramString = (String)param;
             if (paramString.length() < 3) {
                 throw new JDOUserException(
-                    msg.msg("EXC_ObjectIdentityStringConstructionTooShort") + //NOI18N
-                    msg.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
+                    MSG.msg("EXC_ObjectIdentityStringConstructionTooShort") + //NOI18N
+                    MSG.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
                         paramString));
             }
             int indexOfDelimiter = paramString.indexOf(STRING_DELIMITER);
             if (indexOfDelimiter < 0) {
                 throw new JDOUserException(
-                    msg.msg("EXC_ObjectIdentityStringConstructionNoDelimiter") + //NOI18N
-                    msg.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
+                    MSG.msg("EXC_ObjectIdentityStringConstructionNoDelimiter") + //NOI18N
+                    MSG.msg("EXC_ObjectIdentityStringConstructionUsage", //NOI18N
                         paramString));
             }
             keyString = paramString.substring(indexOfDelimiter+1);
             className = paramString.substring(0, indexOfDelimiter);
-            keyAsObject = helper.construct(className, keyString);
+            keyAsObject = HELPER.construct(className, keyString);
         } else {
             keyAsObject = param;
         }
@@ -165,31 +160,26 @@ public class ObjectIdentity extends SingleFieldIdentity {
      * @since 2.2
      */
     @SuppressWarnings("unchecked")
-    public int compareTo(Object o) {
-        if (o instanceof ObjectIdentity) {
-        	ObjectIdentity other = (ObjectIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                if (other.keyAsObject instanceof Comparable && 
-                        keyAsObject instanceof Comparable) {
-                    return ((Comparable)keyAsObject).compareTo(
-                            (Comparable)other.keyAsObject);
-                }
-                else
-                {
-                    throw new ClassCastException("The key class (" + 
-                            keyAsObject.getClass().getName() + 
-                            ") does not implement Comparable");
-                }
-            } else {
-                return result;
-            }
-        }
-        else if (o == null) {
+    public int compareTo(ObjectIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + 
-                " != " + o.getClass().getName());
+        int result = super.compare(o);
+        if (result == 0) {
+            if (o.keyAsObject instanceof Comparable &&
+                    keyAsObject instanceof Comparable) {
+                return ((Comparable<Object>)keyAsObject).compareTo(
+                        o.keyAsObject);
+            }
+            else
+            {
+                throw new ClassCastException("The key class (" +
+                        keyAsObject.getClass().getName() +
+                        ") does not implement Comparable");
+            }
+        } else {
+            return result;
+        }
     }
 
     /** Write this object. Write the superclass first.
diff --git a/api/src/main/java/javax/jdo/identity/ShortIdentity.java b/api/src/main/java/javax/jdo/identity/ShortIdentity.java
index c7dee68e..de03b616 100644
--- a/api/src/main/java/javax/jdo/identity/ShortIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/ShortIdentity.java
@@ -29,10 +29,11 @@ import java.io.ObjectOutput;
 /** This class is for identity with a single short field.
  * @version 2.0
  */
-public class ShortIdentity
-	extends SingleFieldIdentity
+public class ShortIdentity extends SingleFieldIdentity<ShortIdentity>
 {
-	private short key;
+    private static final long serialVersionUID = 1L;
+
+    private short key;
 
     private void construct(short key) {
         this.key = key;
@@ -43,7 +44,7 @@ public class ShortIdentity
      * @param pcClass the class
      * @param key the key
      */
-    public ShortIdentity (Class pcClass, short key) {
+    public ShortIdentity (Class<?> pcClass, short key) {
         super(pcClass);
         construct(key);
     }
@@ -52,7 +53,7 @@ public class ShortIdentity
      * @param pcClass the class
      * @param key the key
      */
-    public ShortIdentity (Class pcClass, Short key) {
+    public ShortIdentity (Class<?> pcClass, Short key) {
         super(pcClass);
         setKeyAsObject(key);
         construct(key.shortValue());
@@ -62,7 +63,7 @@ public class ShortIdentity
      * @param pcClass the class
      * @param str the key
      */
-    public ShortIdentity (Class pcClass, String str) {
+    public ShortIdentity (Class<?> pcClass, String str) {
         super(pcClass);
         assertKeyNotNull(str);
         construct(Short.parseShort (str));
@@ -107,20 +108,12 @@ public class ShortIdentity
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof ShortIdentity) {
-        	ShortIdentity other = (ShortIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                return (key - other.key);
-            } else {
-                return result;
-            }
-        }
-        else if (o == null) {
+    public int compareTo(ShortIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
+        int result = super.compare(o);
+        return (result == 0) ? (key - o.key) : result;
     }
 
     /** Create the key as an Object.
diff --git a/api/src/main/java/javax/jdo/identity/SingleFieldIdentity.java b/api/src/main/java/javax/jdo/identity/SingleFieldIdentity.java
index 4a1dda64..19679037 100644
--- a/api/src/main/java/javax/jdo/identity/SingleFieldIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/SingleFieldIdentity.java
@@ -39,16 +39,18 @@ import javax.jdo.spi.I18NHelper;
  * a new user-defined class for the purpose.
  * @version 2.0
  */
-public abstract class SingleFieldIdentity
-    implements Externalizable, Comparable {
-    
+public abstract class SingleFieldIdentity<SUBCLASS extends SingleFieldIdentity<SUBCLASS>>
+        implements Externalizable, Comparable<SUBCLASS>  {
+
+    private static final long serialVersionUID = 1L;
+
     /** The Internationalization message helper.
      */
-    protected static I18NHelper msg = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
+    protected static final I18NHelper MSG = I18NHelper.getInstance ("javax.jdo.Bundle"); //NOI18N
 
     /** The class of the target object.
      */
-    transient private Class targetClass;
+    transient private Class<?> targetClass;
     
     /** The name of the class of the target object.
      */
@@ -66,7 +68,7 @@ public abstract class SingleFieldIdentity
      * @param pcClass the class of the target
      * @since 2.0
      */
-    protected SingleFieldIdentity(Class pcClass) {
+    protected SingleFieldIdentity(Class<?> pcClass) {
         if (pcClass == null)
             throw new NullPointerException();
         targetClass = pcClass;
@@ -97,7 +99,7 @@ public abstract class SingleFieldIdentity
     protected void assertKeyNotNull(Object key) {
         if (key == null) {
             throw new JDONullIdentityException(
-                msg.msg("EXC_SingleFieldIdentityNullParameter")); //NOI18N
+                MSG.msg("EXC_SingleFieldIdentityNullParameter")); //NOI18N
         }
     }
     
@@ -105,7 +107,7 @@ public abstract class SingleFieldIdentity
      * @return the target class.
      * @since 2.0
      */
-    public Class getTargetClass() {
+    public Class<?> getTargetClass() {
         return targetClass;
     }
 
@@ -135,7 +137,7 @@ public abstract class SingleFieldIdentity
      */
     protected Object createKeyAsObject() {
         throw new JDOFatalInternalException
-                (msg.msg("EXC_CreateKeyAsObjectMustNotBeCalled"));
+                (MSG.msg("EXC_CreateKeyAsObjectMustNotBeCalled"));
     }
     
     /** Check the class and class name and object type. If restored
@@ -149,7 +151,7 @@ public abstract class SingleFieldIdentity
         } else if (obj == null || this.getClass() != obj.getClass()) {
             return false;
         } else {
-            SingleFieldIdentity other = (SingleFieldIdentity) obj;
+            SingleFieldIdentity<?> other = (SingleFieldIdentity<?>) obj;
             if (targetClass != null && targetClass == other.targetClass)
                 return true;
             return targetClassName.equals (other.targetClassName);
@@ -195,7 +197,7 @@ public abstract class SingleFieldIdentity
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    protected int compare(SingleFieldIdentity o) {
+    protected int compare(SingleFieldIdentity<?> o) {
             return targetClassName.compareTo(o.targetClassName);
         }
  
diff --git a/api/src/main/java/javax/jdo/identity/StringIdentity.java b/api/src/main/java/javax/jdo/identity/StringIdentity.java
index 80f0ac20..8fff524e 100644
--- a/api/src/main/java/javax/jdo/identity/StringIdentity.java
+++ b/api/src/main/java/javax/jdo/identity/StringIdentity.java
@@ -29,8 +29,10 @@ import java.io.ObjectOutput;
 /** This class is for identity with a single String field.
  * @version 2.0
  */
-public class StringIdentity extends SingleFieldIdentity {
-    
+public class StringIdentity extends SingleFieldIdentity<StringIdentity> {
+
+    private static final long serialVersionUID = 1L;
+
     /** The key is stored in the superclass field keyAsObject.
      */
     
@@ -38,7 +40,7 @@ public class StringIdentity extends SingleFieldIdentity {
      * @param pcClass the class
      * @param key the key
      */
-    public StringIdentity (Class pcClass, String key) {
+    public StringIdentity (Class<?> pcClass, String key) {
         super (pcClass);
         setKeyAsObject(key);
         hashCode = hashClassName() ^ key.hashCode();
@@ -83,20 +85,12 @@ public class StringIdentity extends SingleFieldIdentity {
      * @return The relative ordering between the objects
      * @since 2.2
      */
-    public int compareTo(Object o) {
-        if (o instanceof StringIdentity) {
-            StringIdentity other = (StringIdentity)o;
-            int result = super.compare(other);
-            if (result == 0) {
-                return ((String)keyAsObject).compareTo((String)other.keyAsObject);
-            } else {
-                return result;
-            }
-        }
-        else if (o == null) {
+    public int compareTo(StringIdentity o) {
+        if (o == null) {
             throw new ClassCastException("object is null");
         }
-        throw new ClassCastException(this.getClass().getName() + " != " + o.getClass().getName());
+        int result = super.compare(o);
+        return (result == 0) ? ((String)keyAsObject).compareTo((String)o.keyAsObject) : result;
     }
 
     /** Write this object. Write the superclass first.
@@ -113,6 +107,6 @@ public class StringIdentity extends SingleFieldIdentity {
     public void readExternal(ObjectInput in)
 		throws IOException, ClassNotFoundException {
         super.readExternal (in);
-        keyAsObject = (String)in.readObject();
+        keyAsObject = in.readObject();
     }
 }
diff --git a/api/src/main/java/javax/jdo/metadata/JDOMetadata.java b/api/src/main/java/javax/jdo/metadata/JDOMetadata.java
index 5c2a2a44..fe0c0634 100644
--- a/api/src/main/java/javax/jdo/metadata/JDOMetadata.java
+++ b/api/src/main/java/javax/jdo/metadata/JDOMetadata.java
@@ -83,7 +83,7 @@ public interface JDOMetadata extends Metadata {
      * @param cls Class to add
      * @return The ClassMetadata
      */
-    ClassMetadata newClassMetadata(Class cls);
+    ClassMetadata newClassMetadata(Class<?> cls);
 
     /**
      * Add a new interface to this JDO Metadata.
@@ -91,7 +91,7 @@ public interface JDOMetadata extends Metadata {
      * @param cls Class to add
      * @return The InterfaceMetadata
      */
-    InterfaceMetadata newInterfaceMetadata(Class cls);
+    InterfaceMetadata newInterfaceMetadata(Class<?> cls);
 
     /**
      * Accessor for any named queries defined on the JDO Metadata.
diff --git a/api/src/main/java/javax/jdo/metadata/PackageMetadata.java b/api/src/main/java/javax/jdo/metadata/PackageMetadata.java
index 67aff313..2f817a9a 100644
--- a/api/src/main/java/javax/jdo/metadata/PackageMetadata.java
+++ b/api/src/main/java/javax/jdo/metadata/PackageMetadata.java
@@ -73,7 +73,7 @@ public interface PackageMetadata extends Metadata {
      * @param cls The class
      * @return The ClassMetadata
      */
-    ClassMetadata newClassMetadata(Class cls);
+    ClassMetadata newClassMetadata(Class<?> cls);
 
     /**
      * Accessor for the number of classes defined in this package.
@@ -99,7 +99,7 @@ public interface PackageMetadata extends Metadata {
      * @param cls The class
      * @return The ClassMetadata
      */
-    InterfaceMetadata newInterfaceMetadata(Class cls);
+    InterfaceMetadata newInterfaceMetadata(Class<?> cls);
 
     /**
      * Accessor for the number of interfaces defined in this package.
diff --git a/api/src/main/java/javax/jdo/query/EnumExpression.java b/api/src/main/java/javax/jdo/query/EnumExpression.java
index 68e48b88..40d1fa33 100644
--- a/api/src/main/java/javax/jdo/query/EnumExpression.java
+++ b/api/src/main/java/javax/jdo/query/EnumExpression.java
@@ -21,11 +21,11 @@ package javax.jdo.query;
  * 
  * @param <T> Enum type
  */
-public interface EnumExpression<T> extends ComparableExpression<Enum>
+public interface EnumExpression<T> extends ComparableExpression<Enum<?>>
 {
     /**
      * Method to return an expression for the ordinal of this enum.
      * @return Expression for the ordinal of the passed enum
      */
-    NumericExpression ordinal();
+    NumericExpression<Integer> ordinal();
 }
diff --git a/api/src/main/java/javax/jdo/query/Expression.java b/api/src/main/java/javax/jdo/query/Expression.java
index b304c8f5..27c7d8be 100644
--- a/api/src/main/java/javax/jdo/query/Expression.java
+++ b/api/src/main/java/javax/jdo/query/Expression.java
@@ -28,7 +28,7 @@ public interface Expression<T>
      * @param expr Other expression
      * @return Whether they are equal
      */
-    BooleanExpression eq(Expression expr);
+    BooleanExpression eq(Expression<?> expr);
 
     /**
      * Method returning whether this expression equals the literal.
@@ -42,7 +42,7 @@ public interface Expression<T>
      * @param expr Other expression
      * @return Whether they are not equal
      */
-    BooleanExpression ne(Expression expr);
+    BooleanExpression ne(Expression<?> expr);
 
     /**
      * Method returning whether this expression doesn't equal the literal.
@@ -68,19 +68,19 @@ public interface Expression<T>
      * @param cls Class to check against
      * @return Whether it is an instanceof
      */
-    BooleanExpression instanceOf(Class cls);
+    BooleanExpression instanceOf(Class<?> cls);
 
     /**
      * Return an expression where this expression is cast to the specified type.
      * @param cls Class to cast to
      * @return The cast expression
      */
-    Expression cast(Class cls);
+    <S> Expression<S> cast(Class<S> cls);
 
     /**
      * Method to return an expression with the specified alias assigned to this expression.
      * @param alias the alias for this expression
      * @return the expression with an alias
      */
-    Expression as(String alias);
+    Expression<T> as(String alias);
 }
\ No newline at end of file
diff --git a/api/src/main/java/javax/jdo/query/PersistableExpression.java b/api/src/main/java/javax/jdo/query/PersistableExpression.java
index 6b355e3b..08bb4900 100644
--- a/api/src/main/java/javax/jdo/query/PersistableExpression.java
+++ b/api/src/main/java/javax/jdo/query/PersistableExpression.java
@@ -27,11 +27,11 @@ public interface PersistableExpression<T> extends Expression<T>
      * Method to return an expression for the (JDO) identity of this persistable object.
      * @return The identity expression
      */
-    Expression jdoObjectId();
+    Expression<?> jdoObjectId();
 
     /**
      * Method to return an expression for the (JDO) version of this persistable object.
      * @return The version expression
      */
-    Expression jdoVersion();
+    Expression<?> jdoVersion();
 }
\ No newline at end of file
diff --git a/api/src/main/java/javax/jdo/query/StringExpression.java b/api/src/main/java/javax/jdo/query/StringExpression.java
index 3ceacd21..d741bf0f 100644
--- a/api/src/main/java/javax/jdo/query/StringExpression.java
+++ b/api/src/main/java/javax/jdo/query/StringExpression.java
@@ -26,7 +26,7 @@ public interface StringExpression extends ComparableExpression<String>
      * @param expr The other expression
      * @return The summation
      */
-    StringExpression add(Expression expr);
+    StringExpression add(Expression<?> expr);
 
     /**
      * Method to return an expression for this expression added to the passed string (String concatenation).
diff --git a/api/src/main/java/javax/jdo/spi/I18NHelper.java b/api/src/main/java/javax/jdo/spi/I18NHelper.java
index 331a7b12..eff415d3 100644
--- a/api/src/main/java/javax/jdo/spi/I18NHelper.java
+++ b/api/src/main/java/javax/jdo/spi/I18NHelper.java
@@ -50,17 +50,15 @@ public class I18NHelper {
 
     /** Bundles that have already been loaded 
      */
-    private static Hashtable<String,ResourceBundle>
-            bundles = new Hashtable<String,ResourceBundle>();
+    private static final Hashtable<String,ResourceBundle> bundles = new Hashtable<>();
     
     /** Helper instances that have already been created 
      */
-    private static Hashtable<String,I18NHelper>
-            helpers = new Hashtable<String,I18NHelper>();
+    private static final Hashtable<String,I18NHelper> helpers = new Hashtable<>();
     
     /** The default locale for this VM.
      */
-    private static Locale       locale = Locale.getDefault();
+    private static final Locale locale = Locale.getDefault();
 
     /** The bundle used by this instance of the helper.
      */
@@ -71,7 +69,7 @@ public class I18NHelper {
     private Throwable           failure = null;
 
     /** The unqualified standard name of a bundle. */
-    private static final String bundleSuffix = ".Bundle";    // NOI18N
+    private static final String BUNDLE_SUFFIX = ".Bundle";    // NOI18N
 
     /** Constructor */
     private I18NHelper() {
@@ -107,15 +105,9 @@ public class I18NHelper {
      * @param cls the class object from which to load the resource bundle
      * @return the helper instance bound to the bundle
      */
-    public static I18NHelper getInstance (final Class cls) {
-        ClassLoader classLoader = doPrivileged (
-            new PrivilegedAction<ClassLoader> () {
-                public ClassLoader run () {
-                    return cls.getClassLoader();
-                }
-            }
-            );
-        String bundle = getPackageName (cls.getName()) + bundleSuffix;
+    public static I18NHelper getInstance (final Class<?> cls) {
+        ClassLoader classLoader = doPrivileged (cls::getClassLoader);
+        String bundle = getPackageName (cls.getName()) + BUNDLE_SUFFIX;
         return getInstance (bundle, classLoader);
     }
 
@@ -129,7 +121,7 @@ public class I18NHelper {
      */
     public static I18NHelper getInstance (String bundleName, 
                                           ClassLoader loader) {
-        I18NHelper helper = (I18NHelper) helpers.get (bundleName);
+        I18NHelper helper = helpers.get (bundleName);
         if (helper != null) {
             return helper;
         }
@@ -137,7 +129,7 @@ public class I18NHelper {
         helpers.put (bundleName, helper);
         // if two threads simultaneously create the same helper, return the first
         // one to be put into the Hashtable.  The other will be garbage collected.
-        return (I18NHelper) helpers.get (bundleName);
+        return helpers.get (bundleName);
     }
 
     /** Message formatter
@@ -229,9 +221,9 @@ public class I18NHelper {
      * @param loader the class loader from which to load the resource bundle
      * @return  the ResourceBundle
      */
-    final private static ResourceBundle loadBundle(
+    private static ResourceBundle loadBundle(
         String bundleName, ClassLoader loader) {
-        ResourceBundle messages = (ResourceBundle)bundles.get(bundleName);
+        ResourceBundle messages = bundles.get(bundleName);
 
         if (messages == null) //not found as loaded - add
         {
@@ -278,7 +270,7 @@ public class I18NHelper {
      * @param messageKey the message key
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, String messageKey) 
+    private static String getMessage(ResourceBundle messages, String messageKey)
     {
         return messages.getString(messageKey);
     }
@@ -290,7 +282,7 @@ public class I18NHelper {
      * @param msgArgs an array of arguments to substitute into the message
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, Object[] msgArgs) 
     {
         for (int i=0; i<msgArgs.length; i++) {
@@ -307,7 +299,7 @@ public class I18NHelper {
      * @param arg the argument
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, Object arg) 
     {
         Object []args = {arg};
@@ -322,7 +314,7 @@ public class I18NHelper {
      * @param arg2 the second argument
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, Object arg1, Object arg2) 
     {
         Object []args = {arg1, arg2};
@@ -338,7 +330,7 @@ public class I18NHelper {
      * @param arg3 the third argument
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, Object arg1, Object arg2, Object arg3) 
     {
         Object []args = {arg1, arg2, arg3};
@@ -352,7 +344,7 @@ public class I18NHelper {
      * @param arg the argument
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, int arg) 
     {
         Object []args = {Integer.valueOf(arg)};
@@ -366,7 +358,7 @@ public class I18NHelper {
      * @param arg the argument
      * @return the resolved message text
      */
-    final private static String getMessage(ResourceBundle messages, 
+    private static String getMessage(ResourceBundle messages,
             String messageKey, boolean arg) 
     {
         Object []args = {String.valueOf(arg)};
@@ -379,7 +371,7 @@ public class I18NHelper {
      * package 
      * @return package portion of the specified class
      */   
-    final private static String getPackageName(final String className)
+    private static String getPackageName(final String className)
     { 
         final int index = className.lastIndexOf('.');
         return ((index != -1) ? className.substring(0, index) : ""); // NOI18N
@@ -390,13 +382,7 @@ public class I18NHelper {
      * block because of security.
      */
     private static ClassLoader getSystemClassLoaderPrivileged() {
-        return doPrivileged (
-            new PrivilegedAction<ClassLoader> () {
-                public ClassLoader run () {
-                    return ClassLoader.getSystemClassLoader();
-                }
-            }
-        );
+        return doPrivileged (ClassLoader::getSystemClassLoader);
     }
 
     @SuppressWarnings("unchecked")
diff --git a/api/src/main/java/javax/jdo/spi/JDOImplHelper.java b/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
index 99bc1644..5962abb2 100644
--- a/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
+++ b/api/src/main/java/javax/jdo/spi/JDOImplHelper.java
@@ -77,30 +77,30 @@ public class JDOImplHelper extends java.lang.Object {
      * are added by the static method in each <code>PersistenceCapable</code> 
      * class.  Entries are never removed.
      */    
-    private static Map<Class,Meta> registeredClasses =
-            Collections.synchronizedMap(new HashMap<Class,Meta> ());
+    private static final Map<Class<?>,Meta> registeredClasses =
+            Collections.synchronizedMap(new HashMap<> ());
     
     /** This Set contains all classes that have registered for setStateManager
      * permissions via authorizeStateManagerClass.
      * Only the key is used in order to maintain a weak set of classes.
      */
-    private static final Map<Class,Class>
-            authorizedStateManagerClasses = new WeakHashMap<Class,Class>();
+    private static final Map<Class<?>,Class<?>>
+            authorizedStateManagerClasses = new WeakHashMap<>();
 
     /** This list contains the registered listeners for 
      * <code>RegisterClassEvent</code>s.
      */
     private static final List<RegisterClassListener>
-            listeners = new ArrayList<RegisterClassListener>();
+            listeners = new ArrayList<>();
     
     /** The list of registered StateInterrogation instances
      */
     private static List<StateInterrogation>
-            stateInterrogations = new ArrayList<StateInterrogation>();
+            stateInterrogations = new ArrayList<>();
 
     /** The singleton <code>JDOImplHelper</code> instance.
      */    
-    private static JDOImplHelper jdoImplHelper = new JDOImplHelper();
+    private static final JDOImplHelper jdoImplHelper = new JDOImplHelper();
     
     /** The Internationalization message helper.
      */
@@ -131,7 +131,7 @@ public class JDOImplHelper extends java.lang.Object {
     public static final Set<String> USER_CONFIGURABLE_STANDARD_PROPERTIES = createUserConfigurableStandardProperties();
 
     private static Set<String> createUserConfigurableStandardProperties() {
-        Set<String> props = new HashSet<String>();
+        Set<String> props = new HashSet<>();
         
         props.add(Constants.PROPERTY_CONNECTION_DRIVER_NAME);
         props.add(Constants.PROPERTY_CONNECTION_FACTORY2_NAME);
@@ -178,7 +178,7 @@ public class JDOImplHelper extends java.lang.Object {
     static Set<String> createUserConfigurableStandardPropertiesLowerCased() {
 	Set<String> mixedCased = createUserConfigurableStandardProperties();
 	Set<String> lowerCased =
-		new HashSet<String>(mixedCased.size());
+		new HashSet<>(mixedCased.size());
 
 	for (String propertyName : mixedCased) {
 	    lowerCased.add(propertyName.toLowerCase());
@@ -220,7 +220,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param pcClass the <code>PersistenceCapable</code> class.
      * @return the field names for the class.
      */    
-    public String[] getFieldNames (Class pcClass) {
+    public String[] getFieldNames (Class<?> pcClass) {
         Meta meta = getMeta (pcClass);
         return meta.getFieldNames();
     }
@@ -230,7 +230,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param pcClass the <code>PersistenceCapable</code> class.
      * @return the field types for the class.
      */    
-    public Class[] getFieldTypes (Class pcClass) {
+    public Class<?>[] getFieldTypes (Class<?> pcClass) {
         Meta meta = getMeta (pcClass);
         return meta.getFieldTypes();
     }
@@ -240,7 +240,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param pcClass the <code>PersistenceCapable</code> class.
      * @return the field types for the class.
      */    
-    public byte[] getFieldFlags (Class pcClass) {
+    public byte[] getFieldFlags (Class<?> pcClass) {
         Meta meta = getMeta (pcClass);
         return meta.getFieldFlags();
     }
@@ -251,7 +251,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @return The <code>PersistenceCapable</code> superclass for this class,
      * or <code>null</code> if there isn't one.
      */    
-    public Class getPersistenceCapableSuperclass (Class pcClass) {
+    public Class<?> getPersistenceCapableSuperclass (Class<?> pcClass) {
         Meta meta = getMeta (pcClass);
         return meta.getPersistenceCapableSuperclass();
     }
@@ -266,7 +266,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @return the new instance, or <code>null</code> if the class is not 
      * registered.
      */    
-    public PersistenceCapable newInstance (Class pcClass, StateManager sm) {
+    public PersistenceCapable newInstance (Class<?> pcClass, StateManager sm) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         return pcInstance == null?null:pcInstance.jdoNewInstance(sm);
@@ -285,7 +285,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param oid the ObjectId instance from which to copy key field values.
  */    
     public PersistenceCapable newInstance 
-            (Class pcClass, StateManager sm, Object oid) {
+            (Class<?> pcClass, StateManager sm, Object oid) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         return pcInstance == null?null:pcInstance.jdoNewInstance(sm, oid);
@@ -303,7 +303,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @return the new ObjectId instance, or <code>null</code> if the class 
      * is not registered.
      */    
-    public Object newObjectIdInstance (Class pcClass) {
+    public Object newObjectIdInstance (Class<?> pcClass) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         return pcInstance == null?null:pcInstance.jdoNewObjectIdInstance();
@@ -334,7 +334,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param pcClass the <code>PersistenceCapable</code> class.
      * @since 2.0
      */
-    public Object newObjectIdInstance (Class pcClass, Object obj) {
+    public Object newObjectIdInstance (Class<?> pcClass, Object obj) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         return (pcInstance == null)?null:pcInstance.jdoNewObjectIdInstance(obj);
@@ -360,7 +360,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param fm the field manager that supplies the field values.
  */    
     public void copyKeyFieldsToObjectId 
-    (Class pcClass, PersistenceCapable.ObjectIdFieldSupplier fm, Object oid) {
+    (Class<?> pcClass, PersistenceCapable.ObjectIdFieldSupplier fm, Object oid) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         if (pcInstance == null) {
@@ -390,7 +390,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param fm the field manager that receives the field values.
      */    
     public void copyKeyFieldsFromObjectId
-    (Class pcClass, PersistenceCapable.ObjectIdFieldConsumer fm, Object oid) {
+    (Class<?> pcClass, PersistenceCapable.ObjectIdFieldConsumer fm, Object oid) {
         Meta meta = getMeta (pcClass);
         PersistenceCapable pcInstance = meta.getPC();
         if (pcInstance == null) {
@@ -415,9 +415,9 @@ public class JDOImplHelper extends java.lang.Object {
      * @param persistenceCapableSuperclass the most immediate superclass that is
      * <code>PersistenceCapable</code>
      */    
-    public static void registerClass (Class pcClass, 
-            String[] fieldNames, Class[] fieldTypes, 
-            byte[] fieldFlags, Class persistenceCapableSuperclass,
+    public static void registerClass (Class<?> pcClass,
+            String[] fieldNames, Class<?>[] fieldTypes,
+            byte[] fieldFlags, Class<?> persistenceCapableSuperclass,
             PersistenceCapable pc) {
         if (pcClass == null) 
             throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
@@ -431,9 +431,8 @@ public class JDOImplHelper extends java.lang.Object {
                 RegisterClassEvent event = new RegisterClassEvent(
                     jdoImplHelper, pcClass, fieldNames, fieldTypes, 
                     fieldFlags, persistenceCapableSuperclass);
-                for (Iterator i = listeners.iterator(); i.hasNext();) {
-                    RegisterClassListener crl = 
-                        (RegisterClassListener)i.next();
+                for (Iterator<RegisterClassListener> i = listeners.iterator(); i.hasNext();) {
+                    RegisterClassListener crl = i.next();
                     if (crl != null) {
                         crl.registerClass(event);
                     }
@@ -458,9 +457,9 @@ public class JDOImplHelper extends java.lang.Object {
             sec.checkPermission (JDOPermission.MANAGE_METADATA);
         }
         synchronized(registeredClasses) {
-            for (Iterator i = registeredClasses.keySet().iterator(); 
+            for (Iterator<Class<?>> i = registeredClasses.keySet().iterator();
                  i.hasNext();) {
-                Class pcClass = (Class)i.next();
+                Class<?> pcClass = i.next();
                 // Note, the pc class was registered by calling the static
                 // method JDOImplHelper.registerClass. This means the
                 // JDOImplHelper class loader is the same as or an ancestor
@@ -485,7 +484,7 @@ public class JDOImplHelper extends java.lang.Object {
      * unregistered.
      * @since 1.0.2
      */
-    public void unregisterClass (Class pcClass)
+    public void unregisterClass (Class<?> pcClass)
     {
         if (pcClass == null) 
             throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
@@ -503,7 +502,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param crl the listener to be added
      */
     public void addRegisterClassListener (RegisterClassListener crl) {
-        HashSet alreadyRegisteredClasses = null;
+        HashSet<Class<?>> alreadyRegisteredClasses = null;
         synchronized (listeners) {
             listeners.add(crl);
             // Make a copy of the existing set of registered classes.
@@ -511,12 +510,12 @@ public class JDOImplHelper extends java.lang.Object {
             // registrations might occur, and will then all wait until this 
             // synchronized block completes. Some of the class registrations 
             // might be delivered twice to the newly registered listener.
-            alreadyRegisteredClasses = new HashSet<Class> (registeredClasses.keySet());
+            alreadyRegisteredClasses = new HashSet<> (registeredClasses.keySet());
         }
         // new registrations will call the new listener while the following 
         // occurs notify the new listener about already-registered classes
-        for (Iterator it = alreadyRegisteredClasses.iterator(); it.hasNext();) {
-            Class pcClass = (Class)it.next();
+        for (Iterator<Class<?>> it = alreadyRegisteredClasses.iterator(); it.hasNext();) {
+            Class<?> pcClass = it.next();
             Meta meta = getMeta (pcClass);
             RegisterClassEvent event = new RegisterClassEvent(
                 this, pcClass, meta.getFieldNames(), meta.getFieldTypes(), 
@@ -541,7 +540,7 @@ public class JDOImplHelper extends java.lang.Object {
      * persistence-capable classes.
      * @return registered persistence-capable classes
      */
-    public Collection<Class> getRegisteredClasses() {
+    public Collection<Class<?>> getRegisteredClasses() {
         return Collections.unmodifiableCollection(registeredClasses.keySet());
     }
 
@@ -549,8 +548,8 @@ public class JDOImplHelper extends java.lang.Object {
      * @param pcClass the <code>Class</code>.
      * @return the <code>Meta</code> for the <code>Class</code>.
      */    
-    private static Meta getMeta (Class pcClass) {
-        Meta ret = (Meta) registeredClasses.get (pcClass);
+    private static Meta getMeta (Class<?> pcClass) {
+        Meta ret = registeredClasses.get (pcClass);
         if (ret == null) {
             throw new JDOFatalUserException(
                 msg.msg ("ERR_NoMetadata", pcClass.getName())); //NOI18N
@@ -569,7 +568,7 @@ public class JDOImplHelper extends java.lang.Object {
      * JDOPermission("setStateManager").
      * @since 1.0.1
      */
-    public static void registerAuthorizedStateManagerClass (Class smClass) 
+    public static void registerAuthorizedStateManagerClass (Class<?> smClass)
         throws SecurityException {
         if (smClass == null) 
             throw new NullPointerException(msg.msg("ERR_NullClass")); //NOI18N
@@ -594,19 +593,19 @@ public class JDOImplHelper extends java.lang.Object {
      * @since 1.0.1
      */
     public static void registerAuthorizedStateManagerClasses (
-            Collection smClasses) throws SecurityException {
+            Collection<?> smClasses) throws SecurityException {
         SecurityManager sm = LegacyJava.getSecurityManager();
         if (sm != null) {
             sm.checkPermission(JDOPermission.SET_STATE_MANAGER);
             synchronized (authorizedStateManagerClasses) {
-                for (Iterator it = smClasses.iterator(); it.hasNext();) {
+                for (Iterator<?> it = smClasses.iterator(); it.hasNext();) {
                     Object smClass = it.next();
                     if (!(smClass instanceof Class)) {
                         throw new ClassCastException(
                             msg.msg("ERR_StateManagerClassCast", //NOI18N
                                 smClass.getClass().getName()));
                     }
-                    registerAuthorizedStateManagerClass((Class)it.next());
+                    registerAuthorizedStateManagerClass((Class<?>)it.next());
                 }
             }
         }
@@ -677,7 +676,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param smClass a Class to be checked for JDOPermission("setStateManager")
      * @since 1.0.1
      */
-    public static void checkAuthorizedStateManagerClass (Class smClass) {
+    public static void checkAuthorizedStateManagerClass (Class<?> smClass) {
         final SecurityManager scm = LegacyJava.getSecurityManager();
         if (scm == null) {
             // if no security manager, no checking.
@@ -715,8 +714,7 @@ public class JDOImplHelper extends java.lang.Object {
      * keyed on class instance and the value is an instance of 
      * StringConstructor.
      */
-    static final Map<Class,StringConstructor> stringConstructorMap =
-            new HashMap<Class,StringConstructor>();
+    static final Map<Class<?>,StringConstructor> stringConstructorMap = new HashMap<>();
 
     /**
      * 
@@ -727,7 +725,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param sc the StringConstructor instance
      * @return the previous StringConstructor registered for this class
      */
-    public Object registerStringConstructor(Class cls, StringConstructor sc) {
+    public Object registerStringConstructor(Class<?> cls, StringConstructor sc) {
         synchronized(stringConstructorMap) {
             return stringConstructorMap.put(cls, sc);
         }
@@ -738,30 +736,27 @@ public class JDOImplHelper extends java.lang.Object {
     static {
         if (isClassLoadable("java.util.Currency")) {
             jdoImplHelper.registerStringConstructor(
-                    Currency.class, new StringConstructor() {
-                public Object construct(String s) {
-                    try {
-                        return Currency.getInstance(s);
-                    } catch (IllegalArgumentException ex) {
-                        throw new javax.jdo.JDOUserException(msg.msg(
-                            "EXC_CurrencyStringConstructorIllegalArgument", //NOI18N
-                            s), ex); 
-                    } catch (Exception ex) {
-                        throw new JDOUserException(msg.msg(
-                            "EXC_CurrencyStringConstructorException"), //NOI18N
-                            ex); 
-                    }
-                }
-            });
+                    Currency.class,
+                    s -> {
+                        try {
+                            return Currency.getInstance(s);
+                        } catch (IllegalArgumentException ex) {
+                            throw new JDOUserException(msg.msg(
+                                "EXC_CurrencyStringConstructorIllegalArgument", //NOI18N
+                                s), ex);
+                        } catch (Exception ex) {
+                            throw new JDOUserException(msg.msg(
+                                "EXC_CurrencyStringConstructorException"), //NOI18N
+                                ex);
+                        }
+                    });
         }
-        jdoImplHelper.registerStringConstructor(Locale.class, new StringConstructor() {
-            public Object construct(String s) {
-                try {
-                    return getLocale(s);
-                } catch (Exception ex) {
-                    throw new JDOUserException(msg.msg(
-                        "EXC_LocaleStringConstructorException"), ex); //NOI18N
-                }
+        jdoImplHelper.registerStringConstructor(Locale.class, s -> {
+            try {
+                return getLocale(s);
+            } catch (Exception ex) {
+                throw new JDOUserException(msg.msg(
+                    "EXC_LocaleStringConstructorException"), ex); //NOI18N
             }
         });
         jdoImplHelper.registerStringConstructor(Date.class, new StringConstructor() {
@@ -838,13 +833,12 @@ public class JDOImplHelper extends java.lang.Object {
         try {
             Class<?> keyClass = Class.forName(className);
             synchronized(stringConstructorMap) {
-                stringConstructor = 
-                        (StringConstructor) stringConstructorMap.get(keyClass);
+                stringConstructor = stringConstructorMap.get(keyClass);
             }
             if (stringConstructor != null) {
                 return stringConstructor.construct(keyString);
             } else {
-                Constructor keyConstructor = 
+                Constructor<?> keyConstructor =
                     keyClass.getConstructor(new Class[]{String.class});
                 return keyConstructor.newInstance(new Object[]{keyString});
             }
@@ -877,13 +871,7 @@ public class JDOImplHelper extends java.lang.Object {
     static DateFormat getDateTimeInstance() {
         DateFormat result = null;
         try {
-        result = doPrivileged (
-            new PrivilegedAction<DateFormat> () {
-                public DateFormat run () {
-                    return DateFormat.getDateTimeInstance();
-                }
-            }
-            );
+        result = doPrivileged (() -> DateFormat.getDateTimeInstance());
         } catch (Exception ex) {
             result = DateFormat.getInstance();
         }
@@ -937,8 +925,8 @@ public class JDOImplHelper extends java.lang.Object {
          * <code>PersistenceCapable</code> superclass
          * @param pc An instance of the <code>PersistenceCapable</code> class
          */        
-        Meta (String[] fieldNames, Class[] fieldTypes, byte[] fieldFlags,
-              Class persistenceCapableSuperclass, PersistenceCapable pc) {
+        Meta (String[] fieldNames, Class<?>[] fieldTypes, byte[] fieldFlags,
+              Class<?> persistenceCapableSuperclass, PersistenceCapable pc) {
             this.fieldNames = fieldNames;
             this.fieldTypes = fieldTypes;
             this.fieldFlags = fieldFlags;
@@ -950,7 +938,7 @@ public class JDOImplHelper extends java.lang.Object {
          * for the Model at runtime.  The field
          * is passed by the static class initialization.
          */
-        String[] fieldNames;
+        final String[] fieldNames;
     
         /** Get the field names from the metadata.
          * @return the array of field names.
@@ -963,12 +951,12 @@ public class JDOImplHelper extends java.lang.Object {
          * for the Model at runtime.  The field
          * is passed by the static class initialization.
          */
-        Class[] fieldTypes;
+        final Class<?>[] fieldTypes;
     
         /** Get the field types from the metadata.
          * @return the array of field types.
          */
-        Class[] getFieldTypes() {
+        Class<?>[] getFieldTypes() {
             return fieldTypes;
         }
     
@@ -976,7 +964,7 @@ public class JDOImplHelper extends java.lang.Object {
          * for the Model at runtime.  The field
          * is passed by the static class initialization.
          */
-        byte[] fieldFlags;
+        final byte[] fieldFlags;
     
         /** Get the field types from the metadata.
          * @return the array of field types.
@@ -988,18 +976,18 @@ public class JDOImplHelper extends java.lang.Object {
         /** This is the <code>Class</code> instance of the 
          * <code>PersistenceCapable</code> superclass.
          */
-        Class persistenceCapableSuperclass;
+        final Class<?> persistenceCapableSuperclass;
     
         /** Return the <code>PersistenceCapable</code> superclass.
          * @return the <code>PersistenceCapable</code> superclass
          */
-        Class getPersistenceCapableSuperclass() {
+        Class<?> getPersistenceCapableSuperclass() {
             return persistenceCapableSuperclass;
         }
         /** This is an instance of <code>PersistenceCapable</code>,
          * used at runtime to create new instances.
          */
-        PersistenceCapable pc;
+        final PersistenceCapable pc;
     
         /** Get an instance of the <code>PersistenceCapable</code> class.
          * @return an instance of the <code>PersistenceCapable Class</code>.
@@ -1022,8 +1010,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param si the StateInterrogation to add
      */
     public synchronized void addStateInterrogation(StateInterrogation si) {
-        List<StateInterrogation> newList =
-                new ArrayList<StateInterrogation>(stateInterrogations);
+        List<StateInterrogation> newList = new ArrayList<>(stateInterrogations);
         newList.add(si);
         stateInterrogations = newList;
     }
@@ -1034,8 +1021,7 @@ public class JDOImplHelper extends java.lang.Object {
      * @param si the StateInterrogation to remove
      */
     public synchronized void removeStateInterrogation(StateInterrogation si) {
-        List<StateInterrogation> newList =
-                new ArrayList<StateInterrogation>(stateInterrogations);
+        List<StateInterrogation> newList = new ArrayList<>(stateInterrogations);
         newList.remove(si);
         stateInterrogations = newList;
     }
@@ -1045,7 +1031,7 @@ public class JDOImplHelper extends java.lang.Object {
      * Synchronize to avoid add/remove/iterate conflicts.
      * @return an Iterator over all StateInterrogation instances.
      */
-    private synchronized Iterator getStateInterrogationIterator() {
+    private synchronized Iterator<StateInterrogation> getStateInterrogationIterator() {
         return stateInterrogations.iterator();
     }
     
@@ -1057,9 +1043,9 @@ public class JDOImplHelper extends java.lang.Object {
      * @param fieldName the field to mark dirty
      */
     public void nonBinaryCompatibleMakeDirty(Object pc, String fieldName) {
-        Iterator sit = getStateInterrogationIterator();
+        Iterator<StateInterrogation> sit = getStateInterrogationIterator();
         while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
+            StateInterrogation si = sit.next();
             try {
                 if (si.makeDirty(pc, fieldName)) return;
             } catch (Throwable t) {
@@ -1084,9 +1070,9 @@ public class JDOImplHelper extends java.lang.Object {
      */
     public boolean nonBinaryCompatibleIs(Object pc, 
             StateInterrogationBooleanReturn sibr) {
-        Iterator sit = getStateInterrogationIterator();
+        Iterator<StateInterrogation> sit = getStateInterrogationIterator();
         while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
+            StateInterrogation si = sit.next();
             Boolean result;
             try {
                 result = sibr.is(pc, si);
@@ -1112,9 +1098,9 @@ public class JDOImplHelper extends java.lang.Object {
      */
     public Object nonBinaryCompatibleGet(Object pc, 
             StateInterrogationObjectReturn sibr) {
-        Iterator sit = getStateInterrogationIterator();
+        Iterator<StateInterrogation> sit = getStateInterrogationIterator();
         while (sit.hasNext()) {
-            StateInterrogation si = (StateInterrogation)sit.next();
+            StateInterrogation si = sit.next();
             Object result;
             try {
                 result = sibr.get(pc, si);
@@ -1171,7 +1157,7 @@ public class JDOImplHelper extends java.lang.Object {
         if (properties == null || properties.isEmpty())
             return;
 
-        List<JDOUserException> exceptions = new ArrayList<JDOUserException>();
+        List<JDOUserException> exceptions = new ArrayList<>();
         StringBuilder unknowns = new StringBuilder();
 
         for (Object key : properties.keySet()) {
diff --git a/api/src/main/java/javax/jdo/spi/RegisterClassEvent.java b/api/src/main/java/javax/jdo/spi/RegisterClassEvent.java
index 3f477798..c679a73c 100644
--- a/api/src/main/java/javax/jdo/spi/RegisterClassEvent.java
+++ b/api/src/main/java/javax/jdo/spi/RegisterClassEvent.java
@@ -35,19 +35,19 @@ public class RegisterClassEvent extends EventObject
 	private static final long serialVersionUID = 945917130591776973L;
 
 	/** The class object of the registered persistence-capable class */
-    protected Class pcClass;
+    protected final Class<?> pcClass;
 
     /** The names of managed fields of the persistence-capable class */
-    protected String[] fieldNames;  
+    protected final String[] fieldNames;
 
     /** The types of managed fields of the persistence-capable class */
-    protected Class[] fieldTypes;
+    protected final Class<?>[] fieldTypes;
 
     /** The flags of managed fields of the persistence-capable class */
-    protected byte[] fieldFlags;
+    protected final byte[] fieldFlags;
 
     /** */
-    protected Class persistenceCapableSuperclass; 
+    protected final Class<?> persistenceCapableSuperclass;
 
     /** 
      * Constructs a new <code>RegisterClassEvent</code>.
@@ -59,11 +59,11 @@ public class RegisterClassEvent extends EventObject
      * @param persistenceCapableSuperclass the persistence-capable superclass
      **/
     public RegisterClassEvent(JDOImplHelper helper,
-                              Class registeredClass, 
+                              Class<?> registeredClass,
                               String[] fieldNames, 
-                              Class[] fieldTypes,
+                              Class<?>[] fieldTypes,
                               byte[] fieldFlags,
-                              Class persistenceCapableSuperclass)
+                              Class<?> persistenceCapableSuperclass)
     {
         super(helper);
         this.pcClass = registeredClass;
@@ -77,7 +77,7 @@ public class RegisterClassEvent extends EventObject
      * Returns the class object of the registered persistence-capable class.
      * @return the persistence-capable class.
      */
-    public Class getRegisteredClass()
+    public Class<?> getRegisteredClass()
     {
         return pcClass;
     }
@@ -95,7 +95,7 @@ public class RegisterClassEvent extends EventObject
      * Returns the types of the managed field of the persistence-capable class.
      * @return the types of the managed fields
      */
-    public Class[] getFieldTypes()
+    public Class<?>[] getFieldTypes()
     {
         return fieldTypes;
     }
@@ -113,7 +113,7 @@ public class RegisterClassEvent extends EventObject
      * Returns the class object of the persistence-capable superclass.
      * @return the persistence-capable superclass.
      */
-    public Class getPersistenceCapableSuperclass()
+    public Class<?> getPersistenceCapableSuperclass()
     {
         return persistenceCapableSuperclass;
     }
diff --git a/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java b/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
index 2ee1378d..96bf1b35 100644
--- a/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
+++ b/api/src/test/java/javax/jdo/AbstractJDOConfigTest.java
@@ -31,7 +31,7 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
      * A class path prefix used in the various tests where the class path
      * needs to be set.
      */
-    protected static String JDOCONFIG_CLASSPATH_PREFIX
+    protected static final String JDOCONFIG_CLASSPATH_PREFIX
             = initJDOConfigClasspathPrefix();
 
     /**
@@ -50,7 +50,7 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
      * The class path used to specify the location of test class files.
      * @return the class path where test class files can be found.
      */
-    protected static String TEST_CLASSPATH = initTestClasspath();
+    protected static final String TEST_CLASSPATH = initTestClasspath();
 
     /**
      * Returns the default class path for JDO test class files 
@@ -64,7 +64,7 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
     /**
      * The class path used to locate the JDO API class files.
      */
-    protected static String API_CLASSPATH = initAPIClasspath();
+    protected static final String API_CLASSPATH = initAPIClasspath();
 
     /**
      * Returns the default class path for JDO API class files
@@ -99,7 +99,7 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
     /**
      * A randomizer seeded with the system clock's current time.
      */
-    protected static Random RANDOM = new Random(System.currentTimeMillis());
+    protected static final Random RANDOM = new Random(System.currentTimeMillis());
 
     /**
      * Fails the test if the number of properties in the two specified
@@ -108,10 +108,8 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
      * @param expected the first {@link java.util.Map Map} object to test.
      * @param actual the second {@link java.util.Map Map} object to test.
      */
-    static void assertEqualProperties(Map expected, Map actual) {
-        Iterator i = expected.entrySet().iterator();
-        while (i.hasNext()) {
-            Map.Entry entry = (Map.Entry) i.next();
+    static void assertEqualProperties(Map<?, ?> expected, Map<?, ?> actual) {
+        for (Map.Entry<?, ?> entry : expected.entrySet()) {
             String key = (String) entry.getKey();
             String expectedValue = (String) entry.getValue();
             String actualValue = (String) actual.get(key);
@@ -126,11 +124,11 @@ public abstract class AbstractJDOConfigTest extends AbstractTest {
     
     protected String getPMFClassNameViaServiceLookup(ClassLoader loader) {
         try {
-            Enumeration urls = JDOHelper.getResources(loader, 
+            Enumeration<URL> urls = JDOHelper.getResources(loader,
                 SERVICE_LOOKUP_PMF_RESOURCE_NAME);
             while (urls.hasMoreElements()) {
                 // return the first one found
-                return JDOHelper.getClassNameFromURL((URL)urls.nextElement());
+                return JDOHelper.getClassNameFromURL(urls.nextElement());
             }
         } catch (Exception ex) {
             // ignore exceptions from i/o errors
diff --git a/api/src/test/java/javax/jdo/EnhancerTest.java b/api/src/test/java/javax/jdo/EnhancerTest.java
index 4adf1387..7f9baf0f 100644
--- a/api/src/test/java/javax/jdo/EnhancerTest.java
+++ b/api/src/test/java/javax/jdo/EnhancerTest.java
@@ -38,10 +38,10 @@ import javax.jdo.util.BatchTestRunner;
 public class EnhancerTest extends AbstractTest {
 
     /** The path delimiter for constructing classpaths. */
-    private static String pathDelimiter = System.getProperty("path.separator");
+    private static final String PATH_DELIMITER = System.getProperty("path.separator");
 
     /** The maven basedir identifying the directory of the execution environment. */
-    private static String basedir = System.getProperty("basedir");
+    private static final String BASEDIR = System.getProperty("basedir");
 
     /**
      * Main
@@ -192,7 +192,7 @@ public class EnhancerTest extends AbstractTest {
         // invoke enhancer with a classpath parameter
         // JDOHelper must be loadable from this path
         // the File.toURI should append "/" to the path, so only "target/classes" is needed
-        InvocationResult result = invokeEnhancer("-v -cp " + basedir + "/target/classes");
+        InvocationResult result = invokeEnhancer("-v -cp " + BASEDIR + "/target/classes");
         String outputString = result.getOutputString();
         String errorString = result.getErrorString();
         assertEquals("Wrong exit code from Enhancer with stderr:\n" + errorString, 0, result.getExitValue());
@@ -214,11 +214,11 @@ public class EnhancerTest extends AbstractTest {
         // JDOHelper must be loadable from this path
         // create the jar file from the target/classes directory
         String uuid = UUID.randomUUID().toString();
-        File uuidDir = new File(basedir + "/target/" + uuid);
+        File uuidDir = new File(BASEDIR + "/target/" + uuid);
         uuidDir.mkdirs();
         String enhancerJar = "target/" + uuid + "/enhancer-test.jar";
-        String enhancerJarPathname = basedir + "/" + enhancerJar;
-        Process create = Runtime.getRuntime().exec("jar -cf " + enhancerJarPathname + " -C " + basedir + "/target/classes .");
+        String enhancerJarPathname = BASEDIR + "/" + enhancerJar;
+        Process create = Runtime.getRuntime().exec("jar -cf " + enhancerJarPathname + " -C " + BASEDIR + "/target/classes .");
         int returnCode = create.waitFor();
         assertEquals("jar command returned wrong return code.", 0, returnCode);
         // find the jdo.jar in target
@@ -246,7 +246,7 @@ public class EnhancerTest extends AbstractTest {
 
     public void testDir() {
         // invoke enhancer with directory and not recurse
-        InvocationResult result = invokeEnhancer("-v " + basedir + "/target/test-classes/enhancer-test-dir");
+        InvocationResult result = invokeEnhancer("-v " + BASEDIR + "/target/test-classes/enhancer-test-dir");
         String outputString = result.getOutputString();
         String errorString = result.getErrorString();
         assertEquals("Wrong exit code from Enhancer with stderr:\n" + errorString, 0, result.getExitValue());
@@ -260,7 +260,7 @@ public class EnhancerTest extends AbstractTest {
 
     public void testDirRecurse() {
         // invoke enhancer with directory and recurse
-        InvocationResult result = invokeEnhancer("-v -r " + basedir + "/target/test-classes/enhancer-test-dir");
+        InvocationResult result = invokeEnhancer("-v -r " + BASEDIR + "/target/test-classes/enhancer-test-dir");
         String outputString = result.getOutputString();
         String errorString = result.getErrorString();
         assertEquals("Wrong exit code from Enhancer with stderr:\n" + errorString, 0, result.getExitValue());
@@ -279,11 +279,11 @@ public class EnhancerTest extends AbstractTest {
         InvocationResult result = new InvocationResult();
         try {
             // create the java command to invoke the Enhancer
-            List<String> commands = new ArrayList<String>();
+            List<String> commands = new ArrayList<>();
             // find the java command in the user's path
             commands.add("java");
             commands.add("-cp");
-            commands.add("" + basedir + "/target/classes" + pathDelimiter + "" + basedir + "/target/test-classes");
+            commands.add("" + BASEDIR + "/target/classes" + PATH_DELIMITER + "" + BASEDIR + "/target/test-classes");
             commands.add("javax.jdo.Enhancer");
             // add the test options (from the method parameter) to the java command
             String[] optionArray = string.split(" ");
@@ -324,19 +324,17 @@ public class EnhancerTest extends AbstractTest {
     private Thread createReaderThread(final InputStream input, final CharBuffer output) {
         final Reader reader = new InputStreamReader(input);
         Thread thread = new Thread(
-                new Runnable() {
-                    public void run() {
-                        int count = 0;
-                        int outputBytesRead = 0;
-                        try {
-                            while (-1 != (outputBytesRead = reader.read(output))) {
-                                count += outputBytesRead;
-                            }
-                        } catch (IOException e) {
-                            e.printStackTrace();
-                        } finally {
-                            output.flip();
+                () -> {
+                    int count = 0;
+                    int outputBytesRead = 0;
+                    try {
+                        while (-1 != (outputBytesRead = reader.read(output))) {
+                            count += outputBytesRead;
                         }
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    } finally {
+                        output.flip();
                     }
                 });
         thread.start();
diff --git a/api/src/test/java/javax/jdo/JDOHelperConfigTest.java b/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
index 1825a0ab..5685e492 100644
--- a/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
+++ b/api/src/test/java/javax/jdo/JDOHelperConfigTest.java
@@ -76,10 +76,10 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
      * @return a new {@link java.util.Map Map} object populated with properties
      *         that can be used in this test suite.
      */
-    protected Map prepareInitialExpectedMap(String testVariant,
+    protected Map<String, String> prepareInitialExpectedMap(String testVariant,
         int listenerCount, int vendorSpecificPropertyCount,
         boolean excludeName, boolean excludePUName) {
-        Map<String, String> expected = new HashMap<String, String>();
+        Map<String, String> expected = new HashMap<>();
 
         if (!excludeName) {
             expected.put(PROPERTY_NAME, PMF_ATTRIBUTE_NAME + "." + testVariant);
@@ -212,10 +212,10 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
 
         URLClassLoader loader = new JDOConfigTestClassLoader(
             getClass().getClassLoader(), classpaths);
-        Map expected = prepareInitialExpectedMap(testVariantName,
+        Map<String, String> expected = prepareInitialExpectedMap(testVariantName,
             listenerCount, vendorSpecificPropertyCount, excludeName, excludePUName);
-        String name = testVariantName == null ? null : (String) expected.get(PROPERTY_NAME);
-        Map actual = JDOHelper.getPropertiesFromJdoconfig(name, loader);
+        String name = testVariantName == null ? null : expected.get(PROPERTY_NAME);
+        Map<Object, Object> actual = JDOHelper.getPropertiesFromJdoconfig(name, loader);
 
         assertNotNull("No properties found", actual);
         if (checkEqualProperties) {
@@ -254,7 +254,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
             JDOCONFIG_CLASSPATH_PREFIX + "/Positive01/1a",
             JDOCONFIG_CLASSPATH_PREFIX + "/Positive01/1b" };
         URLClassLoader loader = new JDOConfigTestClassLoader(getClass().getClassLoader(), classpaths);
-        Map actual = JDOHelper.getPropertiesFromJdoconfig(
+        Map<Object, Object> actual = JDOHelper.getPropertiesFromJdoconfig(
             ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
     }
 
@@ -264,7 +264,7 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
         URLClassLoader loader = new JDOConfigTestClassLoader(
                 getClass().getClassLoader(), JDOCONFIG_CLASSPATH_PREFIX + "/Positive02/");
 
-        Map properties = JDOHelper.getPropertiesFromJdoconfig(
+        Map<Object, Object> properties = JDOHelper.getPropertiesFromJdoconfig(
             ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
         assertNotNull("Anonymous PMF with no properties returned null", properties);
         assertTrue("Anonymous PMF with no properties had properties", properties.size() == 0);
@@ -314,8 +314,8 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
         URLClassLoader loader = new JDOConfigTestClassLoader(
                 getClass().getClassLoader(), JDOCONFIG_CLASSPATH_PREFIX + "/Positive06/");
 
-        Map expected = prepareInitialExpectedMap("positive06.pmf0", 2, 0, true, true);
-        Map actual = JDOHelper.getPropertiesFromJdoconfig(
+        Map<String, String> expected = prepareInitialExpectedMap("positive06.pmf0", 2, 0, true, true);
+        Map<Object, Object> actual = JDOHelper.getPropertiesFromJdoconfig(
             ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
 
         assertNotNull("No properties found", actual);
@@ -328,8 +328,8 @@ public class JDOHelperConfigTest extends AbstractJDOConfigTest implements Consta
         URLClassLoader loader = new JDOConfigTestClassLoader(
                 getClass().getClassLoader(), JDOCONFIG_CLASSPATH_PREFIX + "/Positive07/");
 
-        Map expected = prepareInitialExpectedMap("positive07.pmf0", 2, 0, true, false);
-        Map actual = JDOHelper.getPropertiesFromJdoconfig(
+        Map<String, String> expected = prepareInitialExpectedMap("positive07.pmf0", 2, 0, true, false);
+        Map<Object, Object> actual = JDOHelper.getPropertiesFromJdoconfig(
             ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME, loader);
 
         assertNotNull("No properties found", actual);
diff --git a/api/src/test/java/javax/jdo/JDOHelperTest.java b/api/src/test/java/javax/jdo/JDOHelperTest.java
index 727bf1a9..0ca22f4a 100644
--- a/api/src/test/java/javax/jdo/JDOHelperTest.java
+++ b/api/src/test/java/javax/jdo/JDOHelperTest.java
@@ -296,7 +296,7 @@ public class JDOHelperTest extends AbstractTest {
      */
     public void testGetPMFNullJNDI() {
         try {
-            JDOHelper.getPersistenceManagerFactory((String)null, getInitialContext());
+            JDOHelper.getPersistenceManagerFactory(null, getInitialContext());
             fail("Null JNDI resource name should result in JDOFatalUserException");
         }
         catch (JDOFatalUserException ex) {
@@ -309,7 +309,7 @@ public class JDOHelperTest extends AbstractTest {
      */
     public void testGetPMFNullJNDIGoodClassLoader() {
         try {
-            JDOHelper.getPersistenceManagerFactory((String)null, getInitialContext(), this.getClass().getClassLoader());
+            JDOHelper.getPersistenceManagerFactory(null, getInitialContext(), this.getClass().getClassLoader());
             fail("Null JNDI resource name should result in JDOFatalUserException");
         }
         catch (JDOFatalUserException ex) {
@@ -387,7 +387,7 @@ public class JDOHelperTest extends AbstractTest {
      */
     public void testGetPMFBothNullClassLoader() {
         try {
-            JDOHelper.getPersistenceManagerFactory("Whatever", (ClassLoader)null, (ClassLoader)null);
+            JDOHelper.getPersistenceManagerFactory("Whatever", (ClassLoader)null, null);
             fail("Null ClassLoader should result in JDOFatalUserException");
         }
         catch (JDOFatalUserException ex) {
@@ -450,7 +450,7 @@ public class JDOHelperTest extends AbstractTest {
     /** Test bad PMF class no method getPersistenceManagerFactory(Map).
      */
     public void testBadPMFNoGetPMFMapMethod() {
-        Map<String,String> props = new HashMap<String,String>();
+        Map<String,String> props = new HashMap<>();
         props.put("javax.jdo.PersistenceManagerFactoryClass", 
                 "javax.jdo.JDOHelperTest$BadPMFNoGetPMFMethod");
         try {
@@ -600,21 +600,21 @@ public class JDOHelperTest extends AbstractTest {
 
     public static class BadPMFNonStaticGetPMFMethod {
         public PersistenceManagerFactory
-                getPersistenceManagerFactory(Map props) {
+                getPersistenceManagerFactory(Map<?, ?> props) {
             return null;
         }
     }
         
     public static class BadPMFWrongReturnType {
         public static BadPMFWrongReturnType 
-                getPersistenceManagerFactory(Map props) {
+                getPersistenceManagerFactory(Map<?, ?> props) {
             return new BadPMFWrongReturnType();
         }
     }
     
     public static class BadPMFGetPMFMethodThrowsJDOException {
         public static PersistenceManagerFactory
-                getPersistenceManagerFactory(Map props) {
+                getPersistenceManagerFactory(Map<?, ?> props) {
             throw new JDOUnsupportedOptionException(
                     "GetPMF method throws JDOUnsupportedOptionException");
         }
@@ -622,7 +622,7 @@ public class JDOHelperTest extends AbstractTest {
 
     public static class BadPMFGetPMFMethodThrowsJDOFatalInternalException {
         public static PersistenceManagerFactory
-                getPersistenceManagerFactory(Map props) {
+                getPersistenceManagerFactory(Map<?, ?> props) {
             throw new JDOFatalInternalException(
                     "GetPMF method throws JDOFatalInternalException");
         }
@@ -630,7 +630,7 @@ public class JDOHelperTest extends AbstractTest {
 
     public static class BadPMFGetPMFMethodReturnsNull {
         public static PersistenceManagerFactory
-                getPersistenceManagerFactory(Map props) {
+                getPersistenceManagerFactory(Map<?, ?> props) {
             return null;
         }
     }
diff --git a/api/src/test/java/javax/jdo/MockEnhancer.java b/api/src/test/java/javax/jdo/MockEnhancer.java
index a5208a40..e54e1add 100644
--- a/api/src/test/java/javax/jdo/MockEnhancer.java
+++ b/api/src/test/java/javax/jdo/MockEnhancer.java
@@ -37,7 +37,7 @@ import javax.jdo.metadata.JDOMetadata;
  */
 public class MockEnhancer implements JDOEnhancer {
 
-    static Properties props = new Properties();
+    static final Properties props = new Properties();
     static {
         props.put(PROPERTY_ENHANCER_VENDOR_NAME, "Mock Enhancer");
         props.put(PROPERTY_ENHANCER_VERSION_NUMBER, "2.3.0");
@@ -46,10 +46,10 @@ public class MockEnhancer implements JDOEnhancer {
     @SuppressWarnings("unused")
     private boolean verbose;
     private int numberOfElements;
-    private List<String> classNames = new ArrayList<String>();
-    private List<String> jarNames = new ArrayList<String>();
-    private List<String> jdoNames = new ArrayList<String>();
-    private List<String> puNames = new ArrayList<String>();
+    private final List<String> classNames = new ArrayList<>();
+    private final List<String> jarNames = new ArrayList<>();
+    private final List<String> jdoNames = new ArrayList<>();
+    private final List<String> puNames = new ArrayList<>();
     @SuppressWarnings("unused")
     private String outputDirectory = null;
 
diff --git a/api/src/test/java/javax/jdo/ObjectStateTest.java b/api/src/test/java/javax/jdo/ObjectStateTest.java
index 35cdc385..aae95093 100644
--- a/api/src/test/java/javax/jdo/ObjectStateTest.java
+++ b/api/src/test/java/javax/jdo/ObjectStateTest.java
@@ -167,7 +167,7 @@ public class ObjectStateTest extends AbstractTest {
     private class MockInvocationHandler implements InvocationHandler {
         /** States is the sum of all life cycle interrogatives.
          */
-        private int states;
+        private final int states;
 
         /**
          * Constructs an invocation handler with the specified bit fields set
@@ -215,7 +215,7 @@ public class ObjectStateTest extends AbstractTest {
     }
 
     private static Method getDeclaredMethod
-            (Class clazz, String methodName, Class[] parameters) {
+            (Class<?> clazz, String methodName, Class<?>[] parameters) {
         try {
             @SuppressWarnings("unchecked")
             Method result = clazz.getDeclaredMethod(methodName, parameters);
@@ -224,7 +224,7 @@ public class ObjectStateTest extends AbstractTest {
             // human-readable class.methodName(parameter[,parameter])
             StringBuffer sb = new StringBuffer(methodName);
             String delimiter = "(";
-            for (Class parameter: parameters) {
+            for (Class<?> parameter: parameters) {
                 sb.append(delimiter);
                 sb.append(parameter.getName());
                 delimiter = ",";
diff --git a/api/src/test/java/javax/jdo/PMFService.java b/api/src/test/java/javax/jdo/PMFService.java
index 7d1a8e36..6b41cced 100644
--- a/api/src/test/java/javax/jdo/PMFService.java
+++ b/api/src/test/java/javax/jdo/PMFService.java
@@ -28,25 +28,23 @@ public class PMFService implements Constants{
     }
 
     public static PersistenceManagerFactory getPersistenceManagerFactory(
-            Map overrides, Map props) {
-        PersistenceManagerFactory pmf =
-                (PersistenceManagerFactory) PMFProxy.newInstance();
+            Map<?, ?> overrides, Map<?, ?> props) {
+        PersistenceManagerFactory pmf = PMFProxy.newInstance();
         setPMFProperties(pmf, props, overrides);
 
         return pmf;
     }
 
     public static PersistenceManagerFactory getPersistenceManagerFactory(
-            Map props) {
-        PersistenceManagerFactory pmf =
-                (PersistenceManagerFactory) PMFProxy.newInstance();
+            Map<?, ?> props) {
+        PersistenceManagerFactory pmf = PMFProxy.newInstance();
         setPMFProperties(pmf, props, null);
 
         return pmf;
     }
 
     private static void setPMFProperties(PersistenceManagerFactory pmf,
-            Map props, Map overrides) {
+            Map<?, ?> props, Map<?, ?> overrides) {
 
         pmf.setConnectionDriverName((String)props.get(PROPERTY_CONNECTION_DRIVER_NAME));
 
diff --git a/api/src/test/java/javax/jdo/identity/ConcreteTestIdentity.java b/api/src/test/java/javax/jdo/identity/ConcreteTestIdentity.java
index 02de1ee7..52e5e0f6 100644
--- a/api/src/test/java/javax/jdo/identity/ConcreteTestIdentity.java
+++ b/api/src/test/java/javax/jdo/identity/ConcreteTestIdentity.java
@@ -30,9 +30,11 @@ import java.io.ObjectOutput;
  *
  * @author clr
  */
-    public class ConcreteTestIdentity extends SingleFieldIdentity {
-        
-        ConcreteTestIdentity(Class cls) {
+    public class ConcreteTestIdentity extends SingleFieldIdentity<ConcreteTestIdentity> {
+
+        private static final long serialVersionUID = 1L;
+
+        ConcreteTestIdentity(Class<?> cls) {
             super(cls);
         }
         
@@ -47,8 +49,8 @@ import java.io.ObjectOutput;
          * @return The relative ordering between the objects
          * @since 2.2
          */
-        public int compareTo(Object o) {
-            throw new ClassCastException("Not implemented");
+        public int compareTo(ConcreteTestIdentity o) {
+            throw new UnsupportedOperationException("Not implemented");
         }
 
         public void writeExternal(ObjectOutput out) throws IOException {
diff --git a/api/src/test/java/javax/jdo/identity/IntIdentityTest.java b/api/src/test/java/javax/jdo/identity/IntIdentityTest.java
index 271531e2..283b04a1 100644
--- a/api/src/test/java/javax/jdo/identity/IntIdentityTest.java
+++ b/api/src/test/java/javax/jdo/identity/IntIdentityTest.java
@@ -43,29 +43,29 @@ public class IntIdentityTest extends SingleFieldIdentityTest {
     }
     
     public void testConstructor() {
-        IntIdentity c1 = new IntIdentity(Object.class, (int)1);
-        IntIdentity c2 = new IntIdentity(Object.class, (int)1);
-        IntIdentity c3 = new IntIdentity(Object.class, (int)2);
+        IntIdentity c1 = new IntIdentity(Object.class, 1);
+        IntIdentity c2 = new IntIdentity(Object.class, 1);
+        IntIdentity c3 = new IntIdentity(Object.class, 2);
         assertEquals("Equal IntIdentity instances compare not equal.", c1, c2);
         assertFalse ("Not equal IntIdentity instances compare equal", c1.equals(c3));
     }
 
     public void testIntegerConstructor() {
-        IntIdentity c1 = new IntIdentity(Object.class, (int)1);
-        IntIdentity c2 = new IntIdentity(Object.class, Integer.valueOf((int)1));
-        IntIdentity c3 = new IntIdentity(Object.class, Integer.valueOf((int)2));
+        IntIdentity c1 = new IntIdentity(Object.class, 1);
+        IntIdentity c2 = new IntIdentity(Object.class, Integer.valueOf(1));
+        IntIdentity c3 = new IntIdentity(Object.class, Integer.valueOf(2));
         assertEquals ("Equal intIdentity instances compare not equal.", c1, c2);
         assertFalse ("Not equal IntIdentity instances compare equal", c1.equals(c3));
     }
 
     public void testToStringConstructor() {
-        IntIdentity c1 = new IntIdentity(Object.class, (int)1);
+        IntIdentity c1 = new IntIdentity(Object.class, 1);
         IntIdentity c2 = new IntIdentity(Object.class, c1.toString());
         assertEquals ("Equal IntIdentity instances compare not equal.", c1, c2);
     }
 
     public void testStringConstructor() {
-        IntIdentity c1 = new IntIdentity(Object.class, (int)1);
+        IntIdentity c1 = new IntIdentity(Object.class, 1);
         IntIdentity c2 = new IntIdentity(Object.class, "1");
         IntIdentity c3 = new IntIdentity(Object.class, "2");
         assertEquals ("Equal IntIdentity instances compare not equal.", c1, c2);
@@ -82,7 +82,7 @@ public class IntIdentityTest extends SingleFieldIdentityTest {
     }
     
     public void testSerialized() {
-        IntIdentity c1 = new IntIdentity(Object.class, (int)1);
+        IntIdentity c1 = new IntIdentity(Object.class, 1);
         IntIdentity c2 = new IntIdentity(Object.class, "1");
         IntIdentity c3 = new IntIdentity(Object.class, "2");
         Object[] scis = writeReadSerialized(new Object[] {c1, c2, c3});
diff --git a/api/src/test/java/javax/jdo/identity/ObjectIdentityTest.java b/api/src/test/java/javax/jdo/identity/ObjectIdentityTest.java
index af957726..7a278881 100644
--- a/api/src/test/java/javax/jdo/identity/ObjectIdentityTest.java
+++ b/api/src/test/java/javax/jdo/identity/ObjectIdentityTest.java
@@ -52,14 +52,7 @@ public class ObjectIdentityTest extends SingleFieldIdentityTest {
     
     /** The JDOImplHelper instance used for Date formatting.
      */
-    private static JDOImplHelper helper = (JDOImplHelper)
-        doPrivileged(
-            new PrivilegedAction<JDOImplHelper> () {
-                public JDOImplHelper run () {
-                    return JDOImplHelper.getInstance();
-                }
-            }
-        );
+    private static final JDOImplHelper helper = doPrivileged(JDOImplHelper::getInstance);
 
     @SuppressWarnings("unchecked")
     private static <T> T doPrivileged(PrivilegedAction<T> privilegedAction) {
@@ -268,25 +261,25 @@ public class ObjectIdentityTest extends SingleFieldIdentityTest {
 
     public void testStringLocaleConstructorLanguage() {
         if (!isClassLoadable("java.util.Currency")) return;
-        SingleFieldIdentity c1 = new ObjectIdentity(Object.class, 
+        SingleFieldIdentity<ObjectIdentity> c1 = new ObjectIdentity(Object.class,
                     "java.util.Locale:en");
         assertEquals(new Locale("en"), c1.getKeyAsObject());
     }
 
     public void testStringLocaleConstructorCountry() {
-        SingleFieldIdentity c1 = new ObjectIdentity(Object.class, 
+        SingleFieldIdentity<ObjectIdentity> c1 = new ObjectIdentity(Object.class,
                     "java.util.Locale:_US");
         assertEquals(new Locale("","US"), c1.getKeyAsObject());
     }
 
     public void testStringLocaleConstructorLanguageCountry() {
-        SingleFieldIdentity c1 = new ObjectIdentity(Object.class, 
+        SingleFieldIdentity<ObjectIdentity> c1 = new ObjectIdentity(Object.class,
                     "java.util.Locale:en_US");
         assertEquals(new Locale("en","US"), c1.getKeyAsObject());
     }
 
     public void testStringLocaleConstructorLanguageCountryVariant() {
-        SingleFieldIdentity c1 = new ObjectIdentity(Object.class, 
+        SingleFieldIdentity<ObjectIdentity> c1 = new ObjectIdentity(Object.class,
                     "java.util.Locale:en_US_MAC");
         assertEquals(new Locale("en","US","MAC"), c1.getKeyAsObject());
     }
@@ -423,7 +416,7 @@ public class ObjectIdentityTest extends SingleFieldIdentityTest {
     public static class IdClass implements Serializable {
 		private static final long serialVersionUID = 5718122068872969580L;
 
-		public int value;
+		public final int value;
         public IdClass() {value = 0;}
         public IdClass(int value) {this.value = value;}
         public IdClass(String str) {this.value = Integer.parseInt(str);}
diff --git a/api/src/test/java/javax/jdo/listener/InstanceLifecycleEventTest.java b/api/src/test/java/javax/jdo/listener/InstanceLifecycleEventTest.java
index 81f43f57..86137f55 100644
--- a/api/src/test/java/javax/jdo/listener/InstanceLifecycleEventTest.java
+++ b/api/src/test/java/javax/jdo/listener/InstanceLifecycleEventTest.java
@@ -31,16 +31,16 @@ import javax.jdo.util.BatchTestRunner;
  */
 public class InstanceLifecycleEventTest extends AbstractTest {
     
-    Object created = new Object();
-    Object loaded = new Object();
-    Object stored = new Object();
-    Object cleared = new Object();
-    Object deleted = new Object();
-    Object dirtied = new Object();
-    Object attached = new Object();
-    Object attachTarget = new Object();
-    Object detached = new Object();
-    Object detachTarget = new Object();
+    final Object created = new Object();
+    final Object loaded = new Object();
+    final Object stored = new Object();
+    final Object cleared = new Object();
+    final Object deleted = new Object();
+    final Object dirtied = new Object();
+    final Object attached = new Object();
+    final Object attachTarget = new Object();
+    final Object detached = new Object();
+    final Object detachTarget = new Object();
     
     /** Creates a new instance of SingleFieldIdentityTest */
     public InstanceLifecycleEventTest() {
diff --git a/api/src/test/java/javax/jdo/pc/PCPoint.java b/api/src/test/java/javax/jdo/pc/PCPoint.java
index 2a80d426..4eb8fcc9 100644
--- a/api/src/test/java/javax/jdo/pc/PCPoint.java
+++ b/api/src/test/java/javax/jdo/pc/PCPoint.java
@@ -39,14 +39,14 @@ public class PCPoint
     protected transient byte jdoFlags;
     private static final int jdoInheritedFieldCount = 0;
     private static final String jdoFieldNames[] = { "x", "y" };
-    private static final Class jdoFieldTypes[]; 
+    private static final Class<?> jdoFieldTypes[];
     private static final byte jdoFieldFlags[] = { 
         (byte)(PersistenceCapable.CHECK_READ + PersistenceCapable.CHECK_WRITE + 
                PersistenceCapable.SERIALIZABLE), 
         (byte)(PersistenceCapable.CHECK_READ + PersistenceCapable.CHECK_WRITE + 
                PersistenceCapable.SERIALIZABLE), 
     }; 
-    private static final Class jdoPersistenceCapableSuperclass; 
+    private static final Class<?> jdoPersistenceCapableSuperclass;
 
     static 
     {
@@ -296,7 +296,7 @@ public class PCPoint
         return 2;
     }
 
-     public static final int jdoGetx(PCPoint pcpoint) {
+     public static int jdoGetx(PCPoint pcpoint) {
         if (pcpoint.jdoFlags <= PersistenceCapable.READ_WRITE_OK)
             return pcpoint.x;
         StateManager statemanager = pcpoint.jdoStateManager;
@@ -309,7 +309,7 @@ public class PCPoint
                 pcpoint, jdoInheritedFieldCount + 0, pcpoint.x);
     }
 
-    public static final Integer jdoGety(PCPoint pcpoint) {
+    public static Integer jdoGety(PCPoint pcpoint) {
         if (pcpoint.jdoFlags <= PersistenceCapable.READ_WRITE_OK)
             return pcpoint.y;
         StateManager statemanager = pcpoint.jdoStateManager;
@@ -322,7 +322,7 @@ public class PCPoint
                 pcpoint, jdoInheritedFieldCount + 1, pcpoint.y);
     }
 
-    public static final void jdoSetx(PCPoint pcpoint, int i) {
+    public static void jdoSetx(PCPoint pcpoint, int i) {
         if (pcpoint.jdoFlags == PersistenceCapable.READ_WRITE_OK) {
             pcpoint.x = i;
             return;
@@ -339,7 +339,7 @@ public class PCPoint
         }
     }
 
-    public static final void jdoSety(PCPoint pcpoint, Integer integer) {
+    public static void jdoSety(PCPoint pcpoint, Integer integer) {
         if (pcpoint.jdoFlags == PersistenceCapable.READ_WRITE_OK) {
             pcpoint.y = integer;
             return;
@@ -445,7 +445,7 @@ public class PCPoint
         out.defaultWriteObject();
     }
     
-    protected static final Class sunjdo$classForName$(String s) {
+    protected static Class<?> sunjdo$classForName$(String s) {
         try {
             return Class.forName(s);
         }
diff --git a/api/src/test/java/javax/jdo/schema/XMLTest.java b/api/src/test/java/javax/jdo/schema/XMLTest.java
index ceb03e47..b0ecd090 100644
--- a/api/src/test/java/javax/jdo/schema/XMLTest.java
+++ b/api/src/test/java/javax/jdo/schema/XMLTest.java
@@ -31,7 +31,7 @@ import javax.jdo.util.XMLTestUtil;
 public class XMLTest extends AbstractTest {
 
     /** */
-    protected static String BASEDIR = System.getProperty("basedir", ".");
+    protected static final String BASEDIR = System.getProperty("basedir", ".");
 
     /** File prefix */
     protected static final String FILE_PREFIX = BASEDIR + "/src/test/resources/";
@@ -53,28 +53,24 @@ public class XMLTest extends AbstractTest {
         new File[] {JDO_XSD_FILE, ORM_XSD_FILE, JDOQUERY_XSD_FILE};
     
     /** XSD metadata files. */
-    protected static File[] positiveXSDJDO = getFiles("Positive", "-xsd.jdo");
-    protected static File[] negativeXSDJDO = getFiles("Negative", "-xsd.jdo");
-    protected static File[] positiveXSDORM = getFiles("Positive", "-xsd.orm");
-    protected static File[] negativeXSDORM = getFiles("Negative", "-xsd.orm");
-    protected static File[] positiveXSDJDOQUERY = getFiles("Positive", "-xsd.jdoquery");
-    protected static File[] negativeXSDJDOQUERY = getFiles("Negative", "-xsd.jdoquery");
+    protected static final File[] positiveXSDJDO = getFiles("Positive", "-xsd.jdo");
+    protected static final File[] negativeXSDJDO = getFiles("Negative", "-xsd.jdo");
+    protected static final File[] positiveXSDORM = getFiles("Positive", "-xsd.orm");
+    protected static final File[] negativeXSDORM = getFiles("Negative", "-xsd.orm");
+    protected static final File[] positiveXSDJDOQUERY = getFiles("Positive", "-xsd.jdoquery");
+    protected static final File[] negativeXSDJDOQUERY = getFiles("Negative", "-xsd.jdoquery");
     
     /** DTD metadata files. */
-    protected static File[] positiveDTDJDO = getFiles("Positive", "-dtd.jdo");
-    protected static File[] negativeDTDJDO = getFiles("Negative", "-dtd.jdo");
-    protected static File[] positiveDTDORM = getFiles("Positive", "-dtd.orm");
-    protected static File[] negativeDTDORM = getFiles("Negative", "-dtd.orm");
-    protected static File[] positiveDTDJDOQUERY = getFiles("Positive", "-dtd.jdoquery");
-    protected static File[] negativeDTDJDOQUERY = getFiles("Negative", "-dtd.jdoquery");
+    protected static final File[] positiveDTDJDO = getFiles("Positive", "-dtd.jdo");
+    protected static final File[] negativeDTDJDO = getFiles("Negative", "-dtd.jdo");
+    protected static final File[] positiveDTDORM = getFiles("Positive", "-dtd.orm");
+    protected static final File[] negativeDTDORM = getFiles("Negative", "-dtd.orm");
+    protected static final File[] positiveDTDJDOQUERY = getFiles("Positive", "-dtd.jdoquery");
+    protected static final File[] negativeDTDJDOQUERY = getFiles("Negative", "-dtd.jdoquery");
     
     /** Returns array of files of matching file names. */
     protected static File[] getFiles(final String prefix, final String suffix) {
-        FilenameFilter filter = new FilenameFilter () {
-            public boolean accept(File file, String name) {
-                return (name.startsWith(prefix) && name.endsWith(suffix));
-            }
-        };
+        FilenameFilter filter = (file, name) -> (name.startsWith(prefix) && name.endsWith(suffix));
         File dir = new File(FILE_PREFIX);
         return dir.listFiles(filter);
     }
diff --git a/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java b/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
index 3e4b7c90..66ec1ddc 100644
--- a/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
+++ b/api/src/test/java/javax/jdo/spi/JDOImplHelperTest.java
@@ -71,7 +71,7 @@ public class JDOImplHelperTest extends AbstractTest {
     /** */
     public void testGetFieldTypes() {
         JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        Class[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
+        Class<?>[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
         if (fieldTypes == null) {
             fail("array of field types is null");
         }
@@ -116,7 +116,7 @@ public class JDOImplHelperTest extends AbstractTest {
     /** */
     public void testGetPCSuperclass() {
         JDOImplHelper implHelper = JDOImplHelper.getInstance();
-        Class pcSuper = 
+        Class<?> pcSuper =
             implHelper.getPersistenceCapableSuperclass(PCPoint.class);
         if (pcSuper != null) {
             fail("Wrong pc superclass of PCPoint; expected null, got " + 
@@ -139,7 +139,7 @@ public class JDOImplHelperTest extends AbstractTest {
     public void testClassRegistration() {
         JDOImplHelper implHelper = JDOImplHelper.getInstance();
 
-        Collection registeredClasses = implHelper.getRegisteredClasses();
+        Collection<Class<?>> registeredClasses = implHelper.getRegisteredClasses();
         // test whether PCPoint is registered
         if (!registeredClasses.contains(PCPoint.class)) {
             fail("Missing registration of pc class PCPoint");
@@ -147,9 +147,9 @@ public class JDOImplHelperTest extends AbstractTest {
 
         // Save registered meta data for restoring
         String[] fieldNames = implHelper.getFieldNames(PCPoint.class);
-        Class[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
+        Class<?>[] fieldTypes = implHelper.getFieldTypes(PCPoint.class);
         byte[] fieldFlags = implHelper.getFieldFlags(PCPoint.class);
-        Class pcSuperclass = implHelper.getPersistenceCapableSuperclass(PCPoint.class);
+        Class<?> pcSuperclass = implHelper.getPersistenceCapableSuperclass(PCPoint.class);
         
         // test unregisterClass with null parameter
         try {
diff --git a/api/src/test/java/javax/jdo/spi/StateInterrogationTest.java b/api/src/test/java/javax/jdo/spi/StateInterrogationTest.java
index bfbee55d..a1b1cf5f 100644
--- a/api/src/test/java/javax/jdo/spi/StateInterrogationTest.java
+++ b/api/src/test/java/javax/jdo/spi/StateInterrogationTest.java
@@ -41,7 +41,7 @@ import javax.jdo.util.BatchTestRunner;
  */
 public class StateInterrogationTest extends AbstractTest {
     
-    private JDOImplHelper implHelper = JDOImplHelper.getInstance();
+    private final JDOImplHelper implHelper = JDOImplHelper.getInstance();
 
     /** Creates a new instance of StateInterrogationTest */
     public StateInterrogationTest() {
@@ -322,7 +322,7 @@ public class StateInterrogationTest extends AbstractTest {
     /** 
      * The non-binary-compatible PersistenceManager class instances.
      */
-    static private PersistenceManager pmProxy0 = (PersistenceManager)
+    private static final PersistenceManager pmProxy0 = (PersistenceManager)
             Proxy.newProxyInstance(
                 PersistenceManager.class.getClassLoader(),
                 new Class[] {PersistenceManager.class},
@@ -331,7 +331,7 @@ public class StateInterrogationTest extends AbstractTest {
     /** 
      * The non-binary-compatible PersistenceManager class instances.
      */
-    static private PersistenceManager pmProxy1 = (PersistenceManager)
+    private static final PersistenceManager pmProxy1 = (PersistenceManager)
             Proxy.newProxyInstance(
                 PersistenceManager.class.getClassLoader(),
                 new Class[] {PersistenceManager.class},
@@ -340,7 +340,7 @@ public class StateInterrogationTest extends AbstractTest {
     /** 
      * The non-binary-compatible PersistenceManager class instances.
      */
-    static private PersistenceManager pmProxy2 = (PersistenceManager)
+    private static final PersistenceManager pmProxy2 = (PersistenceManager)
             Proxy.newProxyInstance(
                 PersistenceManager.class.getClassLoader(),
                 new Class[] {PersistenceManager.class},
@@ -349,27 +349,27 @@ public class StateInterrogationTest extends AbstractTest {
     /**
      * The array of PersistenceManager proxies
      */
-    static PersistenceManager[] pmProxies = {pmProxy0, pmProxy1, pmProxy2};
+    static final PersistenceManager[] pmProxies = {pmProxy0, pmProxy1, pmProxy2};
     
     /** 
      * The array of NonBinaryCompatiblePersistenceCapable instances.
      */
-    NonBinaryCompatiblePersistenceCapable nbcpc0 = 
+    final NonBinaryCompatiblePersistenceCapable nbcpc0 =
        new NonBinaryCompatiblePersistenceCapable(0);
-    NonBinaryCompatiblePersistenceCapable nbcpc1 = 
+    final NonBinaryCompatiblePersistenceCapable nbcpc1 =
        new NonBinaryCompatiblePersistenceCapable(1);
-    NonBinaryCompatiblePersistenceCapable nbcpc2 = 
+    final NonBinaryCompatiblePersistenceCapable nbcpc2 =
        new NonBinaryCompatiblePersistenceCapable(2);
-    
-    NonBinaryCompatiblePersistenceCapable[] nbcpcs = {nbcpc0, nbcpc1, nbcpc2};
+
+    final NonBinaryCompatiblePersistenceCapable[] nbcpcs = {nbcpc0, nbcpc1, nbcpc2};
     
     /** 
      * The array of StateInterrogations
      */
-    static StateInterrogation si0 = new StateInterrogationImpl(0);
-    static StateInterrogation si1 = new StateInterrogationImpl(1);
-    static StateInterrogation si2 = new StateInterrogationImpl(2);
-    static StateInterrogation[] sis = {si0, si1, si2};
+    static final StateInterrogation si0 = new StateInterrogationImpl(0);
+    static final StateInterrogation si1 = new StateInterrogationImpl(1);
+    static final StateInterrogation si2 = new StateInterrogationImpl(2);
+    static final StateInterrogation[] sis = {si0, si1, si2};
     
     /** 
      * The StateInterrogation implementation manages 
@@ -387,7 +387,7 @@ public class StateInterrogationTest extends AbstractTest {
      */
     private static class StateInterrogationImpl implements StateInterrogation {
         
-        private int id;
+        private final int id;
         
         public int hashCode() {
             return id;
@@ -471,7 +471,7 @@ public class StateInterrogationTest extends AbstractTest {
      * The non-binary-compatible PersistenceCapable class.
      */
     public static class NonBinaryCompatiblePersistenceCapable {
-        private int id;
+        private final int id;
         private boolean dirty = false;
         private NonBinaryCompatiblePersistenceCapable(int id) {
             this.id = id;
@@ -491,7 +491,7 @@ public class StateInterrogationTest extends AbstractTest {
      * The non-binary-compatible object id class.
      */
     public static class ObjectIdImpl {
-        private int id;
+        private final int id;
         private ObjectIdImpl(int id) {
             this.id = id;
         }
@@ -509,7 +509,7 @@ public class StateInterrogationTest extends AbstractTest {
      *  for PersistenceManager proxy.
      */
     private static class InvocationHandlerImpl implements InvocationHandler {
-        private int id;
+        private final int id;
         private InvocationHandlerImpl(int id) {
             this.id = id;
         }
diff --git a/api/src/test/java/javax/jdo/stub/StubPMF.java b/api/src/test/java/javax/jdo/stub/StubPMF.java
index b903fafd..943e67c9 100644
--- a/api/src/test/java/javax/jdo/stub/StubPMF.java
+++ b/api/src/test/java/javax/jdo/stub/StubPMF.java
@@ -36,7 +36,7 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
 	private static final long serialVersionUID = 488698916248368422L;
 
 	public static PersistenceManagerFactory getPersistenceManagerFactory(
-        Map props) {
+        Map<?, ?> props) {
 
         StubPMF pmf = new StubPMF();
 
@@ -57,7 +57,7 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
     }
 
     public static PersistenceManagerFactory getPersistenceManagerFactory(
-        Map overrides, Map props) {
+        Map<?, ?> overrides, Map<?, ?> props) {
 
         StubPMF pmf = new StubPMF();
 
@@ -97,7 +97,7 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
     Integer optionDatastoreReadTimeoutMillis;
     Integer optionDatastoreWriteTimeoutMillis;
 
-    Properties properties = new Properties();
+    final Properties properties = new Properties();
 
     public String getConnectionUserName() {
         return optionConnectionUserName;
@@ -345,40 +345,40 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
         public void evictAll(Object... oids) {
         }
 
-        public void evictAll(Collection oids) {
+        public void evictAll(Collection<?> oids) {
         }
 
-        public void evictAll(boolean subclasses, Class pcClass) {
+        public void evictAll(boolean subclasses, Class<?> pcClass) {
         }
 
         public void pin(Object oid) {
         }
 
-        public void pinAll(Collection oids) {
+        public void pinAll(Collection<?> oids) {
         }
 
         public void pinAll(Object... oids) {
         }
 
-        public void pinAll(boolean subclasses, Class pcClass) {
+        public void pinAll(boolean subclasses, Class<?> pcClass) {
         }
 
         public void unpin(Object oid) {
         }
 
-        public void unpinAll(Collection oids) {
+        public void unpinAll(Collection<?> oids) {
         }
 
         public void unpinAll(Object... oids) {
         }
 
-        public void unpinAll(boolean subclasses, Class pcClass) {
+        public void unpinAll(boolean subclasses, Class<?> pcClass) {
         }
     };
     }
 
     public void addInstanceLifecycleListener(
-        InstanceLifecycleListener listener, Class[] classes) {
+        InstanceLifecycleListener listener, Class<?>[] classes) {
         throw new UnsupportedOperationException("not implemented");
     }
 
@@ -405,7 +405,7 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
     }
 
     @SuppressWarnings("rawtypes")
-    public Set getFetchGroups() {
+    public Set<FetchGroup> getFetchGroups() {
         throw new UnsupportedOperationException("not implemented");
     }
 
@@ -549,7 +549,7 @@ public class StubPMF implements PersistenceManagerFactory, Constants {
             + name);
     }
 
-    void setProperties(Map properties) {
+    void setProperties(Map<?, ?> properties) {
         for (Object key : properties.keySet()) {
             String k = key.toString();
             Object v = properties.get(key);
diff --git a/api/src/test/java/javax/jdo/util/AbstractTest.java b/api/src/test/java/javax/jdo/util/AbstractTest.java
index 393d278d..d70a3b71 100644
--- a/api/src/test/java/javax/jdo/util/AbstractTest.java
+++ b/api/src/test/java/javax/jdo/util/AbstractTest.java
@@ -27,10 +27,10 @@ import junit.framework.TestCase;
 public abstract class AbstractTest extends TestCase implements Constants {
 
     /** */
-    protected static PrintStream out = System.out;
+    protected static final PrintStream OUT = System.out;
     
     /** If true, print extra messages. */
-    protected boolean verbose;
+    protected final boolean verbose;
 
     /**
      * Construct and initialize from properties.
@@ -56,7 +56,7 @@ public abstract class AbstractTest extends TestCase implements Constants {
      */
     protected void println(String s) {
         if (verbose) 
-            out.println(s);
+            OUT.println(s);
     }
     
     /** New line.
diff --git a/api/src/test/java/javax/jdo/util/BatchTestRunner.java b/api/src/test/java/javax/jdo/util/BatchTestRunner.java
index 30c758f0..60355902 100644
--- a/api/src/test/java/javax/jdo/util/BatchTestRunner.java
+++ b/api/src/test/java/javax/jdo/util/BatchTestRunner.java
@@ -22,6 +22,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.io.PrintStream;
 
 import junit.framework.Test;
+import junit.framework.TestCase;
 import junit.framework.TestResult;
 import junit.framework.TestSuite;
 import junit.textui.ResultPrinter;
@@ -59,14 +60,15 @@ public class BatchTestRunner
     }
     
     /**  
-     * Constructor. USes teh specified resultPrinter to format the test result.
+     * Constructor. Uses tehe specified resultPrinter to format the test result.
      */
     public BatchTestRunner(ResultPrinter resultPrinter) {
         super(resultPrinter);
     }
 
-    /** Runs all test methods from the specified class. */
-    public static void run(Class clazz) {
+    /** Runs all test methods from the specified class.
+     * @param clazz*/
+    public static void run(Class<? extends TestCase> clazz) {
         run(new TestSuite(clazz));
     }
     
@@ -113,7 +115,7 @@ public class BatchTestRunner
                     // get class instance
                     Class<?> clazz = Class.forName(className);
                     // constructor taking PrintStream arg
-                    Constructor ctor = clazz.getConstructor(
+                    Constructor<?> ctor = clazz.getConstructor(
                         new Class[] { PrintStream.class } );
                     // create instance
                     return (ResultPrinter)ctor.newInstance(
diff --git a/api/src/test/java/javax/jdo/util/XMLTestUtil.java b/api/src/test/java/javax/jdo/util/XMLTestUtil.java
index 10681a7a..e41c223b 100644
--- a/api/src/test/java/javax/jdo/util/XMLTestUtil.java
+++ b/api/src/test/java/javax/jdo/util/XMLTestUtil.java
@@ -56,7 +56,7 @@ import org.xml.sax.SAXParseException;
 public class XMLTestUtil {
 
     /** */
-    protected static String BASEDIR = System.getProperty("basedir", ".");
+    protected static final String BASEDIR = System.getProperty("basedir", ".");
 
     /** "http://www.w3.org/2001/XMLSchema" */
     protected static final String XSD_TYPE = 
@@ -102,11 +102,11 @@ public class XMLTestUtil {
 
     /** Name of the metadata property, a comma separated list of JDO metadata
      * file or directories containing such files. */
-    protected static String METADATA_PROP = "javax.jdo.metadata";
+    protected static final String METADATA_PROP = "javax.jdo.metadata";
 
     /** Name of the recursive property, allowing recursive search of metadata
      * files. */
-    protected static String RECURSIVE_PROP = "javax.jdo.recursive";
+    protected static final String RECURSIVE_PROP = "javax.jdo.recursive";
     
     /** Separator character for the metadata property. */
     protected static final String DELIM = ",;";
@@ -309,11 +309,11 @@ public class XMLTestUtil {
                 try {
                     BufferedReader bufferedReader =
                         new BufferedReader(new FileReader(fileUnderTest));
-                    ArrayList<String> tmp = new ArrayList<String>();
+                    ArrayList<String> tmp = new ArrayList<>();
                     while (bufferedReader.ready()) {
                         tmp.add(bufferedReader.readLine());
                     }
-                    lines = (String[])tmp.toArray(new String[tmp.size()]);
+                    lines = tmp.toArray(new String[tmp.size()]);
                 } catch (IOException ex) {
                     throw new JDOFatalException("getLines: caught IOException", ex);
                 }
@@ -389,8 +389,8 @@ public class XMLTestUtil {
         private static final String JDOQUERY_DTD_FILENAME = 
             "javax/jdo/jdoquery_3_2.dtd";
 
-        static Map<String,String> publicIds = new HashMap<String,String>();
-        static Map<String,String> systemIds = new HashMap<String,String>();
+        static final Map<String,String> publicIds = new HashMap<>();
+        static final Map<String,String> systemIds = new HashMap<>();
         static {
             publicIds.put(RECOGNIZED_JDO_PUBLIC_ID, JDO_DTD_FILENAME);
             publicIds.put(RECOGNIZED_ORM_PUBLIC_ID, ORM_DTD_FILENAME);
@@ -406,9 +406,9 @@ public class XMLTestUtil {
             throws SAXException, IOException 
         {
             // check for recognized ids
-            String filename = (String)publicIds.get(publicId);
+            String filename = publicIds.get(publicId);
             if (filename == null) {
-                filename = (String)systemIds.get(systemId);
+                filename = systemIds.get(systemId);
             }
             final String finalName = filename;
             if (finalName == null) {
@@ -442,7 +442,7 @@ public class XMLTestUtil {
     /** Helper class to find all test JDO metadata files. */
     public static class XMLFinder {
 
-        private List<File> metadataFiles = new ArrayList<File>();
+        private final List<File> metadataFiles = new ArrayList<>();
         private final boolean recursive;
         
         /** Constructor. */
@@ -456,21 +456,13 @@ public class XMLTestUtil {
         
         /** Returns array of files of matching file names. */
         private File[] getFiles(File dir, final String suffix) {
-            FilenameFilter filter = new FilenameFilter() {
-                    public boolean accept(File file, String name) {
-                        return name.endsWith(suffix);
-                    }
-                };
+            FilenameFilter filter = (file, name) -> name.endsWith(suffix);
             return dir.listFiles(filter);
         }
 
         /** */
         private File[] getDirectories(File dir) {
-            FileFilter filter = new FileFilter() {
-                    public boolean accept(File pathname) {
-                        return pathname.isDirectory();
-                    }
-                };
+            FileFilter filter = File::isDirectory;
             return dir.listFiles(filter);
         }
 
@@ -503,7 +495,7 @@ public class XMLTestUtil {
 
         /** Returns an array of test files with suffix .jdo, .orm or .jdoquery. */
         public File[] getMetadataFiles() {
-            return (File[])metadataFiles.toArray(new File[metadataFiles.size()]);
+            return metadataFiles.toArray(new File[metadataFiles.size()]);
         }
 
     }
@@ -513,12 +505,12 @@ public class XMLTestUtil {
         String[] ret = null;
         String metadata = System.getProperty(METADATA_PROP);
         if ((metadata != null) && (metadata.length() > 0)) {
-            List<String> entries = new ArrayList<String>();
+            List<String> entries = new ArrayList<>();
             StringTokenizer st = new StringTokenizer(metadata, DELIM);
             while (st.hasMoreTokens()) {
                 entries.add(st.nextToken());
             }
-            ret = (String[])entries.toArray(new String[entries.size()]);
+            ret = entries.toArray(new String[entries.size()]);
         }
         return ret;
     }
diff --git a/exectck/pom.xml b/exectck/pom.xml
index 7bc67aed..4ad229b1 100644
--- a/exectck/pom.xml
+++ b/exectck/pom.xml
@@ -21,13 +21,13 @@
     <parent>
         <groupId>org.apache.jdo</groupId>
         <artifactId>parent-pom</artifactId>
-        <version>3.2.2-SNAPSHOT</version>
+        <version>3.3-SNAPSHOT</version>
         <relativePath>../parent-pom</relativePath>
     </parent>
 
     <groupId>org.apache.jdo</groupId>
     <artifactId>jdo-exectck</artifactId>
-    <version>3.2.2-SNAPSHOT</version>
+    <version>3.3-SNAPSHOT</version>
     <packaging>maven-plugin</packaging>
     <name>JDO TCK Execution Maven Mojo</name>
 
diff --git a/parent-pom/pom.xml b/parent-pom/pom.xml
index b696b3c8..f6f61ec0 100644
--- a/parent-pom/pom.xml
+++ b/parent-pom/pom.xml
@@ -27,7 +27,7 @@
 
     <groupId>org.apache.jdo</groupId>
     <artifactId>parent-pom</artifactId>
-    <version>3.2.2-SNAPSHOT</version>
+    <version>3.3-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>JDO PARENT</name>
@@ -163,7 +163,9 @@
   </scm>
 
     <properties>
-        <project.build.outputTimestamp>1653505066</project.build.outputTimestamp>
+        <project.build.outputTimestamp>1661453031</project.build.outputTimestamp>
+        <showWarnings></showWarnings>
+        <compilerArgument></compilerArgument>
     </properties>
 
     <dependencyManagement>
@@ -171,17 +173,17 @@
             <dependency>
                 <groupId>javax.jdo</groupId>
                 <artifactId>jdo-api</artifactId>
-                <version>3.2.2-SNAPSHOT</version>
+                <version>3.3-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.jdo</groupId>
                 <artifactId>jdo-exectck</artifactId>
-                <version>3.2.2-SNAPSHOT</version>
+                <version>3.3-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.jdo</groupId>
                 <artifactId>jdo-tck</artifactId>
-                <version>3.2.2-SNAPSHOT</version>
+                <version>3.3-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.maven</groupId>
@@ -291,6 +293,9 @@
                 <configuration>
                     <source>1.8</source>
                     <target>1.8</target>
+                    <showWarnings>${showWarnings}</showWarnings>
+                    <fork>true</fork>
+                    <compilerArgument>${compilerArgument}</compilerArgument>
                 </configuration>
             </plugin>
             <plugin>
@@ -335,4 +340,14 @@
             </plugin>
         </plugins>
     </reporting>
+
+    <profiles>
+        <profile>
+            <id>warnings</id>
+            <properties>
+                <showWarnings>true</showWarnings>
+                <compilerArgument>-Xlint:all,-rawtypes</compilerArgument>
+            </properties>
+        </profile>
+    </profiles>
 </project>
diff --git a/pom.xml b/pom.xml
index 65919155..e017e6e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,13 +22,13 @@
     <parent>
         <groupId>org.apache.jdo</groupId>
         <artifactId>parent-pom</artifactId>
-        <version>3.2.2-SNAPSHOT</version>
+        <version>3.3-SNAPSHOT</version>
         <relativePath>parent-pom</relativePath>
     </parent>
 
     <groupId>org.apache</groupId>
     <artifactId>jdo</artifactId>
-    <version>3.2.2-SNAPSHOT</version>
+    <version>3.3-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <name>JDO Root POM</name>
diff --git a/tck/pom.xml b/tck/pom.xml
index 3b70cb8c..4d7b6ec1 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -21,19 +21,20 @@
     <parent>
         <groupId>org.apache.jdo</groupId>
         <artifactId>parent-pom</artifactId>
-        <version>3.2.2-SNAPSHOT</version>
+        <version>3.3-SNAPSHOT</version>
         <relativePath>../parent-pom</relativePath>
     </parent>
 
     <groupId>org.apache.jdo</groupId>
     <artifactId>jdo-tck</artifactId>
-    <version>3.2.2-SNAPSHOT</version>
+    <version>3.3-SNAPSHOT</version>
     <name>JDO Technology Compatibility Kit (TCK)</name>
     <description>The Java Data Objects (JDO) API is a standard interface-based Java model abstraction of persistence, developed as Java Specification Request JSR 243 under the auspices of the Java Community Process.
 
         The JDO TCK is a test suite designed to test implementations of the Java Data Objects specification. In order to claim compatibility with JDO, an implementation must pass all relevant tests of the JDOTCK.
 
     NOTE!! There are no unit tests in this project.</description>
+
     <dependencies>
         <dependency>
             <groupId>javax.jdo</groupId>
@@ -98,7 +99,7 @@
             <plugin>
                 <groupId>org.apache.jdo</groupId>
                 <artifactId>jdo-exectck</artifactId>
-                <version>3.2.2-SNAPSHOT</version>
+                <version>3.3-SNAPSHOT</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/tck/src/main/java/org/apache/jdo/tck/AbstractReaderTest.java b/tck/src/main/java/org/apache/jdo/tck/AbstractReaderTest.java
index 17b371e9..4c64bbc3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/AbstractReaderTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/AbstractReaderTest.java
@@ -34,16 +34,16 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 public class AbstractReaderTest extends JDO_Test {
 
     /** The list of all objects in the bean collection. */
-    protected List rootOids;
+    protected List<Object> rootOids;
 
     /** The name of the root object in the bean collection. */
-    protected static final String rootName = "root";
+    protected static final String ROOT_NAME = "root";
 
     /** The name of the file containing the bean collection (test data). */
     protected final String inputFilename = System.getProperty("jdo.tck.testdata");
 
     /** The map of String (bean name) to Object (bean). */
-    protected Map oidMap = new HashMap();
+    protected final Map<String, Object> oidMap = new HashMap<>();
 
     /** Get the named bean from the bean factory.
      * 
@@ -52,12 +52,12 @@ public class AbstractReaderTest extends JDO_Test {
      * @return the named object
      */
     protected Object getBean(final DefaultListableBeanFactory factory, final String name) {
-        return doPrivileged(
-            new PrivilegedAction() {
-                public Object run() {
-                    return factory.getBean(name);
-                }
-            }
+        return doPrivileged(() -> factory.getBean(name)
+        );
+    }
+
+    protected <T> T getBean(final DefaultListableBeanFactory factory, Class<T> clazz, final String name) {
+        return doPrivileged(() -> factory.getBean(name, clazz)
         );
     }
 
@@ -78,8 +78,9 @@ public class AbstractReaderTest extends JDO_Test {
      * @param factory the bean factory
      * @return the List of objects
      */
-    protected List getRootList(DefaultListableBeanFactory factory) {
-        return (List) getBean(factory, rootName);
+    @SuppressWarnings("unchecked")
+    protected List<Object> getRootList(DefaultListableBeanFactory factory) {
+        return (List<Object>) getBean(factory, ROOT_NAME);
     }
 
     /** Get the named object from the Map of objects.
@@ -88,7 +89,7 @@ public class AbstractReaderTest extends JDO_Test {
      * @return the named object
      */
     protected Object getOidByName(String name) {
-        return oidMap.get((Object)name);
+        return oidMap.get(name);
     }
 
 }
diff --git a/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java b/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
index 5278c730..e6ec3042 100644
--- a/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
+++ b/tck/src/main/java/org/apache/jdo/tck/JDO_Test.java
@@ -15,7 +15,6 @@
  * limitations under the License.
  */
 
-
 package org.apache.jdo.tck;
 
 import java.io.File;
@@ -35,6 +34,7 @@ import java.security.PrivilegedAction;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -42,7 +42,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.StringTokenizer;
-import java.util.Vector;
 
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
@@ -67,7 +66,7 @@ public abstract class JDO_Test extends TestCase {
     public static final int NUM_STATES = 13;
     public static final int ILLEGAL_STATE = 13;
 
-    public static final String[] states = {
+    protected static final String[] states = {
         "transient",
         "persistent-new",
         "persistent-clean",
@@ -96,7 +95,7 @@ public abstract class JDO_Test extends TestCase {
      * methods for each state. This is used to determine the current lifecycle
      * state of an object.
      */
-    private static final boolean state_statuses[][] = {
+    private static final boolean[][] state_statuses = {
         // IS_PERSISTENT IS_TRANSACTIONAL    IS_DIRTY      IS_NEW      IS_DELETED  IS_DETACHED
         // transient
         {   false,          false,              false,      false,      false,        false},
@@ -161,7 +160,7 @@ public abstract class JDO_Test extends TestCase {
     public static final String DATASTORE_IDENTITY = "datastoreidentity";
 
     /** Map of transaction isolation String values to Integer */
-    protected final static Map levelValues = new HashMap();
+    protected static final Map<String, Integer> levelValues = new HashMap<>();
     static {
         levelValues.put(Constants.TX_READ_UNCOMMITTED, 0);
         levelValues.put(Constants.TX_READ_COMMITTED, 1);
@@ -208,7 +207,7 @@ public abstract class JDO_Test extends TestCase {
     protected static PersistenceManagerFactory pmf;
     
     /** The collection of supported options of the pmf. */
-    protected static Collection supportedOptions;
+    protected static Collection<String> supportedOptions;
 
     /** The name of the pmf supported options summary file. */
     private static final String PMF_SUPPORTED_OPTIONS_FILE_NAME = "pmf_supported_options.txt";
@@ -220,11 +219,11 @@ public abstract class JDO_Test extends TestCase {
     protected boolean testSucceeded;
 
     /** Logger */
-    protected Log logger = 
+    protected final Log logger =
         LogFactory.getFactory().getInstance("org.apache.jdo.tck");
 
     /** true if debug logging in enabled. */
-    protected boolean debug = logger.isDebugEnabled();
+    protected final boolean debug = logger.isDebugEnabled();
     
     /** 
      * Indicates an exception thrown in method <code>tearDown</code>.
@@ -236,13 +235,13 @@ public abstract class JDO_Test extends TestCase {
      * A list of registered oid instances. 
      * Corresponding pc instances are deleted in <code>localTearDown</code>.
      */
-    private Collection tearDownInstances = new LinkedList();
+    private final Collection<Object> tearDownInstances = new LinkedList<>();
     
     /** 
      * A list of registered pc classes. 
      * The extents of these classes are deleted in <code>localTearDown</code>.
      */
-    private Collection tearDownClasses = new LinkedList();
+    private final Collection<Class<?>> tearDownClasses = new LinkedList<>();
     
     /**
      * Intended for subclasses so that they may skip this class's normal set up procedure.
@@ -252,7 +251,8 @@ public abstract class JDO_Test extends TestCase {
         return true;
     }
 
-    protected final void setUp() throws Exception {
+    @Override
+    protected final void setUp() {
         if (!preSetUp()) {
             return;
         }
@@ -271,24 +271,18 @@ public abstract class JDO_Test extends TestCase {
      * Runs the bare test sequence.
      * @exception Throwable if any exception is thrown
      */
+    @Override
     public final void runBare() throws Throwable {
         try {
             testSucceeded = false;
             setUp();
             runTest();
             testSucceeded = true;
-        }
-        catch (AssertionFailedError e) {
+        } catch (Throwable e) {
             if (logger.isInfoEnabled())
                 logger.info("Exception during setUp or runtest: ", e);
             throw e;
-        }
-        catch (Throwable t) {
-            if (logger.isInfoEnabled())
-                logger.info("Exception during setUp or runtest: ", t);
-            throw t;
-        }
-        finally {
+        } finally {
             tearDown();
             if (debug) {
                 logger.debug("Free memory: " + Runtime.getRuntime().freeMemory());
@@ -337,6 +331,7 @@ public abstract class JDO_Test extends TestCase {
      *  This is done at the end of each configuration, unless the property
      *  jdo.tck.closePMFAfterEachTest is set to true.
      */
+    @Override
     protected final void tearDown() {
         if (!preTearDown()) {
             return;
@@ -407,14 +402,14 @@ public abstract class JDO_Test extends TestCase {
         addTearDownObjectId(oid);
     }
     
-    protected void addTearDownClass(Class pcClass) {
+    protected void addTearDownClass(Class<?> pcClass) {
         this.tearDownClasses.add(pcClass);
     }
     
-    protected void addTearDownClass(Class[] pcClasses) {
+    protected void addTearDownClass(Class<?>[] pcClasses) {
         if (pcClasses == null) return;
-        for (int i = 0; i < pcClasses.length; ++i) {
-            addTearDownClass(pcClasses[i]);
+        for (Class<?> pcClass : pcClasses) {
+            addTearDownClass(pcClass);
         }
     }
     
@@ -431,7 +426,7 @@ public abstract class JDO_Test extends TestCase {
             getPM();
             try {
                 this.pm.currentTransaction().begin();
-                for (Iterator i = this.tearDownInstances.iterator(); i.hasNext(); ) {
+                for (Iterator<Object> i = this.tearDownInstances.iterator(); i.hasNext(); ) {
                     Object pc;
                     try {
                         pc = this.pm.getObjectById(i.next(), true);
@@ -468,8 +463,8 @@ public abstract class JDO_Test extends TestCase {
             getPM();
             try {
                 this.pm.currentTransaction().begin();
-                for (Iterator i = this.tearDownClasses.iterator(); i.hasNext(); ) {
-                    this.pm.deletePersistentAll(getAllObjects(this.pm, (Class)i.next()));
+                for (Class<?> tearDownClass : this.tearDownClasses) {
+                    this.pm.deletePersistentAll(getAllObjects(this.pm, tearDownClass));
                 }
                 this.pm.currentTransaction().commit();
             }
@@ -486,21 +481,18 @@ public abstract class JDO_Test extends TestCase {
      * @param pcClass the class object of the PersistenceCapabale class
      * @return a Collection of persistence objects
      */
-    protected Collection getAllObjects(PersistenceManager pm, Class pcClass) {
-        Collection col = new Vector() ;
-        Query query = pm.newQuery();
-        query.setClass(pcClass);
-        Extent candidates = null;
+    protected <T> Collection<T> getAllObjects(PersistenceManager pm, Class<T> pcClass) {
+        Query<T> query = pm.newQuery(pcClass);
+        Extent<T> candidates = null;
         try {
             candidates = pm.getExtent(pcClass, false);
         } catch (JDOException ex) {
             if (debug) logger.debug("Exception thrown for getExtent of class " +
                     pcClass.getName());
-            return col;
+            return Collections.emptyList();
         }
         query.setCandidates(candidates);
-        Object result = query.execute();
-        return (Collection)result;
+        return query.executeList();
     }
 
     /**
@@ -520,7 +512,7 @@ public abstract class JDO_Test extends TestCase {
         return pmf;
     }
 
-    protected Class getPMFClass() {
+    protected Class<?> getPMFClass() {
         if (pmf != null) {
             return pmf.getClass();
         }
@@ -548,12 +540,18 @@ public abstract class JDO_Test extends TestCase {
         if (pmf == null) {
             String name = null;
             try {
-                Class pmfClass = getPMFClass();
+                Class<?> pmfClass = getPMFClass();
                 name = pmfClass.getName();
-                pmf = (PersistenceManagerFactory) pmfClass.newInstance();
+                pmf = (PersistenceManagerFactory) pmfClass.getDeclaredConstructor().newInstance();
                 if (supportedOptions == null) {
                     supportedOptions = pmf.supportedOptions();
                 }
+            } catch (NoSuchMethodException ex) {
+                throw new JDOException("No no-args constructor of PMF class '" +
+                        name + "'.", ex);
+            } catch (InvocationTargetException ex) {
+                throw new JDOException("Exception thrown by constructor of PMF class '" +
+                        name + "'.", ex);
             } catch (InstantiationException ex) {
                 throw new JDOException("Cannot instantiate PMF class '" + 
                                        name + "'.", ex);
@@ -620,8 +618,8 @@ public abstract class JDO_Test extends TestCase {
                     failure = ex;
                 PersistenceManager[] pms = getFailedPersistenceManagers(
                     "closePMF", ex);
-                for (int i = 0; i < pms.length; i++) {
-                    cleanupPM(pms[i]);
+                for (PersistenceManager persistenceManager : pms) {
+                    cleanupPM(persistenceManager);
                 }
             }
             catch (RuntimeException ex) {
@@ -645,12 +643,10 @@ public abstract class JDO_Test extends TestCase {
         if (PMF != null) {
             if (!PMF.isClosed()) {
                 doPrivileged(
-                    new PrivilegedAction () {
-                        public Object run () {
+                        () -> {
                             PMF.close();
                             return null;
                         }
-                    }
                 );
             }
         }
@@ -749,18 +745,13 @@ public abstract class JDO_Test extends TestCase {
         if (file.exists())
             // PMF supported options have been dumped before => return
             return;
-        PrintStream resultStream = null;
-        try {
-            resultStream = new PrintStream(new FileOutputStream(file));
-            for (Iterator it = supportedOptions.iterator(); it.hasNext();) {
-                resultStream.println((String)it.next());
+        try (PrintStream resultStream = new PrintStream(new FileOutputStream(file))) {
+            for (String supportedOption : supportedOptions) {
+                resultStream.println(supportedOption);
             }
         } catch (FileNotFoundException e) {
             throw new JDOFatalException(
-                "dumpSupportedOptions: cannot create file " + file.getName(), e);
-        } finally {
-            if (resultStream != null)
-                resultStream.close();
+                    "dumpSupportedOptions: cannot create file " + file.getName(), e);
         }
     }
      
@@ -1065,7 +1056,7 @@ public abstract class JDO_Test extends TestCase {
      */
     public static String getStateOfInstance(Object o) {
         boolean existingEntries = false;
-        StringBuffer buff = new StringBuffer("{");
+        StringBuilder buff = new StringBuilder("{");
         if( JDOHelper.isPersistent(o) ){
             buff.append("persistent");
             existingEntries = true;
@@ -1110,7 +1101,8 @@ public abstract class JDO_Test extends TestCase {
         status[IS_NEW]              = JDOHelper.isNew(o);
         status[IS_DELETED]          = JDOHelper.isDeleted(o);
         status[IS_DETACHED]         = JDOHelper.isDetached(o);
-        int i, j;
+        int i;
+        int j;
     outerloop:
         for( i = 0; i < NUM_STATES; ++i ){
             for( j = 0; j < NUM_STATUSES; ++j ){
@@ -1124,16 +1116,16 @@ public abstract class JDO_Test extends TestCase {
 
     /**
      * Tests if a found state matches an expected state.
-     * @param found_state the  found state
-     * @param expected_state the expected state
+     * @param foundState the  found state
+     * @param expectedState the expected state
      * @return true if the found state matches the expected state
      */
-    public static boolean compareStates(int found_state, int expected_state) {
+    public static boolean compareStates(int foundState, int expectedState) {
         // status interrogation gives same values for PERSISTENT_NONTRANSACTIONAL and HOLLOW
-        return (expected_state < 0
-                || found_state == expected_state
-                || (found_state == HOLLOW && expected_state == PERSISTENT_NONTRANSACTIONAL)
-                || (found_state == PERSISTENT_NONTRANSACTIONAL && expected_state == HOLLOW));
+        return (expectedState < 0
+                || foundState == expectedState
+                || (foundState == HOLLOW && expectedState == PERSISTENT_NONTRANSACTIONAL)
+                || (foundState == PERSISTENT_NONTRANSACTIONAL && expectedState == HOLLOW));
     }
 
     /** This method mangles an object by changing all its non-static, 
@@ -1144,35 +1136,33 @@ public abstract class JDO_Test extends TestCase {
      * @return a mangled object
      * @throws Exception exception
      */
-    protected boolean mangleObject (Object oid) 
-        throws Exception {
+    protected boolean mangleObject (Object oid) throws IllegalAccessException {
         Field[] fields = getModifiableFields(oid);
         if (fields.length == 0) return false;
-        for (int i = 0; i < fields.length; ++i) {
-            Field field = fields[i];
-            Class fieldType = field.getType();
+        for (Field field : fields) {
+            Class<?> fieldType = field.getType();
             if (fieldType == long.class) {
                 field.setLong(oid, 10000L + field.getLong(oid));
             } else if (fieldType == int.class) {
                 field.setInt(oid, 10000 + field.getInt(oid));
             } else if (fieldType == short.class) {
-                field.setShort(oid, (short)(10000 + field.getShort(oid)));
+                field.setShort(oid, (short) (10000 + field.getShort(oid)));
             } else if (fieldType == byte.class) {
-                field.setByte(oid, (byte)(100 + field.getByte(oid)));
+                field.setByte(oid, (byte) (100 + field.getByte(oid)));
             } else if (fieldType == char.class) {
-                field.setChar(oid, (char)(10 + field.getChar(oid)));
+                field.setChar(oid, (char) (10 + field.getChar(oid)));
             } else if (fieldType == String.class) {
-                field.set(oid, "This is certainly a challenge" + (String)field.get(oid));
+                field.set(oid, "This is certainly a challenge" + field.get(oid));
             } else if (fieldType == Integer.class) {
-                field.set(oid, Integer.valueOf(10000 + ((Integer)field.get(oid)).intValue()));
+                field.set(oid, Integer.valueOf(10000 + ((Integer) field.get(oid)).intValue()));
             } else if (fieldType == Long.class) {
-                field.set(oid, Long.valueOf(10000L + ((Long)field.get(oid)).longValue()));
+                field.set(oid, Long.valueOf(10000L + ((Long) field.get(oid)).longValue()));
             } else if (fieldType == Short.class) {
-                field.set(oid, Short.valueOf((short)(10000 + ((Short)field.get(oid)).shortValue())));
+                field.set(oid, Short.valueOf((short) (10000 + ((Short) field.get(oid)).shortValue())));
             } else if (fieldType == Byte.class) {
-                field.set(oid, Byte.valueOf((byte)(100 + ((Byte)field.get(oid)).byteValue())));
+                field.set(oid, Byte.valueOf((byte) (100 + ((Byte) field.get(oid)).byteValue())));
             } else if (fieldType == Character.class) {
-                field.set(oid, Character.valueOf((char)(10 + ((Character)(field.get(oid))).charValue())));
+                field.set(oid, Character.valueOf((char) (10 + ((Character) (field.get(oid))).charValue())));
             }
         }
         return true;
@@ -1191,14 +1181,12 @@ public abstract class JDO_Test extends TestCase {
      * @return an array of fields
      */
     protected Field[] getModifiableFields(final Object obj) {
-        return (Field[])doPrivileged(
-            new PrivilegedAction () {
-                public Object run () {
-                    Class cls = obj.getClass();
-                    List result = new ArrayList();
+        return doPrivileged(
+                () -> {
+                    Class<?> cls = obj.getClass();
+                    List<Field> result = new ArrayList<>();
                     Field[] fields = cls.getFields();
-                    for (int i = 0; i < fields.length; ++i) {
-                        Field field = fields[i];
+                    for (Field field : fields) {
                         int modifiers = field.getModifiers();
                         if (Modifier.isFinal(modifiers) ||
                                 Modifier.isStatic(modifiers))
@@ -1208,7 +1196,6 @@ public abstract class JDO_Test extends TestCase {
                     }
                     return result.toArray(new Field[result.size()]);
                 }
-            }
         );
     }
 
@@ -1380,8 +1367,8 @@ public abstract class JDO_Test extends TestCase {
      * @return true if the actual level is greater or equal the requsted level
      */
     protected boolean validLevelSubstitution(String requested, String actual) {
-        int requestedLevel = ((Integer)levelValues.get(requested)).intValue();
-        int actualLevel = ((Integer)levelValues.get(actual)).intValue();
+        int requestedLevel = (levelValues.get(requested)).intValue();
+        int actualLevel = (levelValues.get(actual)).intValue();
         return actualLevel >= requestedLevel;
     }
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/SignatureTest.java b/tck/src/main/java/org/apache/jdo/tck/api/SignatureTest.java
index 4ce5ae12..1e6e8024 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/SignatureTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/SignatureTest.java
@@ -47,7 +47,7 @@ import java.text.ParseException;
  */
 public class SignatureTest extends JDO_Test {
 
-    private static String newLine = System.getProperty("line.separator");
+    private static final String NEWLINE = System.getProperty("line.separator");
 
     /** */
     private static final String ASSERTION_FAILED = 
@@ -91,15 +91,15 @@ public class SignatureTest extends JDO_Test {
             }
 
             // run the test
-            final List signatureFileNames = new ArrayList();
+            final List<String> signatureFileNames = new ArrayList<>();
             signatureFileNames.add(signatureFileName);
             int status = verifier.test(signatureFileNames);
             
             // print test's output in case of problems or debugging
             if (status != 0) {
                 fail(ASSERTION_FAILED,
-                     ("Found problems or signature descrepancies." + newLine
-                      + "Test Output: " + newLine + sw.toString()));
+                     ("Found problems or signature descrepancies." + NEWLINE
+                      + "Test Output: " + NEWLINE + sw));
                 logger.debug(sw.toString());
             }
             
@@ -107,14 +107,10 @@ public class SignatureTest extends JDO_Test {
             if (debug) {
                 logger.debug(sw.toString());
             }
-        } catch (IOException ex) {
+        } catch (IOException | ParseException ex) {
             fail(ASSERTION_FAILED,
-                 ("Exception caught: " + ex + newLine
-                  + "Test Output: " + newLine + sw.toString()));
-        } catch (ParseException ex) {
-            fail(ASSERTION_FAILED,
-                 ("Exception caught: " + ex + newLine
-                  + "Test Output: " + newLine + sw.toString()));
+                 ("Exception caught: " + ex + NEWLINE
+                  + "Test Output: " + NEWLINE + sw));
         }
     }
 }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/converter/IntAttributeConverterTest.java b/tck/src/main/java/org/apache/jdo/tck/api/converter/IntAttributeConverterTest.java
index d14a23e8..c3e63f80 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/converter/IntAttributeConverterTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/converter/IntAttributeConverterTest.java
@@ -91,7 +91,7 @@ public class IntAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCPoint query with a query parameter of type Point.
      */
-    public void testPCPointQueryWithPointParam() throws Exception {
+    public void testPCPointQueryWithPointParam() {
         runQueryWithIntParameter(PCPoint.class);
     }
 
@@ -126,7 +126,7 @@ public class IntAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCPointAnnotated query with a query parameter of type String.
      */
-    public void testPCPointAnnotatedQueryWithPointParam() throws Exception {
+    public void testPCPointAnnotatedQueryWithPointParam() {
         runQueryWithIntParameter(PCPointAnnotated.class);
     }
 
@@ -161,7 +161,7 @@ public class IntAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCPoint query with a query parameter of type Point.
      */
-    public void testPCPointPropQueryWithPointParam() throws Exception {
+    public void testPCPointPropQueryWithPointParam() {
         runQueryWithIntParameter(PCPointProp.class);
     }
 
@@ -196,7 +196,7 @@ public class IntAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCPointAnnotated query with a query parameter of type String.
      */
-    public void testPCPointPropAnnotatedQueryWithPointParam() throws Exception {
+    public void testPCPointPropAnnotatedQueryWithPointParam() {
         runQueryWithIntParameter(PCPointPropAnnotated.class);
     }
 
@@ -309,7 +309,7 @@ public class IntAttributeConverterTest extends JDO_Test {
      * The parameter value is converted using the AttributeConverter.
      * @throws Exception
      */
-    private <T extends IPCPoint> void runQueryWithIntParameter(Class<T> pcPointClass) throws Exception {
+    private <T extends IPCPoint> void runQueryWithIntParameter(Class<T> pcPointClass) {
         int nrOfDbCalls;
         int nrOfAttrCalls;
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/converter/PointAttributeConverterTest.java b/tck/src/main/java/org/apache/jdo/tck/api/converter/PointAttributeConverterTest.java
index 019ebf37..7c9ea9cd 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/converter/PointAttributeConverterTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/converter/PointAttributeConverterTest.java
@@ -90,7 +90,7 @@ public class PointAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCRectString query with a query parameter of type Point.
      */
-    public void testPCRectStringQueryWithPointParam() throws Exception {
+    public void testPCRectStringQueryWithPointParam() {
         runQueryWithPointParameter(PCRect.class);
     }
 
@@ -125,7 +125,7 @@ public class PointAttributeConverterTest extends JDO_Test {
     /**
      * Test method running a PCRectStringAnnotated query with a query parameter of type String.
      */
-    public void testPCRectStringAnnotatedQueryWithPointParam() throws Exception {
+    public void testPCRectStringAnnotatedQueryWithPointParam() {
         runQueryWithPointParameter(PCRectAnnotated.class);
     }
 
@@ -241,7 +241,7 @@ public class PointAttributeConverterTest extends JDO_Test {
      * The parameter value is converted using the AttributeConverter.
      * @throws Exception
      */
-    private <T extends IPCRect> void runQueryWithPointParameter(Class<T> pcrectClass) throws Exception {
+    private <T extends IPCRect> void runQueryWithPointParameter(Class<T> pcrectClass) {
         int nrOfDbCalls;
         int nrOfAttrCalls;
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/exceptions/ExceptionConstructor.java b/tck/src/main/java/org/apache/jdo/tck/api/exceptions/ExceptionConstructor.java
index a0ecabab..50533c7c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/exceptions/ExceptionConstructor.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/exceptions/ExceptionConstructor.java
@@ -31,21 +31,22 @@ import org.apache.jdo.tck.util.BatchTestRunner;
  *<B>Assertion Description: </B>
  */
 
+@SuppressWarnings("rawtypes")
 public class ExceptionConstructor extends JDO_Test {
 
-    protected static final Class[] classArrayEmpty = 
+    protected static final Class<?>[] classArrayEmpty =
             new Class[] {};
-    protected static final Class[] classArrayString = 
+    protected static final Class<?>[] classArrayString =
             new Class[] {String.class};
-    protected static final Class[] classArrayStringObject = 
+    protected static final Class<?>[] classArrayStringObject =
             new Class[] {String.class, Object.class};
-    protected static final Class[] classArrayStringThrowable =
+    protected static final Class<?>[] classArrayStringThrowable =
             new Class[] {String.class, Throwable.class};
-    protected static final Class[] classArrayStringThrowableArray =
+    protected static final Class<?>[] classArrayStringThrowableArray =
             new Class[] {String.class, Throwable[].class};
-    protected static final Class[] classArrayStringThrowableObject =
+    protected static final Class<?>[] classArrayStringThrowableObject =
             new Class[] {String.class, Throwable.class, Object.class};
-    protected static final Class[] classArrayStringThrowableArrayObject =
+    protected static final Class<?>[] classArrayStringThrowableArrayObject =
             new Class[] {String.class, Throwable[].class, Object.class};
     protected static final String message = "Message";
     protected static final Object object = "Failed Object";
@@ -212,44 +213,44 @@ public class ExceptionConstructor extends JDO_Test {
         constructStringThrowableObject(javax.jdo.JDOUserCallbackException.class);
     }
 
-    protected void constructEmpty(Class clazz) {
+    protected void constructEmpty(Class<?> clazz) {
         construct(clazz, classArrayEmpty, objectArrayEmpty, 
                 null, null, null);
     }
 
-    protected void constructString(Class clazz) {
+    protected void constructString(Class<?> clazz) {
         construct(clazz, classArrayString, objectArrayString, 
                 message, null, null);
     }
 
-    protected void constructStringObject(Class clazz) {
+    protected void constructStringObject(Class<?> clazz) {
         construct(clazz, classArrayStringObject, objectArrayStringObject, 
                 message, object, null);
     }
 
-    protected void constructStringThrowableArray(Class clazz) {
+    protected void constructStringThrowableArray(Class<?> clazz) {
         construct(clazz, classArrayStringThrowableArray, objectArrayStringThrowableArray, 
                 message, null, throwable);
     }
 
-    protected void constructStringThrowable(Class clazz) {
+    protected void constructStringThrowable(Class<?> clazz) {
         construct(clazz, classArrayStringThrowable, objectArrayStringThrowable, 
                 message, null, throwable);
     }
 
-    protected void constructStringThrowableArrayObject(Class clazz) {
+    protected void constructStringThrowableArrayObject(Class<?> clazz) {
         construct(clazz, classArrayStringThrowableArrayObject, objectArrayStringThrowableArrayObject, 
                 message, object, throwable);
     }
 
-    protected void constructStringThrowableObject(Class clazz) {
+    protected void constructStringThrowableObject(Class<?> clazz) {
         construct(clazz, classArrayStringThrowableObject, objectArrayStringThrowableObject, 
                 message, object, throwable);
     }
 
-    protected void construct(Class clazz, Class[] formal, Object[] params,
+    protected void construct(Class<?> clazz, Class<?>[] formal, Object[] params,
             String expectedMessage, Object expectedObject, Throwable expectedCause) {
-        Constructor ctor = null;
+        Constructor<?> ctor = null;
         try {
             ctor = clazz.getConstructor(formal);
         } catch (Throwable ex) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/fetchgroup/FetchGroupTest.java b/tck/src/main/java/org/apache/jdo/tck/api/fetchgroup/FetchGroupTest.java
index d00ae2c1..e16498b3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/fetchgroup/FetchGroupTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/fetchgroup/FetchGroupTest.java
@@ -63,7 +63,7 @@ public class FetchGroupTest extends JDO_Test {
     }
 
     /** All fetch groups in this PMF. */
-    protected Set allPMFFetchGroups;
+    protected Set<FetchGroup> allPMFFetchGroups;
 
     /**
      * Employee.java:
@@ -90,26 +90,26 @@ public class FetchGroupTest extends JDO_Test {
     private Address address;
     private Map phoneNumbers = new HashMap();
      */
-    protected String[] basicMembers = new String[]{"hiredate", "weeklyhours", 
+    protected final String[] basicMembers = new String[]{"hiredate", "weeklyhours",
         "personid", "firstname", "lastname", "middlename", "birthdate"};
     /** In org/apache/jdo/tck/pc/package.jdo, middlename is not in DFG */
-    protected String[] defaultMembers = new String[]{"hiredate", "weeklyhours", 
+    protected final String[] defaultMembers = new String[]{"hiredate", "weeklyhours",
         "personid", "firstname", "lastname","birthdate"};
-    protected String[] allMembers = new String[]{"hiredate", "weeklyhours", 
+    protected final String[] allMembers = new String[]{"hiredate", "weeklyhours",
         "dentalInsurance", "medicalInsurance", "department", "fundingDept",
         "manager", "mentor", "protege", "hradvisor",
         "reviewedProjects", "projects", "team", "hradvisees",
         "personid", "firstname", "lastname", "middlename", "birthdate",
         "address", "phoneNumbers"};
     /** Address address is of type Address and is a relationship */
-    protected String[] relationshipMembers = new String[]{
+    protected final String[] relationshipMembers = new String[]{
         "dentalInsurance", "medicalInsurance", "department", "fundingDept",
         "manager", "mentor", "protege", "hradvisor",
         "reviewedProjects", "projects", "team", "hradvisees", "address"};
     /** Map phoneNumbers is not a relationship but is multivalued */
-    protected String[] multivaluedMembers = new String[]{
+    protected final String[] multivaluedMembers = new String[]{
         "reviewedProjects", "projects", "team", "hradvisees", "phoneNumbers"};
-    protected String[] allButMultivaluedMembers = new String[]
+    protected final String[] allButMultivaluedMembers = new String[]
         {"hiredate", "weeklyhours", 
         "dentalInsurance", "medicalInsurance", "department", "fundingDept",
         "manager", "mentor", "protege", "hradvisor",
@@ -123,9 +123,10 @@ public class FetchGroupTest extends JDO_Test {
         getPM(); // initialize pmf and pm fields
     }
 
+    @SuppressWarnings("unchecked")
     public void testPMFGetFetchGroup() {
         allPMFFetchGroups = pmf.getFetchGroups();
-        Map unscopedFetchGroupMap = new HashMap();    
+        Map<String , FetchGroup> unscopedFetchGroupMap = new HashMap<>();
         unscopedFetchGroupMap.put("Address+default", 
                 pmf.getFetchGroup(Address.class, "default"));
         unscopedFetchGroupMap.put("Company+default", 
@@ -234,11 +235,12 @@ public class FetchGroupTest extends JDO_Test {
         failOnError();
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemoveCategory() {
         FetchGroup fg = pm.getFetchGroup(Employee.class, "testRemoveCategory");
-        Set expectedSet = new HashSet();
+        Set<String> expectedSet = new HashSet<>();
         expectedSet.addAll(Arrays.asList(allButMultivaluedMembers));
-        Set members = fg.getMembers();
+        Set<String> members = fg.getMembers();
         fg.addCategory(FetchGroup.ALL);
         fg.removeCategory(FetchGroup.MULTIVALUED);
         members = fg.getMembers();
@@ -247,12 +249,13 @@ public class FetchGroupTest extends JDO_Test {
                 expectedSet, members);        
     }
 
+    @SuppressWarnings("unchecked")
     public void testAddMember() {
         FetchGroup fg = pm.getFetchGroup(Employee.class, "testAddMember");
         for (int i = 0; i < allMembers.length; ++i) {
             String member = allMembers[i];
             fg.addMember(member);
-            Set members = fg.getMembers();
+            Set<String> members = fg.getMembers();
             assertTrue("FetchGroup should contain " + member + " but does not.\n"
                     + printFetchGroup(fg),
                     members.contains(member));
@@ -262,23 +265,25 @@ public class FetchGroupTest extends JDO_Test {
         }
     }
 
+    @SuppressWarnings("unchecked")
     public void testAddMembers() {
         FetchGroup fg = pm.getFetchGroup(Employee.class, "testAddMembers");
         fg.addMembers(multivaluedMembers);
         fg.addMembers(allButMultivaluedMembers);
-        Set members = fg.getMembers();
-        Set expectedSet = new HashSet();
+        Set<String> members = fg.getMembers();
+        Set<String> expectedSet = new HashSet<>();
         expectedSet.addAll(Arrays.asList(allMembers));
         assertEquals("FetchGroup should contain all members.\n",
                 expectedSet, members);
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemoveMembers() {
         FetchGroup fg = pm.getFetchGroup(Employee.class, "testRemoveMembers");
         fg.addMembers(allMembers);
         fg.removeMembers(relationshipMembers);
-        Set members = fg.getMembers();
-        Set expectedSet = new HashSet();
+        Set<String> members = fg.getMembers();
+        Set<String> expectedSet = new HashSet<>();
         expectedSet.addAll(Arrays.asList(basicMembers));
         expectedSet.add("phoneNumbers");
         assertEquals("FetchGroup should contain basic members " +
@@ -286,19 +291,20 @@ public class FetchGroupTest extends JDO_Test {
                 expectedSet, members);
         fg.removeMembers(basicMembers);
         members = fg.getMembers();
-        expectedSet = new HashSet();
+        expectedSet = new HashSet<>();
         expectedSet.add("phoneNumbers");
         assertEquals("FetchGroup should contain address plus phoneNumbers.\n",
                 expectedSet, members);
     }
 
+    @SuppressWarnings("unchecked")
     public void testRemoveMember() {
         FetchGroup fg = pm.getFetchGroup(Employee.class, "testRemoveMember");
         fg.addCategory(FetchGroup.ALL);
         for (int i = allMembers.length - 1; i >= 0; --i) {
             String member = allMembers[i];
             fg.removeMember(member);
-            Set members = fg.getMembers();
+            Set<String> members = fg.getMembers();
             assertFalse("FetchGroup should not contain " + member + " but does.\n"
                     + printFetchGroup(fg),
                     members.contains(member));
@@ -521,11 +527,12 @@ public class FetchGroupTest extends JDO_Test {
         }
     }
 
-    private void checkAddCategory(Class cls, String category, String[] expected) {
+    @SuppressWarnings("unchecked")
+    private void checkAddCategory(Class<?> cls, String category, String[] expected) {
         FetchGroup fg = pm.getFetchGroup(cls, "test" + count() + category);
-        Set expectedSet = new HashSet();
+        Set<String> expectedSet = new HashSet<>();
         expectedSet.addAll(Arrays.asList(expected));
-        Set members = fg.getMembers();
+        Set<String> members = fg.getMembers();
         assertTrue("New FetchGroup should have no members; "
                 + printFetchGroup(fg),
                 members.isEmpty());
@@ -538,6 +545,7 @@ public class FetchGroupTest extends JDO_Test {
         }
     }
 
+    @SuppressWarnings("unchecked")
     private String printFetchGroup(FetchGroup fg) {
         StringBuffer sb = new StringBuffer("FetchGroup (");
         sb.append(fg.getType().isInterface()?"interface: ":"class: ");
@@ -545,16 +553,16 @@ public class FetchGroupTest extends JDO_Test {
         sb.append("; name: ");
         sb.append(fg.getName());
         sb.append(fg.isUnmodifiable()?"; unmodifiable":"; modifiable");
-        Set members = fg.getMembers();
-        Iterator it = members.iterator();
+        Set<String> members = fg.getMembers();
+        Iterator<String> it = members.iterator();
         if (it.hasNext()) {
             sb.append("; members: ");
-            String member = (String)it.next();
+            String member = it.next();
             formatMember(sb, fg, member);
         }
         while (it.hasNext()) {
             sb.append(", ");
-            String member = (String)it.next();
+            String member = it.next();
             formatMember(sb, fg, member);
         }
         sb.append(")");
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AbstractInstanceLifecycleListener.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AbstractInstanceLifecycleListener.java
index 148e6cb6..fc91238c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AbstractInstanceLifecycleListener.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AbstractInstanceLifecycleListener.java
@@ -23,7 +23,6 @@ import java.util.List;
 import javax.jdo.JDOHelper;
 
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
 import javax.jdo.listener.AttachLifecycleListener;
 import javax.jdo.listener.ClearLifecycleListener;
 import javax.jdo.listener.CreateLifecycleListener;
@@ -35,11 +34,6 @@ import javax.jdo.listener.StoreLifecycleListener;
 
 import org.apache.jdo.tck.JDO_Test;
 
-import org.apache.jdo.tck.pc.mylib.PCPoint;
-
-import org.apache.jdo.tck.util.BatchTestRunner;
-
-
 /**
  * <B>Title:</B> Abstract test AbstractInstanceLifecycleListener
  * <BR>
@@ -177,7 +171,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
      * are removed from the datastore at the end of the test.
      * @return classes
      */
-    protected abstract Class[] getPersistentClasses();
+    protected abstract Class<?>[] getPersistentClasses();
 
     /** 
      * Register a new InstanceLifecycleListenerImpl with the 
@@ -201,6 +195,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
      * Set up for lifecycle tests:
      * Register the LifecycleListener; add PCPoint to tearDownClasses.
      */
+    @Override
     protected void localSetUp() {
         addListener();
         addTearDownClass(getPersistentClasses());
@@ -210,6 +205,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
      * Clean up after lifecycle tests:
      * Unregister the LifecycleListener.
      */
+    @Override
     protected void localTearDown() {
         removeListener(); // no callbacks for teardown
         super.localTearDown();
@@ -246,7 +242,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
          * are used during collection of events and both names and values
          * are used for reporting results.
          */
-        private static List locations = new ArrayList();
+        private final static List<String> locations = new ArrayList<>();
 
         /** These are indexes into the sequence array. Each index
          * represents the position in the sequence array for the
@@ -327,7 +323,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
             POST_STORE_LISTENER = index++;
         }
 
-        private int[] actual = new int[locations.size()];
+        private final int[] actual = new int[locations.size()];
 
         /** Track the current sequence of callbacks.
          */
@@ -346,8 +342,8 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
         private static int[] newExpected(int[] sequence) {
             int order = 0;
             int[] result = new int[locations.size()];
-            for (int i = 0; i < sequence.length; ++i) {
-                result[sequence[i]] = ++order;
+            for (int j : sequence) {
+                result[j] = ++order;
             }
             return result;
         }
@@ -355,7 +351,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
         /** 
          * The error message buffer to report exceptions.
          */
-        protected StringBuffer messages = new StringBuffer();
+        protected final StringBuffer messages = new StringBuffer();
         
         protected void checkEventType(String where, int expected, int actual) {
             if (expected != actual) {
@@ -467,7 +463,7 @@ public abstract class AbstractInstanceLifecycleListener extends JDO_Test {
                 }
             }
             if (messages.length() > 0) {
-                fail(where + "\n" + messages.toString());
+                fail(where + "\n" + messages);
             }
         }
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessOtherInstancesInPrestore.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessOtherInstancesInPrestore.java
index 08a283c6..6e0da86f 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessOtherInstancesInPrestore.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessOtherInstancesInPrestore.java
@@ -22,7 +22,6 @@ import java.util.Date;
 
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.instancecallbacks.InstanceCallbackClass;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -69,6 +68,7 @@ public class AccessOtherInstancesInPrestore extends TestParts {
     /**
      * @see org.apache.jdo.tck.JDO_Test#localSetUp()
      */
+    @Override
     protected void localSetUp() {
         addTearDownClass(InstanceCallbackClass.class);
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessingFieldsInPredelete.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessingFieldsInPredelete.java
index 31260665..af8ea210 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessingFieldsInPredelete.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/AccessingFieldsInPredelete.java
@@ -24,7 +24,6 @@ import javax.jdo.JDODataStoreException;
 import javax.jdo.JDOUserException;
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.instancecallbacks.InstanceCallbackClass;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -115,12 +114,10 @@ public class AccessingFieldsInPredelete extends TestParts {
         try {
             primaryObj = (InstanceCallbackClass)pm.getObjectById(primaryObjId, true);
             fail(ASSERTION_FAILED, "primaryObj deleted but getObjectById() on its Id succeeded.");
-        } catch (JDOUserException e) {
-            // expected one of these exceptions
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // expected one of these exceptions
         }
-        
+
         // check that jdoPreDelete() provided proper access to the attributes in primaryObj
         checkFieldValues(ASSERTION_FAILED, "jdoPreDelete attribute access:  ", 1, "primaryObj", createTime, 1.0, (short)3, '1');
         checkInstances(ASSERTION_FAILED, "jdoPreDelete instance access:  ", 1, "secondaryObj", 2, 7);
@@ -135,12 +132,10 @@ public class AccessingFieldsInPredelete extends TestParts {
         try {
             secondaryObj = (InstanceCallbackClass)pm.getObjectById(secondaryObjId, true);
             fail(ASSERTION_FAILED, "secondaryObj should have been deleted but getObjectById() on its Id succeeded.");
-        } catch (JDOUserException e) {
-            // expected one of these exceptions
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // expected one of these exceptions
         }
-        
+
         // check that first added member of Set had jdoPreDelete() called on it and provided proper access to its attributes.
         checkFieldValues(ASSERTION_FAILED, "jdoPreDelete attribute access:  ", 3, "childA", createTime, 3.0, (short)-2, '3');
         checkInstances(ASSERTION_FAILED, "jdoPreDelete instance access:  ", 3, null, 0, 0);
@@ -150,12 +145,10 @@ public class AccessingFieldsInPredelete extends TestParts {
         try {
             childA = (InstanceCallbackClass)pm.getObjectById(childAId, true);
             fail(ASSERTION_FAILED, "First added member of Set primaryObj.children should have been deleted but getObjectById() on its Id succeeded.");
-        } catch (JDOUserException e) {
-            // expected one of these exceptions
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // expected one of these exceptions
         }
-        
+
         // check that the second added member of Set did not have jdoPreDelete() called on it and it was not deleted.
         if(InstanceCallbackClass.processedIndex[4] == true) {
             fail(ASSERTION_FAILED, "jdoPreDelete() called on childB--it was not deleted.");
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
index 0aa115fd..57dc9dd1 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPostload.java
@@ -98,16 +98,12 @@ public class CallingJdoPostload extends JDO_Test {
         InstanceCallbackNonPersistFdsClass.applicationStep = InstanceCallbackNonPersistFdsClass.beforeGetObjectById;
         try {
             obj1 = (InstanceCallbackNonPersistFdsClass)pm.getObjectById(objPtr1, true);  // jdoPreLoad() called
-        } catch (JDOUserException e) {
-            // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "CallingJdoPostload:  Could not locate persistent object obj1 created in previous transaction " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "CallingJdoPostload:  Could not locate persistent object obj1 created in previous transaction " + e);
             return;
         }
-        
+
         int objectState = currentState(obj1);        
         // expect state to be hollow or persistent-clean
         if(objectState != HOLLOW && objectState != PERSISTENT_CLEAN) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
index 5bcffe7c..3a6f8314 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPreclear.java
@@ -26,7 +26,6 @@ import javax.jdo.JDODataStoreException;
 import javax.jdo.JDOUserException;
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.instancecallbacks.InstanceCallbackClass;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPrestore.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPrestore.java
index c2dc2609..88773911 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPrestore.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/CallingJdoPrestore.java
@@ -126,11 +126,7 @@ public class CallingJdoPrestore extends JDO_Test {
             obj1.setNonManaged(-1, (char)62);
             expectedIntValue1 = obj1.calcIntValue();
             expectedFloatValue1 = obj1.calcFloatValue();
-        } catch (JDOUserException e) {
-            // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj1 created in previous transaction, got " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj1 created in previous transaction, got " + e);
             return;
@@ -148,11 +144,7 @@ public class CallingJdoPrestore extends JDO_Test {
             
             // change obj2 making it persistent dirty (leave obj1 persistent clean).
             obj2.incrementIntValue();
-        } catch (JDOUserException e) {
-            // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj2 created in previous transaction, got " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj2 created in previous transaction, got " + e);
             return;
@@ -167,25 +159,17 @@ public class CallingJdoPrestore extends JDO_Test {
             obj1 = (InstanceCallbackNonPersistFdsClass)pm.getObjectById(objPtr1, true);
             checkValues("Object1, did not expect jdoPreStore to be called:  ", origIntValue1, origIntValue1, obj1.intValue);
             checkValues("Object1, did not expect jdoPreStore to be called:  ", origFloatValue1, origFloatValue1, obj1.floatValue);
-        } catch (JDOUserException e) {
-            // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj1 created in previous transaction, got " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj1 created in previous transaction, got " + e);
             return;
         }
-        
+
         try {
             obj2 = (InstanceCallbackNonPersistFdsClass)pm.getObjectById(objPtr2, true);
             checkValues("Object2, expected jdoPreStore() to be called:  ", origIntValue2, expectedIntValue2, obj2.intValue);
             checkValues("Object2, expected jdoPreStore() to be called:  ", origFloatValue2, expectedFloatValue2, obj2.floatValue);
-        } catch (JDOUserException e) {
-            // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj2 created in previous transaction, got " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "CallingJdoPrestore: Failed to find object obj2 created in previous transaction, got " + e);
             return;
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerAttach.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerAttach.java
index bb2e2b43..b5f080b6 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerAttach.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerAttach.java
@@ -21,19 +21,10 @@ import java.util.Date;
 
 import javax.jdo.listener.AttachCallback;
 
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
-
-import org.apache.jdo.tck.pc.mylib.PCPoint;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
-
 /**
  * <B>Title:</B> Test TestInstanceLifecycleListenerAttach
  * <BR>
@@ -58,7 +49,7 @@ public class InstanceLifecycleListenerAttach
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerAttachImpl();
 
     /** Return the listener.
@@ -70,11 +61,12 @@ public class InstanceLifecycleListenerAttach
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private static final Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -100,20 +92,20 @@ public class InstanceLifecycleListenerAttach
         getPM();
         pm.currentTransaction().begin();
         pm.makePersistent(pc);
-        PC detached = (PC)pm.detachCopy(pc);
+        PC detached = pm.detachCopy(pc);
         detached.listener = listener;
         pm.currentTransaction().commit();
         pm.currentTransaction().begin();
         listener.setExpectedSource(detached);
         // makePersistent should cause the attach listeners to be called
-        PC attached = (PC)pm.makePersistent(detached);
+        PC attached = pm.makePersistent(detached);
         pm.currentTransaction().commit();
 
         // now check the callback and listener were called
         listener.verifyCallbacks(ASSERTION13_FAILED, new int[] {
-                listener.PRE_ATTACH_LISTENER,
-                listener.PRE_ATTACH_CALLBACK,
-                listener.POST_ATTACH_LISTENER});
+                InstanceLifecycleListenerImpl.PRE_ATTACH_LISTENER,
+                InstanceLifecycleListenerImpl.PRE_ATTACH_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_ATTACH_LISTENER});
     }
     
     /** 
@@ -123,6 +115,7 @@ public class InstanceLifecycleListenerAttach
     private static class InstanceLifecycleListenerAttachImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void preAttach(InstanceLifecycleEvent event) {
             notifyEvent(PRE_ATTACH_LISTENER);
             checkEventType(ASSERTION13_FAILED,
@@ -130,6 +123,7 @@ public class InstanceLifecycleListenerAttach
             checkEventSource(ASSERTION13_FAILED, event.getSource());
         }
 
+        @Override
         public void postAttach(InstanceLifecycleEvent event) {
             notifyEvent(POST_ATTACH_LISTENER);
             checkEventType(ASSERTION14_FAILED,
@@ -171,7 +165,7 @@ public class InstanceLifecycleListenerAttach
 
         public void jdoPreAttach() {
             if (listener != null) {
-                listener.notifyEvent(listener.PRE_ATTACH_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.PRE_ATTACH_CALLBACK);
             }
         }
         public void jdoPostAttach(Object obj) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerClear.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerClear.java
index 70468e1c..3b090010 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerClear.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerClear.java
@@ -21,15 +21,7 @@ import java.util.Date;
 
 import javax.jdo.listener.ClearCallback;
 
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
-
-import org.apache.jdo.tck.pc.mylib.PCPoint;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -60,7 +52,7 @@ public class InstanceLifecycleListenerClear
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerClearImpl();
 
     /** Return the listener.
@@ -72,11 +64,12 @@ public class InstanceLifecycleListenerClear
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -110,9 +103,9 @@ public class InstanceLifecycleListenerClear
 
         // now check the callback and listeners were called
         listener.verifyCallbacks(ASSERTION5_FAILED, new int[] {
-                listener.PRE_CLEAR_LISTENER,
-                listener.PRE_CLEAR_CALLBACK,
-                listener.POST_CLEAR_LISTENER});
+                InstanceLifecycleListenerImpl.PRE_CLEAR_LISTENER,
+                InstanceLifecycleListenerImpl.PRE_CLEAR_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_CLEAR_LISTENER});
     }
     
     /** 
@@ -122,6 +115,7 @@ public class InstanceLifecycleListenerClear
     private static class InstanceLifecycleListenerClearImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void preClear(InstanceLifecycleEvent event) {
             notifyEvent(PRE_CLEAR_LISTENER);
             checkEventType(ASSERTION5_FAILED, 
@@ -131,6 +125,7 @@ public class InstanceLifecycleListenerClear
                     expectedSource);
         }
 
+        @Override
         public void postClear(InstanceLifecycleEvent event) {
             notifyEvent(POST_CLEAR_LISTENER);
             checkEventType(ASSERTION6_FAILED, 
@@ -157,7 +152,7 @@ public class InstanceLifecycleListenerClear
 
         public void jdoPreClear() {
             if (listener != null) {
-                listener.notifyEvent(listener.PRE_CLEAR_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.PRE_CLEAR_CALLBACK);
             }
         }
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerCreate.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerCreate.java
index 8893aab0..559b89b9 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerCreate.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerCreate.java
@@ -17,25 +17,12 @@
  
 package org.apache.jdo.tck.api.instancecallbacks;
 
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.AttachLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-import javax.jdo.listener.CreateLifecycleListener;
-import javax.jdo.listener.DeleteLifecycleListener;
-import javax.jdo.listener.DetachLifecycleListener;
-import javax.jdo.listener.LoadLifecycleListener;
-import javax.jdo.listener.StoreLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.pc.mylib.PCPoint;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
-
 /**
  * <B>Title:</B> Test TestInstanceLifecycleListener
  * <BR>
@@ -56,7 +43,7 @@ public class InstanceLifecycleListenerCreate
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerCreateImpl();
 
     /** Return the listener.
@@ -68,11 +55,12 @@ public class InstanceLifecycleListenerCreate
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PCPoint.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PCPoint.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -100,7 +88,7 @@ public class InstanceLifecycleListenerCreate
 
         // verify that the listener was called
         listener.verifyCallbacks(ASSERTION1_FAILED, new int[] {
-                listener.POST_CREATE_LISTENER});
+                InstanceLifecycleListenerImpl.POST_CREATE_LISTENER});
     }
     
     /** 
@@ -110,6 +98,7 @@ public class InstanceLifecycleListenerCreate
     private static class InstanceLifecycleListenerCreateImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void postCreate(InstanceLifecycleEvent event) {
             notifyEvent(POST_CREATE_LISTENER);
             checkEventType(ASSERTION1_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDelete.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDelete.java
index cdd384af..a1662b93 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDelete.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDelete.java
@@ -20,19 +20,11 @@ package org.apache.jdo.tck.api.instancecallbacks;
 import java.util.Date;
 
 import javax.jdo.listener.DeleteCallback;
-import javax.jdo.JDOHelper;
 
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.DeleteLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
-
-import org.apache.jdo.tck.pc.mylib.PCPoint;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
-
 /**
  * <B>Title:</B> Test TestInstanceLifecycleListenerDelete
  * <BR>
@@ -60,7 +52,7 @@ public class InstanceLifecycleListenerDelete
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerDeleteImpl();
 
     /** Return the listener.
@@ -72,11 +64,12 @@ public class InstanceLifecycleListenerDelete
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -109,9 +102,9 @@ public class InstanceLifecycleListenerDelete
 
         // now check the callback and listeners were called
         listener.verifyCallbacks(ASSERTION7_FAILED, (new int[] {
-                listener.PRE_DELETE_LISTENER,
-                listener.PRE_DELETE_CALLBACK,
-                listener.POST_DELETE_LISTENER}));
+                InstanceLifecycleListenerImpl.PRE_DELETE_LISTENER,
+                InstanceLifecycleListenerImpl.PRE_DELETE_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_DELETE_LISTENER}));
     }
     
     /** 
@@ -121,6 +114,7 @@ public class InstanceLifecycleListenerDelete
     private static class InstanceLifecycleListenerDeleteImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void preDelete(InstanceLifecycleEvent event) {
             notifyEvent(PRE_DELETE_LISTENER);
             checkEventType(ASSERTION7_FAILED,
@@ -132,6 +126,7 @@ public class InstanceLifecycleListenerDelete
                     expectedSource);
         }
 
+        @Override
         public void postDelete(InstanceLifecycleEvent event) {
             notifyEvent(POST_DELETE_LISTENER);
             checkEventType(ASSERTION8_FAILED,
@@ -159,7 +154,7 @@ public class InstanceLifecycleListenerDelete
 
         public void jdoPreDelete() {
             if (listener != null) {
-                listener.notifyEvent(listener.PRE_DELETE_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.PRE_DELETE_CALLBACK);
             }
         }
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDetach.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDetach.java
index 57704626..86555f3f 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDetach.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDetach.java
@@ -21,17 +21,10 @@ import java.util.Date;
 
 import javax.jdo.listener.DetachCallback;
 
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
-
 /**
  * <B>Title:</B> Test InstanceLifecycleListenerDetach
  * <BR>
@@ -57,7 +50,7 @@ public class InstanceLifecycleListenerDetach
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerDetachImpl();
 
     /** Return the listener.
@@ -69,11 +62,12 @@ public class InstanceLifecycleListenerDetach
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -102,14 +96,14 @@ public class InstanceLifecycleListenerDetach
         pm.currentTransaction().begin();
         pm.makePersistent(pc);
         // detachCopy should cause the detach listeners to be called
-        PC detached = (PC)pm.detachCopy(pc);
+        PC detached = pm.detachCopy(pc);
         pm.currentTransaction().commit();
 
         // now check the callback and listener were called
         listener.verifyCallbacks(ASSERTION11_FAILED, new int[] {
-                listener.PRE_DETACH_LISTENER,
-                listener.PRE_DETACH_CALLBACK,
-                listener.POST_DETACH_LISTENER});
+                InstanceLifecycleListenerImpl.PRE_DETACH_LISTENER,
+                InstanceLifecycleListenerImpl.PRE_DETACH_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_DETACH_LISTENER});
     }
     
     /** 
@@ -119,6 +113,7 @@ public class InstanceLifecycleListenerDetach
     private static class InstanceLifecycleListenerDetachImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void preDetach(InstanceLifecycleEvent event) {
             notifyEvent(PRE_DETACH_LISTENER);
             checkEventType(ASSERTION11_FAILED,
@@ -128,6 +123,7 @@ public class InstanceLifecycleListenerDetach
                     event.getSource());
         }
 
+        @Override
         public void postDetach(InstanceLifecycleEvent event) {
             notifyEvent(POST_DETACH_LISTENER);
             checkEventType(ASSERTION12_FAILED,
@@ -170,7 +166,7 @@ public class InstanceLifecycleListenerDetach
  
         public void jdoPreDetach() {
             if (listener != null) {
-                listener.notifyEvent(listener.PRE_DETACH_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.PRE_DETACH_CALLBACK);
             }
         }
         public void jdoPostDetach(Object obj) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDirty.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDirty.java
index b22fc0f3..4da6ae78 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDirty.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerDirty.java
@@ -17,15 +17,7 @@
  
 package org.apache.jdo.tck.api.instancecallbacks;
 
-import java.util.Date;
-
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.pc.mylib.PCPoint;
 
@@ -59,7 +51,7 @@ public class InstanceLifecycleListenerDirty
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerDirtyImpl();
 
     /** Return the listener.
@@ -71,11 +63,12 @@ public class InstanceLifecycleListenerDirty
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PCPoint.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PCPoint.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -110,8 +103,8 @@ public class InstanceLifecycleListenerDirty
 
         // now check the callback and listener were called
         listener.verifyCallbacks(ASSERTION10_FAILED, new int[] {
-                listener.PRE_DIRTY_LISTENER,
-                listener.POST_DIRTY_LISTENER});
+                InstanceLifecycleListenerImpl.PRE_DIRTY_LISTENER,
+                InstanceLifecycleListenerImpl.POST_DIRTY_LISTENER});
     }
     
     /** 
@@ -121,6 +114,7 @@ public class InstanceLifecycleListenerDirty
     private static class InstanceLifecycleListenerDirtyImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void preDirty(InstanceLifecycleEvent event) {
             notifyEvent(PRE_DIRTY_LISTENER);
             checkEventType(ASSERTION9_FAILED,
@@ -132,6 +126,7 @@ public class InstanceLifecycleListenerDirty
                     expectedSource);
         }
 
+        @Override
         public void postDirty(InstanceLifecycleEvent event) {
             notifyEvent(POST_DIRTY_LISTENER);
             checkEventType(ASSERTION10_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerLoad.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerLoad.java
index 4692dc5d..885790b5 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerLoad.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerLoad.java
@@ -21,13 +21,7 @@ import java.util.Date;
 
 import javax.jdo.listener.LoadCallback;
 
-import javax.jdo.JDOHelper;
-
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -52,7 +46,7 @@ public class InstanceLifecycleListenerLoad
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerLoadImpl();
 
     /** Return the listener.
@@ -64,11 +58,12 @@ public class InstanceLifecycleListenerLoad
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -104,8 +99,8 @@ public class InstanceLifecycleListenerLoad
 
         // now check the callback and listener were called
         listener.verifyCallbacks(ASSERTION2_FAILED, new int[] {
-                listener.POST_LOAD_CALLBACK,
-                listener.POST_LOAD_LISTENER});
+                InstanceLifecycleListenerImpl.POST_LOAD_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_LOAD_LISTENER});
     }
     
     /** 
@@ -115,6 +110,7 @@ public class InstanceLifecycleListenerLoad
     private static class InstanceLifecycleListenerLoadImpl 
             extends InstanceLifecycleListenerImpl {
 
+        @Override
         public void postLoad(InstanceLifecycleEvent event) {
             notifyEvent(POST_LOAD_LISTENER);
             checkEventType(ASSERTION2_FAILED,
@@ -147,7 +143,7 @@ public class InstanceLifecycleListenerLoad
 
         public void jdoPostLoad() {
             if (listener != null) {
-                listener.notifyEvent(listener.POST_LOAD_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.POST_LOAD_CALLBACK);
             }
         }
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerStore.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerStore.java
index d1592464..32b4bd11 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerStore.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/InstanceLifecycleListenerStore.java
@@ -21,13 +21,8 @@ import java.util.Date;
 
 import javax.jdo.listener.StoreCallback;
 
-import javax.jdo.JDOHelper;
 
 import javax.jdo.listener.InstanceLifecycleEvent;
-import javax.jdo.listener.InstanceLifecycleListener;
-import javax.jdo.listener.ClearLifecycleListener;
-
-import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -59,7 +54,7 @@ public class InstanceLifecycleListenerStore
     /**
      * The InstanceLifecycleListener used for this test
      */
-    InstanceLifecycleListenerImpl listener = 
+    private final InstanceLifecycleListenerImpl listener =
             new InstanceLifecycleListenerStoreImpl();
 
     /** Return the listener.
@@ -71,11 +66,12 @@ public class InstanceLifecycleListenerStore
     /**
      * The persistent classes used for this test.
      */
-    private static Class[] persistentClasses = new Class[] {PC.class};
+    @SuppressWarnings("rawtypes")
+    private final static Class<?>[] persistentClasses = new Class[] {PC.class};
 
     /** Return the persistent classes.
      */
-    protected Class[] getPersistentClasses() {
+    protected Class<?>[] getPersistentClasses() {
         return persistentClasses;
     }
 
@@ -106,9 +102,9 @@ public class InstanceLifecycleListenerStore
 
         // now check the callback and listener were called
         listener.verifyCallbacks(ASSERTION2_FAILED, new int[] {
-                listener.PRE_STORE_LISTENER,
-                listener.PRE_STORE_CALLBACK,
-                listener.POST_STORE_LISTENER});
+                InstanceLifecycleListenerImpl.PRE_STORE_LISTENER,
+                InstanceLifecycleListenerImpl.PRE_STORE_CALLBACK,
+                InstanceLifecycleListenerImpl.POST_STORE_LISTENER});
     }
     
     /** 
@@ -153,7 +149,7 @@ public class InstanceLifecycleListenerStore
 
         public void jdoPreStore() {
             if (listener != null) {
-                listener.notifyEvent(listener.PRE_STORE_CALLBACK);
+                listener.notifyEvent(InstanceLifecycleListenerImpl.PRE_STORE_CALLBACK);
             }
         }
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
index 7aec74af..2da1bd6f 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/ModificationOfNontransactionalNonpersistentFields.java
@@ -17,8 +17,6 @@
 
 package org.apache.jdo.tck.api.instancecallbacks;
 
-import java.util.Iterator;
-
 import javax.jdo.JDODataStoreException;
 import javax.jdo.JDOUserException;
 import javax.jdo.Transaction;
@@ -92,16 +90,12 @@ public class ModificationOfNontransactionalNonpersistentFields extends JDO_Test
         t.begin();
         try {
             obj1 = (InstanceCallbackNonPersistFdsClass)pm.getObjectById(objPtr1, true);  // jdoPostLoad() called
-        } catch (JDOUserException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             // could not locate persistent object created in previous transaction
             fail(ASSERTION_FAILED, "ModificationOfNontransactionalNonpersistentFields:  Could not locate persistent object obj1 created in previous transaction, got " + e);
             return;
-        } catch (JDODataStoreException e) {
-           // could not locate persistent object created in previous transaction
-            fail(ASSERTION_FAILED, "ModificationOfNontransactionalNonpersistentFields:  Could not locate persistent object obj1 created in previous transaction, got " + e);
-            return;
         }
-        
+
         // check fields set in jdoPostLoad()
         if(obj1.i != -10) {
             fail(ASSERTION_FAILED, "jdoPostLoad:  Value incorrect, obj1.i != -10; it is " + obj1.i);
@@ -143,8 +137,8 @@ public class ModificationOfNontransactionalNonpersistentFields extends JDO_Test
                 logger.debug("obj1.children contains " + obj1.children.size() + " members");
                 if(obj1.children.size() != 0) {
                     logger.debug("Those members are:");
-                    for(Iterator i = obj1.children.iterator(); i.hasNext();) {
-                        logger.debug((String)i.next());
+                    for (String s : obj1.children) {
+                        logger.debug(s);
                     }
                 }
             }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
index 9d095d80..359e42d9 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/instancecallbacks/NoAccessToFieldsAfterPredelete.java
@@ -18,7 +18,7 @@
 package org.apache.jdo.tck.api.instancecallbacks;
 
 import java.util.Date;
-import java.util.HashSet;
+import java.util.Set;
 
 import javax.jdo.JDODataStoreException;
 import javax.jdo.JDOUserException;
@@ -89,14 +89,11 @@ public class NoAccessToFieldsAfterPredelete extends JDO_Test {
         // relocte object.
         try {
             a = (InstanceCallbackClass)pm.getObjectById(aId, true);
-        } catch (JDOUserException e) {
-            fail(ASSERTION_FAILED, "NoAccessToFieldsAfterPredelete:  Could not locate persistent object created in previous transaction, got " + e);
-            return;
-        } catch (JDODataStoreException e) {
+        } catch (JDOUserException | JDODataStoreException e) {
             fail(ASSERTION_FAILED, "NoAccessToFieldsAfterPredelete:  Could not locate persistent object created in previous transaction, got " + e);
             return;
         }
-        
+
         pm.deletePersistent(a);
         performAccessFieldTests("Object in state persistent-deleted:  ", a);
         
@@ -153,7 +150,7 @@ public class NoAccessToFieldsAfterPredelete extends JDO_Test {
         }
         
         try {
-            HashSet x6 = o.children;
+            Set<InstanceCallbackClass> x6 = o.children;
             // http://issues.apache.org/jira/browse/JDO-413
             // fail(ASSERTION_FAILED, title + "Accessed persistent HashSet field Children--should have gotten JDOUserException");
         } catch (JDOUserException e) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java b/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java
index f971fd68..b9b4ae9c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java
@@ -160,7 +160,7 @@ public class GetObjectIds extends JDO_Test {
 
     /** */
     public void testGetObjectIdsArray() {
-        StringBuffer messages = new StringBuffer();
+        StringBuilder messages = new StringBuilder();
         Object[] expectedArray = oids;
         Object[] actualArray = JDOHelper.getObjectIds(objs);
         for (int i = 0; i < objs.length; ++i) {
@@ -176,19 +176,18 @@ public class GetObjectIds extends JDO_Test {
             }
         }
         if (messages.length() != 0) {
-            fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " +
-                messages.toString());
+            fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " + messages);
         }
     }
 
     /** */
     public void testGetObjectIdsCollection() {
-        StringBuffer messages = new StringBuffer();
-        List paramList = Arrays.asList(objs);
-        List expectedList = Arrays.asList(oids);
+        StringBuilder messages = new StringBuilder();
+        List<Object> paramList = Arrays.asList(objs);
+        List<Object> expectedList = Arrays.asList(oids);
         Collection<Object> actualCollection = JDOHelper.getObjectIds(paramList);
-        Iterator expectedIterator = expectedList.iterator();
-        Iterator actualIterator = actualCollection.iterator();
+        Iterator<Object> expectedIterator = expectedList.iterator();
+        Iterator<Object> actualIterator = actualCollection.iterator();
         for (int i = 0; i < objs.length; ++i) {
             Object expected = expectedIterator.next();
             Object actual = actualIterator.next();
@@ -202,15 +201,14 @@ public class GetObjectIds extends JDO_Test {
             }
         }
         if (messages.length() != 0) {
-            fail(ASSERTION_FAILED + "getObjectIds(Collection pcs) " +
-                messages.toString());
+            fail(ASSERTION_FAILED + "getObjectIds(Collection pcs) " + messages);
         }
     }
 
     /** */
     public void testTypedGetObjectIdsArray() {
         if (!runsWithApplicationIdentity()) return;
-        StringBuffer messages = new StringBuffer();
+        StringBuilder messages = new StringBuilder();
         Object[] expectedArray = singleFieldIdentityOids;
         Object[] actualArray = JDOHelper.getObjectIds(singleFieldIdentityObjs);
         for (int i = 0; i < singleFieldIdentityObjs.length; ++i) {
@@ -226,15 +224,14 @@ public class GetObjectIds extends JDO_Test {
             }
         }
         if (messages.length() != 0) {
-            fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " +
-                messages.toString());
+            fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " + messages);
         }
     }
 
     /** */
     public void testTypedGetObjectIdsCollection() {
         if (!runsWithApplicationIdentity()) return;
-        StringBuffer messages = new StringBuffer();
+        StringBuilder messages = new StringBuilder();
         List<PCPointSingleFieldInteger> paramList = Arrays.asList(singleFieldIdentityObjs);
         List<?> expectedList = Arrays.asList(singleFieldIdentityOids);
         Collection<?> actualCollection = JDOHelper.getObjectIds(paramList);
@@ -253,8 +250,7 @@ public class GetObjectIds extends JDO_Test {
             }
         }
         if (messages.length() != 0) {
-            fail(ASSERTION_FAILED + "getObjectIds(Collection<SingleFieldIdentyty> pcs) " +
-                messages.toString());
+            fail(ASSERTION_FAILED + "getObjectIds(Collection<SingleFieldIdentyty> pcs) " + messages);
         }
     }
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/IsDetached.java b/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/IsDetached.java
index 840fdcd7..95fa810c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/IsDetached.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/jdohelper/IsDetached.java
@@ -77,7 +77,7 @@ public class IsDetached extends DetachTest {
         txn.begin();
         {
             c = (Cart) pm.getObjectById(oid);
-            detached = (Cart) pm.detachCopy(c);
+            detached = pm.detachCopy(c);
             assertTrue(JDOHelper.isDetached(detached));
         }
         txn.commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/AbstractPersistenceCapableTest.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/AbstractPersistenceCapableTest.java
index f83c8845..32a93db8 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/AbstractPersistenceCapableTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/AbstractPersistenceCapableTest.java
@@ -45,7 +45,8 @@ abstract class AbstractPersistenceCapableTest extends JDO_Test {
         pm.currentTransaction().commit();
         return result;
     }
-    
+
+    @Override
     protected boolean isTestToBePerformed() {
         String testName = getClass().getName();
         if (!isBinaryCompatibilitySupported()) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/NewObjectIdInstance.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/NewObjectIdInstance.java
index 0334d852..4f128ab8 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/NewObjectIdInstance.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencecapable/NewObjectIdInstance.java
@@ -213,7 +213,7 @@ public class NewObjectIdInstance extends AbstractPersistenceCapableTest {
         } catch (JDONullIdentityException e) {
             // expected exception
             if (debug)
-                logger.debug("caught expected exception " + e.toString());
+                logger.debug("caught expected exception " + e);
         } 
     }
     
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
index fd871348..feea1c3a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ConcurrentPersistenceManagersSameClasses.java
@@ -18,8 +18,8 @@
 
 package org.apache.jdo.tck.api.persistencemanager;
 
-import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Properties;
 
 import javax.jdo.JDOHelper;
@@ -147,12 +147,13 @@ public class ConcurrentPersistenceManagersSameClasses extends PersistenceManager
 
     /** */
     private PCPoint findPoint (PersistenceManager pm, int x, int y) {
-        Query q = pm.newQuery (PCPoint.class);
+        Query<PCPoint> q = pm.newQuery (PCPoint.class);
         q.declareParameters ("int px, int py");
         q.setFilter ("x == px & y == py");
-        Collection results = (Collection)q.execute (Integer.valueOf(x), Integer.valueOf(y));
-        Iterator it = results.iterator();
-        PCPoint ret = (PCPoint)it.next();
+        q.setParameters(Integer.valueOf(x), Integer.valueOf(y));
+        List<PCPoint> results = q.executeList();
+        Iterator<PCPoint> it = results.iterator();
+        PCPoint ret = it.next();
         return ret;
     }
 }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java
index 70c76680..ef69e53a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java
@@ -48,7 +48,7 @@ DataStoreCache interface is used.
 public class DataStoreCacheTest extends PersistenceManagerTest {
 
     Object pointoid;
-    Collection pointoidCollection;
+    Collection<Object> pointoidCollection;
     Object[] pointoidArray;
     
     /** */
@@ -68,13 +68,14 @@ public class DataStoreCacheTest extends PersistenceManagerTest {
      * In setup, create a persistent instance and get its oid.
      * The oid is a valid parameter to the cache APIs. 
      */
+    @Override
     protected void localSetUp() {
         addTearDownClass(PCPoint.class);
         PCPoint point = new PCPoint(50, 100);
         getPM().currentTransaction().begin();
         pm.makePersistent(point);
         pointoid = pm.getObjectId(point);
-        pointoidCollection = new HashSet();
+        pointoidCollection = new HashSet<>();
         pointoidCollection.add(pointoid);
         pointoidArray = new Object[] {pointoid};
         pm.currentTransaction().commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
index 778af781..37147979 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
@@ -70,6 +70,7 @@ public class DataStoreConnection extends PersistenceManagerTest {
     }
     
     /** */
+    @Override
     protected void localSetUp() {
         addTearDownClass(PCPoint.class);
         PCPoint point = new PCPoint(50, 100);
@@ -110,10 +111,10 @@ public class DataStoreConnection extends PersistenceManagerTest {
             if (conn.getAutoCommit()) {
                 appendMessage(ASSERTION_FAILED + 
                         "Autocommit must not be true in JDO connection.");
-            };
+            }
             PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery();
-            Collection actuals = new HashSet();
+            Collection<PCPoint> actuals = new HashSet<>();
             while (rs.next()) {
                 PCPoint p = new PCPoint(rs.getInt(1), rs.getInt(2));
                 actuals.add(p);
@@ -122,7 +123,7 @@ public class DataStoreConnection extends PersistenceManagerTest {
                 appendMessage(ASSERTION_FAILED + "Wrong size of result of " +
                         sql + NL + "expected: 1, actual: " + actuals.size());
             } else {
-                PCPoint actual = (PCPoint)actuals.iterator().next();
+                PCPoint actual = actuals.iterator().next();
                 if (goldenPoint.getX() != actual.getX() ||
                         !goldenPoint.getY().equals(actual.getY())) {
                     appendMessage(ASSERTION_FAILED + 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnectionThrows.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnectionThrows.java
index f5b453f9..ee2dbf9a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnectionThrows.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnectionThrows.java
@@ -18,13 +18,10 @@
 package org.apache.jdo.tck.api.persistencemanager;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.Collections;
 
 import javax.jdo.datastore.JDOConnection;
 
@@ -187,7 +184,7 @@ public class DataStoreConnectionThrows extends PersistenceManagerTest {
                 new Call() {
                     public String getName() {return "setTypeMap";}
                     public void execute(Connection conn) 
-                        throws SQLException {conn.setTypeMap(new HashMap());}
+                        throws SQLException {conn.setTypeMap(Collections.emptyMap());}
                 }
             );
      }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DatastoreTimeout.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DatastoreTimeout.java
index 8c7f5937..66dccc8e 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DatastoreTimeout.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DatastoreTimeout.java
@@ -51,22 +51,22 @@ public class DatastoreTimeout extends JDO_Test {
         "Assertion A12.6.9-1, A14.6.1-7 (DatastoreTimeout) failed: ";
 
     /** Timeout value for datastore read */
-    private static Integer READ_TIMEOUT = Integer.valueOf(100);
+    private static final Integer READ_TIMEOUT = Integer.valueOf(100);
 
     /** Timeout value for datastore write */
-    private static Integer WRITE_TIMEOUT = Integer.valueOf(100);
+    private static final Integer WRITE_TIMEOUT = Integer.valueOf(100);
 
     /** Zero Timeout value */
-    private static Integer ZERO_TIMEOUT = Integer.valueOf(0);
+    private static final Integer ZERO_TIMEOUT = Integer.valueOf(0);
 
     /** Time for the main thread to sleep after starting a parallel thread. */
-    private static int MAIN_SLEEP_MILLIS = 1000;
+    private static final int MAIN_SLEEP_MILLIS = 1000;
 
     /** Time for the parallel threads to sleep before commit. */
-    private static int THREAD_SLEEP_MILLIS_SHORT = 2500;
+    private static final int THREAD_SLEEP_MILLIS_SHORT = 2500;
 
     /** Time for the parallel threads to sleep before commit. */
-    private static int THREAD_SLEEP_MILLIS_LONG = 7500;
+    private static final int THREAD_SLEEP_MILLIS_LONG = 7500;
 
     /** Oid of the PCRect instance created by localSetUp */
     private Object rectOid;
@@ -110,14 +110,14 @@ public class DatastoreTimeout extends JDO_Test {
         }
         finally {
             t.join();
-            Throwable problem = group.getUncaughtException(t);
-            if (problem != null) {
-                if (problem instanceof AssertionFailedError)
-                    throw (AssertionFailedError)problem;
-                else
-                    throw new JDOFatalException( "Thread " + t.getName()+ 
-                                                 " results in exception ", problem);
-            }
+        }
+        Throwable problem = group.getUncaughtException(t);
+        if (problem != null) {
+            if (problem instanceof AssertionFailedError)
+                throw (AssertionFailedError)problem;
+            else
+                throw new JDOFatalException( "Thread " + t.getName()+
+                                             " results in exception ", problem);
         }
     }
 
@@ -145,14 +145,14 @@ public class DatastoreTimeout extends JDO_Test {
         } 
         finally {
             t.join();
-            Throwable problem = group.getUncaughtException(t);
-            if (problem != null) {
-                if (problem instanceof AssertionFailedError)
-                    throw (AssertionFailedError)problem;
-                else
-                    throw new JDOFatalException( "Thread " + t.getName()+ 
-                                                 " results in exception ", problem);
-            }
+        }
+        Throwable problem = group.getUncaughtException(t);
+        if (problem != null) {
+            if (problem instanceof AssertionFailedError)
+                throw (AssertionFailedError)problem;
+            else
+                throw new JDOFatalException( "Thread " + t.getName()+
+                                             " results in exception ", problem);
         }
     }
 
@@ -176,14 +176,14 @@ public class DatastoreTimeout extends JDO_Test {
         }
         finally {
             t.join();
-            Throwable problem = group.getUncaughtException(t);
-            if (problem != null) {
-                if (problem instanceof AssertionFailedError)
-                    throw (AssertionFailedError)problem;
-                else
-                    throw new JDOFatalException( "Thread " + t.getName()+ 
-                                                 " results in exception ", problem);
-            }
+        }
+        Throwable problem = group.getUncaughtException(t);
+        if (problem != null) {
+            if (problem instanceof AssertionFailedError)
+                throw (AssertionFailedError)problem;
+            else
+                throw new JDOFatalException( "Thread " + t.getName()+
+                                             " results in exception ", problem);
         }
     }
 
@@ -207,14 +207,14 @@ public class DatastoreTimeout extends JDO_Test {
         }
         finally {
             t.join();
-            Throwable problem = group.getUncaughtException(t);
-            if (problem != null) {
-                if (problem instanceof AssertionFailedError)
-                    throw (AssertionFailedError)problem;
-                else
-                    throw new JDOFatalException( "Thread " + t.getName()+ 
-                                                 " results in exception ", problem);
-            }
+        }
+        Throwable problem = group.getUncaughtException(t);
+        if (problem != null) {
+            if (problem instanceof AssertionFailedError)
+                throw (AssertionFailedError)problem;
+            else
+                throw new JDOFatalException( "Thread " + t.getName()+
+                                             " results in exception ", problem);
         }
     }
 
@@ -251,10 +251,10 @@ public class DatastoreTimeout extends JDO_Test {
         getPM();
         try {
             pm.currentTransaction().begin();
-            Query q = pm.newQuery(PCPoint.class);
+            Query<PCPoint> q = pm.newQuery(PCPoint.class);
             q.setDatastoreReadTimeoutMillis(timeout);
             @SuppressWarnings("unused")
-            List<?> result = (List<?>)q.execute();
+            List<PCPoint> result = q.executeList();
             pm.currentTransaction().commit();
             if (!isDatastoreTimeoutSupported()) {
                 fail(ASSERTION_FAILED, "Query.setDatastoreReadTimeoutMillis should throw a " +
@@ -423,7 +423,7 @@ public class DatastoreTimeout extends JDO_Test {
         getPM();
         try {
             pm.currentTransaction().begin();
-            Query q = pm.newQuery(PCPoint.class);
+            Query<PCPoint> q = pm.newQuery(PCPoint.class);
             q.setDatastoreWriteTimeoutMillis(timeout);
             q.deletePersistentAll();
             pm.currentTransaction().commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistent.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistent.java
index 560476ae..f7502714 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistent.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistent.java
@@ -129,7 +129,7 @@ public class DeletePersistent extends PersistenceManagerTest {
         try {
             tx.begin();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
 
@@ -149,7 +149,7 @@ public class DeletePersistent extends PersistenceManagerTest {
         try {
             tx.begin();
 
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p4);
             col1.add(p5);
 
@@ -201,7 +201,7 @@ public class DeletePersistent extends PersistenceManagerTest {
             pm.makePersistent(np2);
             tx.commit();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(np1);
             col1.add(np2);
 
@@ -233,7 +233,7 @@ public class DeletePersistent extends PersistenceManagerTest {
             pm.makePersistent(np2);
             tx.commit();
             
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(np1);
             col1.add(np2);
             Object[] obj1=col1.toArray();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentAllFails.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentAllFails.java
index 7dda2060..1554ec08 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentAllFails.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentAllFails.java
@@ -19,6 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
@@ -102,7 +103,7 @@ public class DeletePersistentAllFails extends PersistenceManagerTest {
             
             Point np3 =  new Point (5,5);
             
-            Collection col1 = new java.util.HashSet();
+            Collection<Object> col1 = new HashSet<>();
             col1.add(p1);
             col1.add(p2);
             col1.add(np3);
@@ -131,7 +132,7 @@ public class DeletePersistentAllFails extends PersistenceManagerTest {
 
             Point np3 =  new Point (5,5);
 
-            Collection col1 = new java.util.HashSet();
+            Collection<Object> col1 = new HashSet<>();
             col1.add(p3);
             col1.add(p4);
             col1.add(np3);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceIsTransient.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceIsTransient.java
index 52bf9e59..7cf0c632 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceIsTransient.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceIsTransient.java
@@ -19,6 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.Transaction;
@@ -96,7 +97,7 @@ public class DeletePersistentFailsIfInstanceIsTransient extends PersistenceManag
             PCPoint p1 = new PCPoint (3,3);
             PCPoint p2 = new PCPoint (4,4);
             
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p1);
             col1.add(p2);
             
@@ -125,7 +126,7 @@ public class DeletePersistentFailsIfInstanceIsTransient extends PersistenceManag
             PCPoint p1 = new PCPoint (3,3);
             PCPoint p2 = new PCPoint (4,4);
             
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p1);
             col1.add(p2);
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
index 92441600..4f1429f4 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
@@ -132,7 +132,7 @@ public class DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager e
         try {
             tx.begin();
 
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
 
@@ -158,7 +158,7 @@ public class DeletePersistentFailsIfInstanceManagedByAnotherPersistenceManager e
         try {
             tx.begin();
 
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p4);
             col1.add(p5);
             Object[] obj1= col1.toArray();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentHasNoEffectOnDeletedInstances.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentHasNoEffectOnDeletedInstances.java
index 1f55a16e..af4db798 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentHasNoEffectOnDeletedInstances.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/DeletePersistentHasNoEffectOnDeletedInstances.java
@@ -18,6 +18,7 @@
 package org.apache.jdo.tck.api.persistencemanager;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -118,7 +119,7 @@ public class DeletePersistentHasNoEffectOnDeletedInstances extends PersistenceMa
         try {
             tx = pm.currentTransaction();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new java.util.HashSet<>();
             col1.add(p2);
             col1.add(p3);
 
@@ -140,7 +141,7 @@ public class DeletePersistentHasNoEffectOnDeletedInstances extends PersistenceMa
     private void runTestDeletePersistentAll2(PersistenceManager pm) {
         Transaction tx = pm.currentTransaction();
         try {
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p4);
             col1.add(p5);
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
index 1d35a6dd..bc92d9c3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/GetProperties.java
@@ -77,10 +77,12 @@ public class GetProperties extends JDO_Test implements Constants {
         BatchTestRunner.run(GetProperties.class);
     }
 
+    @Override
     public void localSetUp() {
         getPM();
     }
 
+    @Override
     public void localTearDown() {
         // the PM is left in an unknown state due to setting properties so it must be cleaned up
         cleanupPM();
@@ -88,8 +90,8 @@ public class GetProperties extends JDO_Test implements Constants {
 
     private Collection<String> supportedOptions;
     private Set<String> supportedProperties;
-    private static Set<TestProperty> testRequiredProperties = new HashSet<TestProperty>();
-    private static Map<String, Set<TestProperty>> testOptionalProperties = new HashMap<String, Set<TestProperty>>();
+    private static final Set<TestProperty> testRequiredProperties = new HashSet<>();
+    private static final Map<String, Set<TestProperty>> testOptionalProperties = new HashMap<>();
 
     private interface TestProperty {
         void test(PersistenceManager pm, Set<String> supportedProperties);
@@ -100,11 +102,12 @@ public class GetProperties extends JDO_Test implements Constants {
     }
 
     abstract class AbstractTestProperty implements TestProperty {
-        String propertyName;
-        Object testValue1;
-        Object testValue2;
+        final String propertyName;
+        final Object testValue1;
+        final Object testValue2;
         protected String messageForNullResult = ASSERTION_FAILED_12_19_5;
         protected String messageForWrongResultAfterSet = ASSERTION_FAILED_12_19_5;
+
         AbstractTestProperty(String propertyName, Object testValue1, Object testValue2) {
             this.propertyName = propertyName;
             this.testValue1 = testValue1;
@@ -129,8 +132,10 @@ public class GetProperties extends JDO_Test implements Constants {
         AbstractNonAPITestProperty(String propertyName, Object testValue1, Object testValue2) {
             super(propertyName, testValue1, testValue2);
         }
-        public Object get(PersistenceManager pm) {throw new RuntimeException("not implemented");};
-        public void set(PersistenceManager pm, Object value) {throw new RuntimeException("not implemented");};
+        public Object get(PersistenceManager pm) {throw new RuntimeException("not implemented");}
+
+        public void set(PersistenceManager pm, Object value) {throw new RuntimeException("not implemented");}
+
         public void test(PersistenceManager pm, Set<String> supportedProperties) {
             Object result0 = pm.getProperties().get(propertyName);
             errorIfEqual(this.messageForNullResult + "getProperties().get(" + propertyName + ")", null, result0);
@@ -170,94 +175,94 @@ public class GetProperties extends JDO_Test implements Constants {
             errorIfNotEqual(this.messageForWrongResultAfterSet + "after pm.setXXX(), getProperties.get(" + propertyName + ")",
                     testValue2, result2);
         }
-    };
+    }
 
-    private TestProperty testCopyOnAttach = 
+    private final TestProperty testCopyOnAttach =
            new AbstractAPITestProperty(PROPERTY_COPY_ON_ATTACH, true, false) {
         public Object get(PersistenceManager pm) {return pm.getCopyOnAttach();}
         public void set(PersistenceManager pm, Object value) {pm.setCopyOnAttach((Boolean) value);}
     };
 
-    private TestProperty testDatastoreReadTimeoutMillis = 
+    private final TestProperty testDatastoreReadTimeoutMillis =
             new AbstractAPITestProperty(PROPERTY_DATASTORE_READ_TIMEOUT_MILLIS, 20, 40) {
         public Object get(PersistenceManager pm) {return pm.getDatastoreReadTimeoutMillis();}
         public void set(PersistenceManager pm, Object value) {pm.setDatastoreReadTimeoutMillis((Integer) value);}
     };
 
-    private TestProperty testDatastoreWriteTimeoutMillis = 
+    private final TestProperty testDatastoreWriteTimeoutMillis =
             new AbstractAPITestProperty(PROPERTY_DATASTORE_WRITE_TIMEOUT_MILLIS, 60, 80) {
         public Object get(PersistenceManager pm) {return pm.getDatastoreWriteTimeoutMillis();}
         public void set(PersistenceManager pm, Object value) {pm.setDatastoreWriteTimeoutMillis((Integer) value);}
     };
 
-    private TestProperty testMultithreaded = 
+    private final TestProperty testMultithreaded =
             new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
         public Object get(PersistenceManager pm) {return pm.getMultithreaded();}
         public void set(PersistenceManager pm, Object value) {pm.setMultithreaded((Boolean) value);}
     };
 
-    private TestProperty testLowerCaseMultithreaded = 
+    private final TestProperty testLowerCaseMultithreaded =
             new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
         public Object get(PersistenceManager pm) {return pm.getMultithreaded();}
-        public void set(PersistenceManager pm, Object value) {pm.setProperty("javax.jdo.option.multithreaded", (Boolean) value);}
+        public void set(PersistenceManager pm, Object value) {pm.setProperty("javax.jdo.option.multithreaded", value);}
     };
 
-    private TestProperty testUpperCaseMultithreaded = 
+    private final TestProperty testUpperCaseMultithreaded =
         new AbstractAPITestProperty(PROPERTY_MULTITHREADED, true, false) {
     public Object get(PersistenceManager pm) {return pm.getMultithreaded();}
-    public void set(PersistenceManager pm, Object value) {pm.setProperty("javax.jdo.option.MULTITHREADED", (Boolean) value);}
+    public void set(PersistenceManager pm, Object value) {pm.setProperty("javax.jdo.option.MULTITHREADED", value);}
 };
 
-    private TestProperty testDetachAllOnCommit =
+    private final TestProperty testDetachAllOnCommit =
             new AbstractAPITestProperty(PROPERTY_DETACH_ALL_ON_COMMIT, true, false) {
         public Object get(PersistenceManager pm) {return pm.getDetachAllOnCommit();}
         public void set(PersistenceManager pm, Object value) {pm.setDetachAllOnCommit((Boolean) value);}
     };
 
-    private TestProperty testIgnoreCache =
+    private final TestProperty testIgnoreCache =
             new AbstractAPITestProperty(PROPERTY_IGNORE_CACHE, true, false) {
         public Object get(PersistenceManager pm) {return pm.getIgnoreCache();}
         public void set(PersistenceManager pm, Object value) {pm.setIgnoreCache((Boolean) value);}
     };
 
-    private TestProperty testOptimistic =
+    private final TestProperty testOptimistic =
             new AbstractAPITestProperty(PROPERTY_OPTIMISTIC, true, false) {
         public Object get(PersistenceManager pm) {return pm.currentTransaction().getOptimistic();}
         public void set(PersistenceManager pm, Object value) {pm.currentTransaction().setOptimistic((Boolean) value);}
     };
 
-    private TestProperty testRetainValues =
+    private final TestProperty testRetainValues =
             new AbstractAPITestProperty(PROPERTY_RETAIN_VALUES, true, false) {
         public Object get(PersistenceManager pm) {return pm.currentTransaction().getRetainValues();}
         public void set(PersistenceManager pm, Object value) {pm.currentTransaction().setRetainValues((Boolean) value);}
     };
 
-    private TestProperty testRestoreValues =
+    private final TestProperty testRestoreValues =
             new AbstractAPITestProperty(PROPERTY_RESTORE_VALUES, true, false) {
         public Object get(PersistenceManager pm) {return pm.currentTransaction().getRestoreValues();}
         public void set(PersistenceManager pm, Object value) {pm.currentTransaction().setRestoreValues((Boolean) value);}
     };
 
-    private TestProperty testNontransactionalRead =
+    private final TestProperty testNontransactionalRead =
             new AbstractAPITestProperty(PROPERTY_NONTRANSACTIONAL_READ, true, false) {
         public Object get(PersistenceManager pm) {return pm.currentTransaction().getNontransactionalRead();}
         public void set(PersistenceManager pm, Object value) {pm.currentTransaction().setNontransactionalRead((Boolean) value);}
     };
 
-    private TestProperty testNontransactionalWrite =
+    private final TestProperty testNontransactionalWrite =
             new AbstractAPITestProperty(PROPERTY_NONTRANSACTIONAL_WRITE, true, false) {
         public Object get(PersistenceManager pm) {return pm.currentTransaction().getNontransactionalWrite();}
         public void set(PersistenceManager pm, Object value) {pm.currentTransaction().setNontransactionalWrite((Boolean) value);}
     };
 
-    private TestProperty testIllegalArgument = 
+    private final TestProperty testIllegalArgument =
         new AbstractNonAPITestProperty(PROPERTY_IGNORE_CACHE, 1, false) { 
     };
 
     private Set<TestProperty> setOf(TestProperty... testPropertys) {
-        Set<TestProperty> result = new HashSet<TestProperty>();
+        Set<TestProperty> result = new HashSet<>();
         for (TestProperty testProperty: testPropertys) {
-         result.add(testProperty);
+            result.add(testProperty);
         }
         return result;
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/NewInstance.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/NewInstance.java
index 6bb91b44..1cc8e340 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/NewInstance.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/NewInstance.java
@@ -18,8 +18,6 @@
 
 package org.apache.jdo.tck.api.persistencemanager;
 
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
 import org.apache.jdo.tck.pc.newInstance.AAddress;
 import org.apache.jdo.tck.pc.newInstance.Address;
 import org.apache.jdo.tck.pc.newInstance.IAddress;
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ObjectIdUniqueAmongInstances.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ObjectIdUniqueAmongInstances.java
index 1a7fb445..80843783 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ObjectIdUniqueAmongInstances.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ObjectIdUniqueAmongInstances.java
@@ -19,7 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager;
 
 import java.util.HashSet;
-import java.util.Iterator;
+import java.util.Set;
 
 import javax.jdo.Transaction;
 
@@ -60,8 +60,8 @@ public class ObjectIdUniqueAmongInstances extends PersistenceManagerTest {
     public void test() {
         final int count = 1000;
     
-        HashSet instances = new HashSet(count);
-        HashSet oids = new HashSet(count);
+        Set<PCPoint> instances = new HashSet<>(count);
+        Set<Object> oids = new HashSet<>(count);
 
         pm = getPM();
         Transaction tx = pm.currentTransaction();
@@ -79,8 +79,8 @@ public class ObjectIdUniqueAmongInstances extends PersistenceManagerTest {
             // For all new persistent instances, get the object ids and
             // save them in another hashset.  There should be the same
             // number if the ids  are all unique.
-            for (Iterator it = instances.iterator(); it.hasNext();) {
-                oids.add(pm.getObjectId(it.next()));
+            for (PCPoint instance : instances) {
+                oids.add(pm.getObjectId(instance));
             }
     
             tx.commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OneInstanceOfObjectPerPersistenceManager.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OneInstanceOfObjectPerPersistenceManager.java
index 375d4f86..6efc8d4a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OneInstanceOfObjectPerPersistenceManager.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OneInstanceOfObjectPerPersistenceManager.java
@@ -18,8 +18,8 @@
 
 package org.apache.jdo.tck.api.persistencemanager;
 
-import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 
 import javax.jdo.Query;
 import javax.jdo.Transaction;
@@ -105,7 +105,7 @@ public class OneInstanceOfObjectPerPersistenceManager extends
         tx = null;
 
         // Use a StringBuffer to collect results.
-        StringBuffer results = new StringBuffer();
+        StringBuilder results = new StringBuilder();
 
         // Compare the original object with the object obtained by getObjectById.
         if (p1 != p1a) {
@@ -121,7 +121,7 @@ public class OneInstanceOfObjectPerPersistenceManager extends
             results.append("query results differ. ");
         }
         if (results.length() != 0) {
-            fail(ASSERTION_FAILED + results.toString());
+            fail(ASSERTION_FAILED + results);
         }
 
         // The standard way to end each test method is to simply return. Exceptions are caught by JUnit.
@@ -130,13 +130,13 @@ public class OneInstanceOfObjectPerPersistenceManager extends
 
     /** */
     private PCPoint findPoint (int x, int y) {
-        Query q = getPM().newQuery (PCPoint.class);
+        Query<PCPoint> q = getPM().newQuery (PCPoint.class);
         q.declareParameters ("int px, int py");
         q.setFilter ("x == px & y == py");
-        Collection results = (Collection)q.execute (Integer.valueOf(x),
-		        Integer.valueOf(y));
-        Iterator it = results.iterator();
-        PCPoint ret = (PCPoint)it.next();
+        q.setParameters(Integer.valueOf(x), Integer.valueOf(y));
+        List<PCPoint> results = q.executeList();
+        Iterator<PCPoint> it = results.iterator();
+        PCPoint ret = it.next();
         return ret;
     }
     
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java
index e547faa3..55de8e7d 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/OptimisticFailure.java
@@ -63,11 +63,11 @@ public class OptimisticFailure extends PersistenceManagerTest {
         BatchTestRunner.run(OptimisticFailure.class);
     }
 
-    private VersionedPCPoint p1 = new VersionedPCPoint(1,1); // this will be updated in tx1, updated in tx2, verified in tx3
-    private VersionedPCPoint p2 = new VersionedPCPoint(2,2); // this will be updated in tx1, deleted in tx2, verified in tx3
-    private VersionedPCPoint p3 = new VersionedPCPoint(3,3); // this will be deleted in tx1, updated in tx2
-    private VersionedPCPoint p4 = new VersionedPCPoint(4,4); // this will be deleted in tx1, deleted in tx2
-    private VersionedPCPoint p5 = new VersionedPCPoint(5,5); // this will be unchanged in tx1, updated in tx2, verified in tx3
+    private final VersionedPCPoint p1 = new VersionedPCPoint(1,1); // this will be updated in tx1, updated in tx2, verified in tx3
+    private final VersionedPCPoint p2 = new VersionedPCPoint(2,2); // this will be updated in tx1, deleted in tx2, verified in tx3
+    private final VersionedPCPoint p3 = new VersionedPCPoint(3,3); // this will be deleted in tx1, updated in tx2
+    private final VersionedPCPoint p4 = new VersionedPCPoint(4,4); // this will be deleted in tx1, deleted in tx2
+    private final VersionedPCPoint p5 = new VersionedPCPoint(5,5); // this will be unchanged in tx1, updated in tx2, verified in tx3
     private Object p1oid = null;
     private Object p2oid = null;
     private Object p3oid = null;
@@ -155,7 +155,7 @@ public class OptimisticFailure extends PersistenceManagerTest {
            p3tx2.setX(202);
            pm2.deletePersistent(p4tx2);
            p5tx2.setX(502); // this change must not be committed
-           Set expectedFailedObjects = new HashSet();
+           Set<VersionedPCPoint> expectedFailedObjects = new HashSet<>();
            expectedFailedObjects.add(p1tx2);
            expectedFailedObjects.add(p2tx2);
            expectedFailedObjects.add(p3tx2);
@@ -184,7 +184,7 @@ public class OptimisticFailure extends PersistenceManagerTest {
                    Throwable t = ts[i];
                    if (t instanceof JDOOptimisticVerificationException) {
                        if (debug)
-                           logger.debug("Expected exception caught " + t.toString());
+                           logger.debug("Expected exception caught " + t);
                        JDOException jex = (JDOException)t;
                        Object failed = jex.getFailedObject();
                        if (failed == null) {
@@ -199,7 +199,7 @@ public class OptimisticFailure extends PersistenceManagerTest {
                            } 
                            else {
                                fail(ASSERTION_FAILED,
-                                    "Unexpected failed instance: " + failed.toString());
+                                    "Unexpected failed instance: " + failed);
                            }
                        }
                    } 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ThreadSafe.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ThreadSafe.java
index 004fd4a0..fdab1c0e 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ThreadSafe.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/ThreadSafe.java
@@ -17,13 +17,11 @@
 
 package org.apache.jdo.tck.api.persistencemanager;
 
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
-import javax.jdo.PersistenceManagerFactory;
 import javax.jdo.Transaction;
 
 import org.apache.jdo.tck.pc.mylib.PCPoint;
@@ -65,9 +63,8 @@ public class ThreadSafe extends PersistenceManagerTest {
 
     /**
      *
-     * @throws Exception exception
      */
-    public void testThreadSafe() throws Exception  {
+    public void testThreadSafe() {
         if (debug) logger.debug("\nSTART testThreadSafe");
         
         // test thread-safety of PMF.getPersistenceManager():
@@ -133,15 +130,14 @@ public class ThreadSafe extends PersistenceManagerTest {
      */
     protected synchronized void checkResults(String header, int toSucceed) {
         // check unhandled exceptions
-        final Set uncaught = group.getAllUncaughtExceptions();
+        final Set<Map.Entry<Thread, Throwable>> uncaught = group.getAllUncaughtExceptions();
         if ((uncaught != null) && !uncaught.isEmpty()) {
-            StringBuffer report = new StringBuffer("Uncaught exceptions:\n");
-            for (Iterator i = uncaught.iterator(); i.hasNext();) {
-                Map.Entry next = (Map.Entry)i.next();
-                Thread thread = (Thread)next.getKey();
-                Throwable problem = (Throwable)next.getValue();
+            StringBuilder report = new StringBuilder("Uncaught exceptions:\n");
+            for (Map.Entry<Thread, Throwable> next : uncaught) {
+                Thread thread = next.getKey();
+                Throwable problem = next.getValue();
                 report.append(header + ": Uncaught exception " + problem
-                              + " in thread " + thread + "\n");
+                        + " in thread " + thread + "\n");
             }
             fail(ASSERTION_FAILED, report.toString());
             group.clear();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/TransientTransactionalInstanceRetainsValuesAtCommit.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/TransientTransactionalInstanceRetainsValuesAtCommit.java
index c0e57ec2..f8bcc491 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/TransientTransactionalInstanceRetainsValuesAtCommit.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/TransientTransactionalInstanceRetainsValuesAtCommit.java
@@ -59,9 +59,8 @@ public class TransientTransactionalInstanceRetainsValuesAtCommit extends Persist
     private PCPoint p4 = null;
     private PCPoint p5 = null;
 
-    private Collection col1 = new HashSet();
-    private Collection col2 = new HashSet();
-
+    private final Collection<PCPoint> col1 = new HashSet<>();
+    private final Collection<PCPoint> col2 = new HashSet<>();
 
     /** */
     public void testTransientTransactionalInstanceRetainsValuesAtCommit() {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingEvictAllWithCollectionContainingNulls.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingEvictAllWithCollectionContainingNulls.java
index 7b09ca49..2ff6d50c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingEvictAllWithCollectionContainingNulls.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingEvictAllWithCollectionContainingNulls.java
@@ -19,6 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -104,7 +105,7 @@ public class CallingEvictAllWithCollectionContainingNulls extends PersistenceMan
             tx.begin();
             
             PCPoint p5 = null;
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add (p1);
             col1.add (p5);
             col1.add (p2);
@@ -125,7 +126,7 @@ public class CallingEvictAllWithCollectionContainingNulls extends PersistenceMan
             tx.begin();
             
             PCPoint p5 = null;
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add (p3);
             col1.add (p4);
             col1.add (p5);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingRefreshAllWithCollectionContainingNulls.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingRefreshAllWithCollectionContainingNulls.java
index 7b6bbebd..170e6479 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingRefreshAllWithCollectionContainingNulls.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/CallingRefreshAllWithCollectionContainingNulls.java
@@ -19,6 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -104,7 +105,7 @@ public class CallingRefreshAllWithCollectionContainingNulls extends PersistenceM
         	tx.begin();
 
         	PCPoint p5 = null;
-        	Collection col1 = new java.util.HashSet();
+        	Collection<PCPoint> col1 = new HashSet<>();
         	col1.add (p1);
         	col1.add (p5);
         	col1.add (p2);
@@ -127,7 +128,7 @@ public class CallingRefreshAllWithCollectionContainingNulls extends PersistenceM
         	tx.begin();
 
         	PCPoint p5 = null;
-        	Collection col1 = new java.util.HashSet();
+        	Collection<PCPoint> col1 = new HashSet<>();
         	col1.add (p3);
         	col1.add (p4);
         	col1.add (p5);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictAllWithNoParameters.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictAllWithNoParameters.java
index c9020ad6..63032c59 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictAllWithNoParameters.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictAllWithNoParameters.java
@@ -119,7 +119,7 @@ public class EvictAllWithNoParameters extends PersistenceManagerTest {
 
             if ( testState(p1, HOLLOW, "hollow") ||
                  testState(p1, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransaction")) {
-                ;  // expected result
+                // expected result
             } 
             else {
                 fail(ASSERTION_FAILED,
@@ -128,7 +128,7 @@ public class EvictAllWithNoParameters extends PersistenceManagerTest {
 
             if ( testState(pnt1, HOLLOW, "hollow") ||
                  testState(pnt1, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransaction")) {
-                ;  // expected result
+                // expected result
             } 
             else {
                 fail(ASSERTION_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingCollectionOfInstancesSideEffects.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingCollectionOfInstancesSideEffects.java
index 79c0414e..7aa4f568 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingCollectionOfInstancesSideEffects.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingCollectionOfInstancesSideEffects.java
@@ -19,11 +19,11 @@
 package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
 import org.apache.jdo.tck.pc.mylib.PCPoint2;
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -128,7 +128,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
         try {
             tx.begin();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint2> col1 = new HashSet<>();
             col1.add(pnt1);
             col1.add(p1);
 
@@ -145,7 +145,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
 
             if ( testState(p1, HOLLOW, "hollow")  ||
                  testState(p1, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransactional"))  {
-                ; // expected result
+                // expected result
             } 
             else { 
                 fail(ASSERTION_FAILED,
@@ -154,7 +154,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
 
             if ( testState(pnt1, HOLLOW, "hollow")  ||
                  testState(pnt1, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransactional"))  {
-                ; // expected result
+                // expected result
             } else {
                 fail(ASSERTION_FAILED,
                      "pnt1 should be HOLLOW or P-NONTX after pm.evictAll(Collection).");
@@ -174,7 +174,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
         try {
             tx.begin();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint2> col1 = new HashSet<>();
             col1.add(pnt2);
             col1.add(p2);
 
@@ -191,7 +191,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
 
             if ( testState(p2, HOLLOW, "hollow")  ||
                  testState(p2, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransactional"))  {
-                ; // expected result
+                // expected result
             } else {
                 fail(ASSERTION_FAILED,
                      "p2 should be HOLLOW or P-NONTX after pm.evictAll(Object[]).");
@@ -199,7 +199,7 @@ public class EvictingCollectionOfInstancesSideEffects extends PersistenceManager
 
             if ( testState(pnt2, HOLLOW, "hollow")  ||
                  testState(pnt2, PERSISTENT_NONTRANSACTIONAL, "persistent_nontransactional"))  {
-                ; // expected result
+                // expected result
             } else {
                 fail(ASSERTION_FAILED,
                      "pnt2 should be HOLLOW or P-NONTX after pm.evictAll(Object[]).");
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRestoreValuesFalse.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRestoreValuesFalse.java
index d046de04..cb207047 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRestoreValuesFalse.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRestoreValuesFalse.java
@@ -20,7 +20,6 @@ package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
 import org.apache.jdo.tck.pc.mylib.PCPoint2;
 import org.apache.jdo.tck.util.BatchTestRunner;
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRetainValuesFalse.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRetainValuesFalse.java
index b221a42c..d4bb031d 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRetainValuesFalse.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/EvictingWithRetainValuesFalse.java
@@ -20,7 +20,6 @@ package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
 import org.apache.jdo.tck.pc.mylib.PCPoint2;
 import org.apache.jdo.tck.util.BatchTestRunner;
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToEvictAllThrowsException.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToEvictAllThrowsException.java
index f599c39f..b903b133 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToEvictAllThrowsException.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToEvictAllThrowsException.java
@@ -73,7 +73,7 @@ public class PassingNullToEvictAllThrowsException extends PersistenceManagerTest
         if (debug) logger.debug ("**  in runTestEvictAll1() ");
         try {
             tx.begin();
-            Collection col1 = null;
+            Collection<Object> col1 = null;
             try {
                 pm.evictAll(col1);
                 fail(ASSERTION_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToRefreshAllThrowsException.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToRefreshAllThrowsException.java
index 43564369..e6d252da 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToRefreshAllThrowsException.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/PassingNullToRefreshAllThrowsException.java
@@ -75,7 +75,7 @@ public class PassingNullToRefreshAllThrowsException
         if (debug) logger.debug("**  in runTestRefreshAll1() ");
         try {
             tx.begin();
-            Collection col1 = null;
+            Collection<Object> col1 = null;
             try {
                 pm.refreshAll(col1);
                 fail(ASSERTION_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllNoParameterSideEffects.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllNoParameterSideEffects.java
index 6f5eb907..3551b9a7 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllNoParameterSideEffects.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllNoParameterSideEffects.java
@@ -60,6 +60,7 @@ public class RefreshAllNoParameterSideEffects extends PersistenceManagerTest {
     }
 
     /** */
+    @Override
     public void localSetUp () {
         addTearDownClass(VersionedPCPoint.class);
         pm = getPM();
@@ -67,7 +68,7 @@ public class RefreshAllNoParameterSideEffects extends PersistenceManagerTest {
         tx.begin();
         VersionedPCPoint pnt = new VersionedPCPoint (0,0);
         pm.makePersistent(pnt);
-        oid = pm.getObjectId((Object)pnt);
+        oid = pm.getObjectId(pnt);
         tx.commit();
     }
 
@@ -131,12 +132,12 @@ public class RefreshAllNoParameterSideEffects extends PersistenceManagerTest {
         } catch (javax.jdo.JDOOptimisticVerificationException ove) {
             if (doRefresh) {
                 appendMessage("Expected no exception on commit with doRefresh "
-                        + "true, but got " + ove.toString());
+                        + "true, but got " + ove);
             }
             // else expect exception
         } catch (Exception e) {
             appendMessage("Unexpected exception on commit. doRefresh is " 
-                    + doRefresh + ".  Exception is: " + e.toString());
+                    + doRefresh + ".  Exception is: " + e);
         }
 
         // verify that correct value was committed
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllSideEffects.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllSideEffects.java
index a669efe5..6d9dd711 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllSideEffects.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshAllSideEffects.java
@@ -19,6 +19,7 @@ package org.apache.jdo.tck.api.persistencemanager.cache;
 
 import java.util.Collection;
 import java.util.ArrayList;
+import java.util.List;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -48,13 +49,13 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
     private static final String ASSERTION_FAILED = 
         "Assertion A12.5.1-5D (RefreshAllSideEffects) failed: ";
     
-    ArrayList oids = new ArrayList();
+    private final List<Object> oids = new ArrayList<>();
 
-    PersistenceManager pm1;
-    PersistenceManager pm2;
-    PersistenceManager pmVerify;
-    Collection coll = new ArrayList(); // Collection of persistent instances
-    boolean useCollection = true;
+    private PersistenceManager pm1;
+    private PersistenceManager pm2;
+    private PersistenceManager pmVerify;
+    private final List<VersionedPCPoint> coll = new ArrayList<>(); // Collection of persistent instances
+    private boolean useCollection = true;
 
     /**
      * The <code>main</code> is called when the class
@@ -66,6 +67,7 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
     }
 
     /** */
+    @Override
     public void localSetUp () {
         addTearDownClass(VersionedPCPoint.class);
         pm = getPM();
@@ -77,8 +79,8 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
         coll.add(pnt2);
         pm.makePersistentAll(coll);
 
-        oids.add(0, pm.getObjectId((Object)pnt1));
-        oids.add(1, pm.getObjectId((Object)pnt2));
+        oids.add(0, pm.getObjectId(pnt1));
+        oids.add(1, pm.getObjectId(pnt2));
         tx.commit();
     }
 
@@ -125,6 +127,7 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
     }
     
     /** */
+    @SuppressWarnings("unchecked")
     private void runTestRefreshAllSideEffects(boolean doRefresh) {
 
         if (debug) logger.debug ("\nSTART RefreshAllSideEffects");
@@ -132,12 +135,12 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
         Transaction tx1 = pm1.currentTransaction();
         tx1.setOptimistic(true);
         tx1.begin();
-        Collection points1 = pm1.getObjectsById(oids, true);
+        Collection<VersionedPCPoint> points1 = pm1.getObjectsById(oids, true);
         ((VersionedPCPoint)points1.toArray()[0]).setX(11);  // make transactional
 
         Transaction tx2 = pm2.currentTransaction();
         tx2.begin();
-        Collection points2 = pm2.getObjectsById(oids);
+        Collection<VersionedPCPoint> points2 = pm2.getObjectsById(oids);
         ((VersionedPCPoint)points2.toArray()[0]).setX(22);
         ((VersionedPCPoint)points2.toArray()[1]).setX(22);
         ((VersionedPCPoint)points2.toArray()[0]).setY(Integer.valueOf("22"));
@@ -158,12 +161,12 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
         } catch (javax.jdo.JDOOptimisticVerificationException ove) {
             if (doRefresh) {
                 appendMessage("Expected no exception on commit with doRefresh "
-                        + "true, but got " + ove.toString());
+                        + "true, but got " + ove);
             }
             // else expect exception
         } catch (Exception e) {
             appendMessage("Unexpected exception on commit. doRefresh is " 
-                    + doRefresh + ".  Exception is: " + e.toString());
+                    + doRefresh + ".  Exception is: " + e);
         }
 
         // verify that correct value was committed
@@ -175,7 +178,7 @@ public class RefreshAllSideEffects extends PersistenceManagerTest {
             
         Transaction txVerify = pmVerify.currentTransaction();
         txVerify.begin();
-        Collection pointsVerify = 
+        Collection<VersionedPCPoint> pointsVerify =
                 pmVerify.getObjectsById(oids, true);
         if (((VersionedPCPoint)pointsVerify.toArray()[0]).getX()
                 != pntExpected.getX() 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshSideEffects.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshSideEffects.java
index 54a9c699..d2ba833f 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshSideEffects.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/RefreshSideEffects.java
@@ -126,9 +126,9 @@ public class RefreshSideEffects extends PersistenceManagerTest {
     /** */
     class RefreshThreadT1 implements Runnable {
 
-        PersistenceManager pm;
-        RefreshThreadT2 other;
-        boolean commitDone;
+        private final PersistenceManager pm;
+        private RefreshThreadT2 other;
+        private boolean commitDone;
 
         /** */
         RefreshThreadT1(PersistenceManager pm) {
@@ -186,9 +186,9 @@ public class RefreshSideEffects extends PersistenceManagerTest {
     /** */
     class RefreshThreadT2 implements Runnable {
 
-        PersistenceManager pm;
-        RefreshThreadT1 other;
-        boolean done;
+        private final PersistenceManager pm;
+        private RefreshThreadT1 other;
+        private boolean done;
     
         /** */
         RefreshThreadT2(PersistenceManager pm) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/Retrieve.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/Retrieve.java
index 2d705e52..d5b98d7d 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/Retrieve.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/cache/Retrieve.java
@@ -132,7 +132,7 @@ public class Retrieve extends PersistenceManagerTest {
         Transaction tx = pm.currentTransaction();
         try {
             tx.begin();
-            Collection coll = new ArrayList();
+            Collection<Object> coll = new ArrayList<>();
             coll.add(p1);
             coll.add(p3);
             coll.add(rect);
@@ -157,7 +157,7 @@ public class Retrieve extends PersistenceManagerTest {
         Transaction tx = pm.currentTransaction();
         try {
             tx.begin();
-            Collection coll = new ArrayList();
+            Collection<Object> coll = new ArrayList<>();
             coll.add(p1);
             coll.add(p3);
             coll.add(rect);
@@ -182,7 +182,7 @@ public class Retrieve extends PersistenceManagerTest {
         Transaction tx = pm.currentTransaction();
         try {
             tx.begin();
-            Collection coll = new ArrayList();
+            Collection<Object> coll = new ArrayList<>();
             coll.add(p1);
             coll.add(p3);
             coll.add(rect);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
index d821e55c..130dd58e 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
@@ -94,5 +94,7 @@ public class AutoCloseable extends PersistenceManagerTest {
     /**
      * DummyException used in method testTryWithResourceThrowingException.
      */
-    private static final class DummyException extends Exception {}
+    private static final class DummyException extends Exception {
+        private static final long serialVersionUID = 1L;
+    }
 }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
index cbc226e3..79ec360f 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
@@ -18,7 +18,6 @@
 package org.apache.jdo.tck.api.persistencemanager.close;
 
 import javax.jdo.JDOObjectNotFoundException;
-import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/CopyOnAttachFalse.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/CopyOnAttachFalse.java
index 641a24af..3fb099b3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/CopyOnAttachFalse.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/CopyOnAttachFalse.java
@@ -57,7 +57,7 @@ public class CopyOnAttachFalse extends DetachTest {
         Cart detachedCart = createDetachedInstance(ASSERTION_FAILED);
         pm.setCopyOnAttach(false);
         pm.currentTransaction().begin();
-        Cart attachedCart = (Cart)pm.makePersistent(detachedCart);
+        Cart attachedCart = pm.makePersistent(detachedCart);
         assertTrue("Expected attached object to == detached object.", 
                 attachedCart == detachedCart);
         pm.currentTransaction().commit();
@@ -70,7 +70,7 @@ public class CopyOnAttachFalse extends DetachTest {
         pm.currentTransaction().begin();
         cartEntry1.setQuantity(500);
         goldenCartEntry.setQuantity(500);
-        Cart attachedCart = (Cart)pm.makePersistent(detachedCart);
+        Cart attachedCart = pm.makePersistent(detachedCart);
         assertTrue("Expected attached object to == detached object.", 
                 attachedCart == detachedCart);
         pm.currentTransaction().commit();
@@ -85,7 +85,7 @@ public class CopyOnAttachFalse extends DetachTest {
         // Obtain new instance of cart1
         pm.getObjectById(cart1oid, false);
         try {
-            Cart attachedCart = (Cart)pm.makePersistent(detachedCart);
+            Cart attachedCart = pm.makePersistent(detachedCart);
             fail("Expected JDOUserException. Object with same identity as "
                     + "attached object is already in the cache.");
         } catch (JDOUserException jdoe) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAccessUnloadedField.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAccessUnloadedField.java
index 9bafbf26..1b417805 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAccessUnloadedField.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAccessUnloadedField.java
@@ -59,7 +59,7 @@ public class DetachAccessUnloadedField extends DetachTest {
         // sets fetch group cart, entries, product
         setCartFetchGroups();
         // DETACH_LOAD_FIELDS true by default
-        CartEntry cartEntryDetached = (CartEntry)pm.detachCopy(cartEntry1);
+        CartEntry cartEntryDetached = pm.detachCopy(cartEntry1);
         try {
             Product prod = cartEntryDetached.getProduct();
         } catch (JDODetachedFieldAccessException jdoex) {
@@ -82,7 +82,7 @@ public class DetachAccessUnloadedField extends DetachTest {
         int quantity =  cartEntry1.getQuantity();
 
         pm.getFetchPlan().setDetachmentOptions(0);
-        CartEntry cartEntryDetached = (CartEntry)pm.detachCopy(cartEntry1);
+        CartEntry cartEntryDetached = pm.detachCopy(cartEntry1);
         try {
             Product prodDetached =  cartEntryDetached.getProduct();
         } catch (JDODetachedFieldAccessException jdoex) {
@@ -104,7 +104,7 @@ public class DetachAccessUnloadedField extends DetachTest {
         Product prod =  cartEntry1.getProduct();
         pm.getFetchPlan().removeGroup(CARTENTRY_PRODUCT);
         pm.getFetchPlan().setDetachmentOptions(FetchPlan.DETACH_UNLOAD_FIELDS);
-        CartEntry cartEntryDetached = (CartEntry)pm.detachCopy(cartEntry1);
+        CartEntry cartEntryDetached = pm.detachCopy(cartEntry1);
         try {
             Product prodDetached =  cartEntryDetached.getProduct();
             fail("Expected exception on access of unloaded field, " +
@@ -128,7 +128,7 @@ public class DetachAccessUnloadedField extends DetachTest {
         fp.addGroup(CART_ENTRIES);
         fp.addGroup(CARTENTRY_CART);
 
-        CartEntry cartEntryDetached = (CartEntry)pm.detachCopy(cartEntry1);
+        CartEntry cartEntryDetached = pm.detachCopy(cartEntry1);
         try {
             Product prod = cartEntryDetached.getProduct();
             fail("Expected exception on access of field not in fetch plan" +
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAllOnCommit.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAllOnCommit.java
index 492774cc..6ccbaf74 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAllOnCommit.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAllOnCommit.java
@@ -16,19 +16,6 @@
  */
 package org.apache.jdo.tck.api.persistencemanager.detach;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-
-import org.apache.jdo.tck.pc.shoppingcart.Cart;
-
 import org.apache.jdo.tck.util.BatchTestRunner;
 
 /**
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttach.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttach.java
index ff69855d..00e6f36e 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttach.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttach.java
@@ -16,17 +16,6 @@
  */
 package org.apache.jdo.tck.api.persistencemanager.detach;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-
 import org.apache.jdo.tck.pc.shoppingcart.Cart;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -60,7 +49,7 @@ public class DetachAttach extends DetachTest {
     public void testAttachClean() {
         Cart detachedCart = createDetachedInstance(ASSERTION_FAILED);
         pm.currentTransaction().begin();
-        Cart attachedCart = (Cart)pm.makePersistent(detachedCart);
+        Cart attachedCart = pm.makePersistent(detachedCart);
         checkCartValues(ASSERTION_FAILED +
                 "after attach," + NL, attachedCart, true);
         pm.currentTransaction().commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttachDirty.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttachDirty.java
index 9de765b5..01e32bdb 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttachDirty.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachAttachDirty.java
@@ -16,17 +16,6 @@
  */
 package org.apache.jdo.tck.api.persistencemanager.detach;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-
 import org.apache.jdo.tck.pc.shoppingcart.Cart;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -64,7 +53,7 @@ public class DetachAttachDirty extends DetachTest {
         pm.currentTransaction().begin();
         cartEntry1.setQuantity(500);
         goldenCartEntry.setQuantity(500);
-        Cart attachedCart = (Cart)pm.makePersistent(detachedCart);
+        Cart attachedCart = pm.makePersistent(detachedCart);
         checkCartValues(ASSERTION_FAILED +
                 "after attach," + NL, attachedCart, true);
         pm.currentTransaction().commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachCopy.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachCopy.java
index fb54f93c..498fb6c8 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachCopy.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachCopy.java
@@ -16,17 +16,9 @@
  */
 package org.apache.jdo.tck.api.persistencemanager.detach;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
 import java.util.Collection;
 import java.util.HashSet;
 
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-
 import org.apache.jdo.tck.pc.shoppingcart.Cart;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -66,7 +58,7 @@ public class DetachCopy extends DetachTest {
         getPM().currentTransaction().begin();
         setCartFetchGroups();
         //pm.retrieveAll(cartClosure);
-        Cart cartDetached = (Cart)pm.detachCopy(cart1);
+        Cart cartDetached = pm.detachCopy(cart1);
         checkCartValues(ASSERTION_FAILED + 
                 "after detachCopy," + NL, cartDetached);
         pm.currentTransaction().commit();
@@ -78,10 +70,10 @@ public class DetachCopy extends DetachTest {
         getPM().currentTransaction().begin();
         setCartFetchGroups();
         //pm.retrieveAll(cartClosure);
-        Collection instances = new HashSet();
+        Collection<Cart> instances = new HashSet<>();
         instances.add(cart1);
-        Collection detached = pm.detachCopyAll(instances);
-        Cart cartDetached = (Cart)detached.iterator().next();
+        Collection<Cart> detached = pm.detachCopyAll(instances);
+        Cart cartDetached = detached.iterator().next();
         checkCartValues(ASSERTION_FAILED + 
                 "after detachCopyAll(Collection)," + NL, cartDetached);
         pm.currentTransaction().commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachSerialize.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachSerialize.java
index 8b5d24a8..bfb50ff0 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachSerialize.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachSerialize.java
@@ -21,9 +21,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
-import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-
 import org.apache.jdo.tck.pc.shoppingcart.Cart;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -93,7 +90,7 @@ public class DetachSerialize extends DetachTest {
             oos.writeObject(root);
             return baos.toByteArray();
         } catch (Exception ex) {
-            fail(ASSERTION_FAILED + "serializing cart:" + ex.toString());
+            fail(ASSERTION_FAILED + "serializing cart:" + ex);
             return null; // will not be reached
         }
     }
@@ -105,7 +102,7 @@ public class DetachSerialize extends DetachTest {
             ObjectInputStream ois = new ObjectInputStream(bais);
             return ois.readObject();
         } catch (Exception ex) {
-            fail(ASSERTION_FAILED + "deserializing cart:" + ex.toString());
+            fail(ASSERTION_FAILED + "deserializing cart:" + ex);
             return null; // will not be reached
         }
     }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachTest.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachTest.java
index 35030f64..4c27fe72 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachTest.java
@@ -28,8 +28,6 @@ import org.apache.jdo.tck.pc.shoppingcart.Cart;
 import org.apache.jdo.tck.pc.shoppingcart.Product;
 import org.apache.jdo.tck.pc.shoppingcart.Undetachable;
 
-import javax.jdo.PersistenceManager;
-
 /**
  *
  */
@@ -159,11 +157,11 @@ public abstract class DetachTest extends JDO_Test {
             reportDifference(location + 
                 " differences in cart.customerId", 
                 goldenCart.getCustomerId(), cart.getCustomerId());
-        Iterator goldenCartEntries = goldenCart.getEntries();
-        Iterator cartEntries = cart.getEntries();
+        Iterator<CartEntry> goldenCartEntries = goldenCart.getEntries();
+        Iterator<CartEntry> cartEntries = cart.getEntries();
         while (cartEntries.hasNext()) {
-            CartEntry goldenCartEntry = (CartEntry)goldenCartEntries.next();
-            CartEntry cartEntry = (CartEntry)cartEntries.next();
+            CartEntry goldenCartEntry = goldenCartEntries.next();
+            CartEntry cartEntry = cartEntries.next();
             checkState(location + "CartEntry instance", cartEntry,
                     persistent);
             Cart cartEntryCart = cartEntry.getCart();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachUndetachable.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachUndetachable.java
index d193efca..a05d4501 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachUndetachable.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/DetachUndetachable.java
@@ -51,12 +51,12 @@ public class DetachUndetachable extends DetachTest {
     public void testDetachUndetachable() {
         setupUndetachable();
         getPM().currentTransaction().begin();
-        Undetachable instance = (Undetachable)pm.detachCopy(un1);
-        if (JDOHelper.isPersistent((Object)instance)) {
+        Undetachable instance = pm.detachCopy(un1);
+        if (JDOHelper.isPersistent(instance)) {
             appendMessage("testDetachUndetachable: should be transient" + 
                 " but is not. The object state is: " +
-                states[currentState((Object)instance)] 
-                + " " + getStateOfInstance((Object)instance));
+                states[currentState(instance)]
+                + " " + getStateOfInstance(instance));
         }
         pm.currentTransaction().commit();
         failOnError();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/SetDetachAllOnCommit.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/SetDetachAllOnCommit.java
index a366865a..056a6b55 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/SetDetachAllOnCommit.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/detach/SetDetachAllOnCommit.java
@@ -17,8 +17,7 @@
 package org.apache.jdo.tck.api.persistencemanager.detach;
 
 import javax.jdo.PersistenceManager;
-import javax.jdo.Transaction;
-import org.apache.jdo.tck.pc.mylib.PCPoint;
+
 import org.apache.jdo.tck.util.BatchTestRunner;
 
 /**
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithInstancesMadePersistentViaReachability.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithInstancesMadePersistentViaReachability.java
index 9c2e86b1..71c7a58d 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithInstancesMadePersistentViaReachability.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithInstancesMadePersistentViaReachability.java
@@ -17,7 +17,6 @@
 
 package org.apache.jdo.tck.api.persistencemanager.extent;
 
-import java.util.Iterator;
 import java.util.Date;
 
 import javax.jdo.Extent;
@@ -82,20 +81,24 @@ public class GetExtentWithInstancesMadePersistentViaReachability extends Persist
     private void runTest(PersistenceManager pm) {
         Transaction tx = pm.currentTransaction();
         tx.begin();
-        Extent e = pm.getExtent(Department.class, false);
+        Extent<Department> e = pm.getExtent(Department.class, false);
 
         boolean foundDep1 = false;
         boolean foundDep2 = false;
         boolean foundDep3 = false;
 
-        for (Iterator i = e.iterator(); i.hasNext();) {
-            Department dep = (Department) i.next();
-            if (dep.getName().equals("Department 1"))
-                foundDep1=true;
-            else if (dep.getName().equals("Department 2"))
-                foundDep2=true;
-            else if (dep.getName().equals("Department 3"))
-                foundDep3=true;		
+        for (Department dep : e) {
+            switch (dep.getName()) {
+                case "Department 1":
+                    foundDep1 = true;
+                    break;
+                case "Department 2":
+                    foundDep2 = true;
+                    break;
+                case "Department 3":
+                    foundDep3 = true;
+                    break;
+            }
         }
 
         if (!foundDep1) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithNoSubclasses.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithNoSubclasses.java
index df4e8b15..a818d5d2 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithNoSubclasses.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithNoSubclasses.java
@@ -17,8 +17,6 @@
 
 package org.apache.jdo.tck.api.persistencemanager.extent;
 
-import java.util.Iterator;
-
 import javax.jdo.Extent;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -54,8 +52,8 @@ public class GetExtentWithNoSubclasses extends PersistenceManagerTest {
         BatchTestRunner.run(GetExtentWithNoSubclasses.class);
     }
 
-    private PCPoint p1 = null;
-    private PCPoint p2 = null;
+    private final PCPoint p1 = null;
+    private final PCPoint p2 = null;
 
     /** */
     public void testGetExtentWithNoSubclasses() {
@@ -88,19 +86,17 @@ public class GetExtentWithNoSubclasses extends PersistenceManagerTest {
         Transaction tx = pm.currentTransaction();
         try {
             tx.begin();
-            Extent e = pm.getExtent(PCPoint.class, false);
+            Extent<PCPoint> e = pm.getExtent(PCPoint.class, false);
             
             int c = 0;
-            for (Iterator i = e.iterator(); i.hasNext();) {
-                PCPoint p = (PCPoint) i.next();
+            for (PCPoint p : e) {
                 if (debug) logger.debug("p.getX() = " + p.getX());
                 if ((p.getX() == 1) || (p.getX() == 3)) {
                     // OK
-                }
-                else {
-                    fail(ASSERTION_FAILED, 
-                         "Extent of class " + PCPoint.class.getName() + 
-                         " includes unexpected instance, p.getX():" + p.getX());
+                } else {
+                    fail(ASSERTION_FAILED,
+                            "Extent of class " + PCPoint.class.getName() +
+                                    " includes unexpected instance, p.getX():" + p.getX());
                 }
             }
             tx.commit();
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithSubclasses.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithSubclasses.java
index 567dfe0c..01fa32ca 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithSubclasses.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/extent/GetExtentWithSubclasses.java
@@ -18,13 +18,11 @@
 package org.apache.jdo.tck.api.persistencemanager.extent;
 
 import java.util.Date;
-import java.util.Iterator;
 
 import javax.jdo.Extent;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
 
-import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
 import org.apache.jdo.tck.pc.company.Employee;
 import org.apache.jdo.tck.pc.company.FullTimeEmployee;
@@ -96,23 +94,22 @@ public class GetExtentWithSubclasses extends PersistenceManagerTest {
     private void runTest(PersistenceManager pm) {
         Transaction tx = pm.currentTransaction();
         tx.begin();
-        Extent e = pm.getExtent(Person.class, true);
+        Extent<Person> e = pm.getExtent(Person.class, true);
 
         boolean foundCraig = false;
         boolean foundMichael = false;
         boolean foundMichelle = false;
         boolean foundVictor = false;
 
-        for (Iterator i = e.iterator(); i.hasNext();) {
-            Person p = (Person) i.next();
+        for (Person p : e) {
             if ((p.getFirstname().equals("Craig")) && (p.getLastname().equals("Russell")))
-                foundCraig=true;
+                foundCraig = true;
             else if ((p.getFirstname().equals("Michael")) && (p.getLastname().equals("Bouschen")))
-                foundMichael=true;
+                foundMichael = true;
             else if ((p.getFirstname().equals("Michelle")) && (p.getLastname().equals("Caisse")))
-                foundMichelle=true;
+                foundMichelle = true;
             else if ((p.getFirstname().equals("Victor")) && (p.getLastname().equals("Kirkebo")))
-                foundVictor=true;
+                foundVictor = true;
         }
 
         if (!foundCraig) {
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/AbstractFetchPlanTest.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/AbstractFetchPlanTest.java
index b900db93..0fb67b37 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/AbstractFetchPlanTest.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/AbstractFetchPlanTest.java
@@ -51,13 +51,13 @@ public class AbstractFetchPlanTest extends JDO_Test {
 
     /** The String arrays used for setting fetch groups.
      */
-    protected String[] defaultGroup = new String[]
+    protected final String[] defaultGroup = new String[]
         {"default"};
-    protected String[] upperLeftGroup = new String[]
+    protected final String[] upperLeftGroup = new String[]
         {"default", "PCRect.upperLeft"};
-    protected String[] lowerRightGroup = new String[]
+    protected final String[] lowerRightGroup = new String[]
         {"default", "PCRect.lowerRight"};
-    protected String[] bothGroup = new String[]{
+    protected final String[] bothGroup = new String[]{
         "default", "PCRect.upperLeft", "PCRect.lowerRight"};
     /**
      * @see org.apache.jdo.tck.JDO_Test#localSetUp()
@@ -147,12 +147,13 @@ public class AbstractFetchPlanTest extends JDO_Test {
      * @param fetchPlan fetch plan
      * @param groups groups
      */
+    @SuppressWarnings("unchecked")
     protected void checkGroups(String location,
             FetchPlan fetchPlan, String[] groups) {
-        Collection expected = new HashSet();
-        Collection actual = fetchPlan.getGroups();
-        for (int i = 0; i < groups.length; ++i) {
-            expected.add(groups[i]);
+        Collection<String> expected = new HashSet<>();
+        Collection<String> actual = fetchPlan.getGroups();
+        for (String group : groups) {
+            expected.add(group);
         }
         if (!expected.equals(actual)) {
             appendMessage(location + NL + "Fetch groups differ." + NL +
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
index 834d6624..8fe1d85b 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanInterface.java
@@ -112,14 +112,14 @@ public class FetchPlanInterface extends JDO_Test {
      * @param actual actual value
      * @return true if equal
      */
-    protected boolean setEquals
-            (Collection expected, Collection actual) {
+    protected <T> boolean setEquals
+            (Collection<T> expected, Collection<T> actual) {
         if (expected == actual) 
             return true;
         if (expected == null || actual == null) 
             return false;
-        Set expectedSet = new HashSet(expected);
-        Set actualSet = new HashSet(actual);
+        Set<T> expectedSet = new HashSet<>(expected);
+        Set<T> actualSet = new HashSet<>(actual);
         return expectedSet.equals(actualSet);
     }
 
@@ -228,11 +228,12 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkDefaultGroups() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         expectedGroups.add("default");
         FetchPlan fp = getPM().getFetchPlan();
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkDefaultGroups(): wrong getGroups() " + 
@@ -243,11 +244,12 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkClearGroups() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         FetchPlan fp = getPM().getFetchPlan();
         fp.clearGroups();
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkClearGroups(): wrong getGroups() " + 
@@ -258,12 +260,13 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkSetGroup() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         expectedGroups.add("group1");
         FetchPlan fp = getPM().getFetchPlan();
         fp.setGroup("group1");
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkSetGroup(): wrong getGroups() " + 
@@ -274,13 +277,14 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkAddGroup() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         expectedGroups.add("default");
         expectedGroups.add("group1");
         FetchPlan fp = getPM().getFetchPlan();
         fp.addGroup("group1");
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkAddGroup(): wrong getGroups() " + 
@@ -291,11 +295,12 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkRemoveGroup() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         FetchPlan fp = getPM().getFetchPlan();
         fp.removeGroup("default");
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkRemoveGroup(): wrong getGroups() " + 
@@ -306,14 +311,15 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkSetGroupsCollection() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         expectedGroups.add("default");
         expectedGroups.add("group1");
         expectedGroups.add("group2");
         FetchPlan fp = getPM().getFetchPlan();
         fp.setGroups(expectedGroups);
-        Collection groups = fp.getGroups();
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkSetGroupsCollection(): wrong getGroups() " + 
@@ -324,14 +330,15 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void checkSetGroupsArray() {
-        Set expectedGroups = new HashSet();
+        Set<String> expectedGroups = new HashSet<>();
         expectedGroups.add("default");
         expectedGroups.add("group1");
         expectedGroups.add("group2");
         FetchPlan fp = getPM().getFetchPlan();
-        fp.setGroups(new String[] {"default", "group1", "group2"});
-        Collection groups = fp.getGroups();
+        fp.setGroups("default", "group1", "group2");
+        Collection<String> groups = fp.getGroups();
         if (!setEquals(expectedGroups, groups)) {
             failCompare(
                 "checkSetGroupsArray(): wrong getGroups() " + 
@@ -342,10 +349,11 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     protected void checkGetDetachmentRoots() {
-        Set expectedRoots = new HashSet();
+        Set<String> expectedRoots = new HashSet<>();
         FetchPlan fp = getPM().getFetchPlan();
-        Collection roots = fp.getDetachmentRoots();
+        Collection<String> roots = fp.getDetachmentRoots();
         if (!setEquals(expectedRoots, roots)) {
             failCompare(
                 "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
@@ -356,13 +364,14 @@ public class FetchPlanInterface extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     protected void checkSetDetachmentRoots() {
         PCPoint p = new PCPoint(10, 20);
-        Set expectedRoots = new HashSet();
+        Set<PCPoint> expectedRoots = new HashSet<>();
         expectedRoots.add(p);
         FetchPlan fp = getPM().getFetchPlan();
         fp.setDetachmentRoots(expectedRoots);
-        Collection roots = fp.getDetachmentRoots();
+        Collection<PCPoint> roots = fp.getDetachmentRoots();
         if (!setEquals(expectedRoots, roots)) {
             failCompare(
                 "checkGetDetachmentRoots(): wrong getDetachmentRoots() " + 
@@ -374,11 +383,12 @@ public class FetchPlanInterface extends JDO_Test {
 
     /** */
     private void checkSetDetachmentRootClasses() {
-        Class[] expectedRootClasses = new Class[] {PCPoint.class};
+        @SuppressWarnings("rawtypes")
+        Class<?>[] expectedRootClasses = new Class[] {PCPoint.class};
         FetchPlan fp = getPM().getFetchPlan();
         fp.setDetachmentRootClasses(
                 expectedRootClasses);
-        Class[] rootClasses = fp.getDetachmentRootClasses();
+        Class<?>[] rootClasses = fp.getDetachmentRootClasses();
         if (!Arrays.equals(expectedRootClasses, rootClasses)) {
             failCompare(
                 "checkGetDetachmentRootClasses(): " + 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanIsCopy.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanIsCopy.java
index b267e04e..0a36a732 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanIsCopy.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanIsCopy.java
@@ -20,10 +20,8 @@ package org.apache.jdo.tck.api.persistencemanager.fetchplan;
 import java.util.Arrays;
 
 import javax.jdo.Extent;
-import javax.jdo.FetchPlan;
 import javax.jdo.Query;
 
-import org.apache.jdo.tck.pc.mylib.PCPoint;
 import org.apache.jdo.tck.pc.mylib.PCRect;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -44,8 +42,8 @@ public class FetchPlanIsCopy extends AbstractFetchPlanTest {
     private static final String ASSERTION_FAILED = 
         "Assertion 12.7.5-1 (FetchPlanIsCopy) failed: ";
 
-    Query query = null;
-    Extent extent = null;
+    Query<PCRect> query = null;
+    Extent<PCRect> extent = null;
     
     /**
      * The <code>main</code> is called when the class
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanMakeTransient.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanMakeTransient.java
index cbad2dcc..0adf10f3 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanMakeTransient.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanMakeTransient.java
@@ -20,8 +20,6 @@ package org.apache.jdo.tck.api.persistencemanager.fetchplan;
 import java.util.Collection;
 import java.util.HashSet;
 
-import org.apache.jdo.tck.api.persistencemanager.fetchplan.AbstractFetchPlanTest;
-
 import org.apache.jdo.tck.pc.mylib.PCRect;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -63,7 +61,7 @@ public class FetchPlanMakeTransient extends AbstractFetchPlanTest {
         setBothGroup();
         pm.currentTransaction().begin();
         PCRect instance = (PCRect)pm.getObjectById(pcrectoid, false);
-        Collection instances = new HashSet();
+        Collection<PCRect> instances = new HashSet<>();
         instances.add(instance);
         pm.makeTransientAll(instances, true);
         checkBothLoaded(ASSERTION_FAILED, instance);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanQuery.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanQuery.java
index 5d4b3690..3d00b36a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanQuery.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanQuery.java
@@ -17,11 +17,8 @@
  
 package org.apache.jdo.tck.api.persistencemanager.fetchplan;
 
-import javax.jdo.FetchPlan;
 import javax.jdo.Query;
 
-import org.apache.jdo.tck.api.persistencemanager.fetchplan.AbstractFetchPlanTest;
-
 import org.apache.jdo.tck.pc.mylib.PCRect;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
@@ -57,7 +54,7 @@ public class FetchPlanQuery extends AbstractFetchPlanTest {
     public void testQuery() {
         setBothGroup();
         pm.currentTransaction().begin();
-        Query query = pm.newQuery(PCRect.class);
+        Query<PCRect> query = pm.newQuery(PCRect.class);
         checkGroups(ASSERTION_FAILED + " after newQuery().getFetchPlan()", 
                 query.getFetchPlan(), bothGroup);
         query.setUnique(true);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRefresh.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRefresh.java
index 7deeabfb..46a63b5a 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRefresh.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRefresh.java
@@ -19,7 +19,6 @@ package org.apache.jdo.tck.api.persistencemanager.fetchplan;
 
 import java.util.Collection;
 import java.util.HashSet;
-import org.apache.jdo.tck.api.persistencemanager.fetchplan.AbstractFetchPlanTest;
 
 import org.apache.jdo.tck.pc.mylib.PCRect;
 
@@ -69,7 +68,7 @@ public class FetchPlanRefresh extends AbstractFetchPlanTest {
         setBothGroup();
         pm.currentTransaction().begin();
         PCRect instance = (PCRect)pm.getObjectById(pcrectoid, false);
-        Collection instances = new HashSet();
+        Collection<PCRect> instances = new HashSet<>();
         instances.add(instance);
         pm.refreshAll(instances);
         checkBothLoaded(ASSERTION_FAILED, instance);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRetrieve.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRetrieve.java
index 72efb7b0..876f6a84 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRetrieve.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/fetchplan/FetchPlanRetrieve.java
@@ -19,7 +19,6 @@ package org.apache.jdo.tck.api.persistencemanager.fetchplan;
 
 import java.util.Collection;
 import java.util.HashSet;
-import org.apache.jdo.tck.api.persistencemanager.fetchplan.AbstractFetchPlanTest;
 
 import org.apache.jdo.tck.pc.mylib.PCRect;
 
@@ -70,7 +69,7 @@ public class FetchPlanRetrieve extends AbstractFetchPlanTest {
         setBothGroup();
         pm.currentTransaction().begin();
         PCRect instance = (PCRect)pm.getObjectById(pcrectoid, false);
-        Collection instances = new HashSet();
+        Collection<PCRect> instances = new HashSet<>();
         instances.add(instance);
         pm.retrieveAll(instances, true);
         checkBothLoaded(ASSERTION_FAILED, instance);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectByIdNoValidationInstanceNotInCache.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectByIdNoValidationInstanceNotInCache.java
index abac27e3..06295610 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectByIdNoValidationInstanceNotInCache.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectByIdNoValidationInstanceNotInCache.java
@@ -69,7 +69,7 @@ public class GetObjectByIdNoValidationInstanceNotInCache extends PersistenceMana
             if ( curr == HOLLOW ||
                  curr == PERSISTENT_NONTRANSACTIONAL ||
                  curr == PERSISTENT_CLEAN ) {
-                ; // expected result
+                // expected result
             } 
             else {
                 fail(ASSERTION_FAILED,
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClass.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClass.java
index 55570be9..42f64982 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClass.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClass.java
@@ -77,7 +77,7 @@ public class GetObjectIdClass extends PersistenceManagerTest {
 
     /** */
     private void runTestGetObjectIdClassForNull(PersistenceManager pm) {
-        Class cl = pm.getObjectIdClass(null);
+        Class<?> cl = pm.getObjectIdClass(null);
         if (cl != null) {
             fail(ASSERTION_FAILED,
                  "pm.getObjectIdClass for null returned non-null class: " +
@@ -87,7 +87,7 @@ public class GetObjectIdClass extends PersistenceManagerTest {
 
     /** */
     private void runTestGetObjectIdClassForNonPCClass(PersistenceManager pm) {
-        Class cl = pm.getObjectIdClass(java.lang.Throwable.class);
+        Class<?> cl = pm.getObjectIdClass(java.lang.Throwable.class);
         if (cl != null) {
             fail(ASSERTION_FAILED,
                  "pm.getObjectIdClass for non-PC class returned non-null class: " +
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClassForAbstractOrNonPersistenceCapableClass.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClassForAbstractOrNonPersistenceCapableClass.java
index 5ce58303..7bcfcc2c 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClassForAbstractOrNonPersistenceCapableClass.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdClassForAbstractOrNonPersistenceCapableClass.java
@@ -60,7 +60,7 @@ public class GetObjectIdClassForAbstractOrNonPersistenceCapableClass extends Per
     
     /** */
     private void runTestNonPcClass(PersistenceManager pm) {
-        Class c1 = pm.getObjectIdClass(Point.class);
+        Class<?> c1 = pm.getObjectIdClass(Point.class);
         if ( c1 != null) {
             fail(ASSERTION_FAILED,
                  "pm.getObjectIdClass returns non-null ObjectId class for non pc class");
@@ -69,7 +69,7 @@ public class GetObjectIdClassForAbstractOrNonPersistenceCapableClass extends Per
 
     /** */
     private void runTestNullParam(PersistenceManager pm) {
-        Class c1 = pm.getObjectIdClass(null);
+        Class<?> c1 = pm.getObjectIdClass(null);
         if (c1 != null) {
             fail(ASSERTION_FAILED,
                  "pm.getObjectIdClass for null returned non-null class: " +
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdForPersistentInterface.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdForPersistentInterface.java
index 08a63400..95a09bc6 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdForPersistentInterface.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectIdForPersistentInterface.java
@@ -25,7 +25,6 @@ import javax.jdo.identity.LongIdentity;
 
 import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
 
-import org.apache.jdo.tck.pc.company.Company;
 import org.apache.jdo.tck.pc.company.ICompany;
 import org.apache.jdo.tck.pc.company.PICompany;
 
@@ -60,6 +59,7 @@ public class GetObjectIdForPersistentInterface extends PersistenceManagerTest {
         BatchTestRunner.run(GetObjectIdForPersistentInterface.class);
     }
 
+    @Override
     public void localSetUp() {
         addTearDownClass(PICompany.class);
     }
@@ -74,7 +74,7 @@ public class GetObjectIdForPersistentInterface extends PersistenceManagerTest {
         }
         pm = getPM();
         Transaction tx = pm.currentTransaction();
-        ICompany icompany = (ICompany)pm.newInstance(PICompany.class);
+        ICompany icompany = pm.newInstance(PICompany.class);
         icompany.setCompanyid(1001);
         icompany.setName("GooTube");
         icompany.setFounded(new Date());
@@ -84,7 +84,7 @@ public class GetObjectIdForPersistentInterface extends PersistenceManagerTest {
         LongIdentity ioid = (LongIdentity)pm.getObjectId(icompany);
         tx.commit();
 
-        Class pICompanyOidTargetClass = ioid.getTargetClass();
+        Class<?> pICompanyOidTargetClass = ioid.getTargetClass();
         if (pICompanyOidTargetClass != PICompany.class) 
             appendMessage(ASSERTION_FAILED +
                  " getObjectId(icompany) should return interface class.\n" +
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java
index c4332bed..9d006047 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java
@@ -65,12 +65,12 @@ public class GetObjectsById extends JDO_Test {
     private static final int NUMBER_OF_INSTANCES = 50;
 
     /** Persistent instances */
-    private final Collection instanceCollection = 
-            new ArrayList(NUMBER_OF_INSTANCES);
+    private final Collection<PCPoint> instanceCollection =
+            new ArrayList<>(NUMBER_OF_INSTANCES);
 
     /** Object ids */
-    private final Collection oidCollection =
-            new ArrayList(NUMBER_OF_INSTANCES);
+    private final Collection<Object> oidCollection =
+            new ArrayList<>(NUMBER_OF_INSTANCES);
 
     /** Persistent instances */
     private final Object[] instanceArray = 
@@ -96,7 +96,7 @@ public class GetObjectsById extends JDO_Test {
     protected void localSetUp() {
         addTearDownClass(PCPoint.class);
         getPM().currentTransaction().begin();
-        Object instance;
+        PCPoint instance;
         Object oid;
         instanceCollection.clear();
         oidCollection.clear();
@@ -113,9 +113,10 @@ public class GetObjectsById extends JDO_Test {
     }
     
     /** */
+    @SuppressWarnings("unchecked")
     public void testCollection() {
         getPM().currentTransaction().begin();
-        Collection result = pm.getObjectsById(oidCollection);
+        Collection<PCPoint> result = pm.getObjectsById(oidCollection);
         pm.currentTransaction().commit();
         checkResultCollection("after getObjectsById(Collection)", 
                 result);
@@ -123,9 +124,10 @@ public class GetObjectsById extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void testCollectionTrue() {
         getPM().currentTransaction().begin();
-        Collection result = pm.getObjectsById(oidCollection, true);
+        Collection<PCPoint> result = pm.getObjectsById(oidCollection, true);
         pm.currentTransaction().commit();
         checkResultCollection(
                 "after getObjectsById(Collection, true)", 
@@ -134,9 +136,10 @@ public class GetObjectsById extends JDO_Test {
     }
 
     /** */
+    @SuppressWarnings("unchecked")
     public void testCollectionFalse() {
         getPM().currentTransaction().begin();
-        Collection result = pm.getObjectsById(oidCollection, false);
+        Collection<PCPoint> result = pm.getObjectsById(oidCollection, false);
         pm.currentTransaction().commit();
         checkResultCollection(
                 "after getObjectsById(Collection, false)", 
@@ -172,9 +175,9 @@ public class GetObjectsById extends JDO_Test {
     }
 
     /** Check the results of getObjectsById */
-    private void checkResultCollection(String location, Collection instances) {
-        Iterator expected = instanceCollection.iterator();
-        Iterator actual = instances.iterator();
+    private void checkResultCollection(String location, Collection<PCPoint> instances) {
+        Iterator<PCPoint> expected = instanceCollection.iterator();
+        Iterator<PCPoint> actual = instances.iterator();
         for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
             checkIdentity(ASSERTION_FAILED + location + ", position " + i,
                     expected.next(), actual.next());
@@ -208,7 +211,7 @@ public class GetObjectsById extends JDO_Test {
     }
 
     /** Check that the iterator has no more elements */
-    private void checkIteratorComplete (String location, Iterator iterator) {
+    private void checkIteratorComplete (String location, Iterator<PCPoint> iterator) {
         if (iterator.hasNext()) {
             appendMessage(location + 
                     "result iterator has more elements than expected.");
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalAllFails.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalAllFails.java
index bd1a6311..c016aab1 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalAllFails.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalAllFails.java
@@ -18,6 +18,7 @@
 package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
@@ -116,7 +117,7 @@ public class MakeNontransactionalAllFails extends PersistenceManagerTest {
             pm.makePersistent(p3);
             pm.makePersistent(p4);
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
             col1.add(p4);
@@ -151,7 +152,7 @@ public class MakeNontransactionalAllFails extends PersistenceManagerTest {
             pm.makePersistent(p3);
             pm.makePersistent(p4);
             
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
             col1.add(p4);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalDirtyInstance.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalDirtyInstance.java
index cbf57073..bc6703ad 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalDirtyInstance.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalDirtyInstance.java
@@ -19,7 +19,6 @@ package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
@@ -71,10 +70,10 @@ public class MakeNontransactionalDirtyInstance extends PersistenceManagerTest {
     private PCPoint c6 = null;
     private PCPoint c7 = null;
 
-    private Collection pcol1 = new HashSet();
-    private Collection pcol2 = new HashSet();
-    private Collection ccol1 = new HashSet();
-    private Collection ccol2 = new HashSet();
+    private final Collection<PCPoint> pcol1 = new HashSet<>();
+    private final Collection<PCPoint> pcol2 = new HashSet<>();
+    private final Collection<PCPoint> ccol1 = new HashSet<>();
+    private final Collection<PCPoint> ccol2 = new HashSet<>();
 
     /** */
     public void testMakeNontransactional() {
@@ -202,7 +201,8 @@ public class MakeNontransactionalDirtyInstance extends PersistenceManagerTest {
     }
 
     /** */
-    private void runTestMakeNontransactionalDirtyInstanceAll1(PersistenceManager pm, Collection tcol, String state) {
+    private void runTestMakeNontransactionalDirtyInstanceAll1(
+            PersistenceManager pm, Collection<PCPoint> tcol, String state) {
         Transaction tx = pm.currentTransaction();
         boolean stopFlag = false;
         try {
@@ -211,10 +211,8 @@ public class MakeNontransactionalDirtyInstance extends PersistenceManagerTest {
             int curr;
             tx.begin();
 
-            Iterator iter = tcol.iterator();
-            while (iter.hasNext()) {
-                PCPoint p = (PCPoint) iter.next();
-                if (makeAndTestDirtyInstance(p,state))
+            for (PCPoint p : tcol) {
+                if (makeAndTestDirtyInstance(p, state))
                     stopFlag = true;
             }
 
@@ -239,7 +237,7 @@ public class MakeNontransactionalDirtyInstance extends PersistenceManagerTest {
 
     /** */
     private void runTestMakeNontransactionalDirtyInstanceAll2(PersistenceManager pm, 
-                                                              Collection tcol, 
+                                                              Collection<PCPoint> tcol,
                                                               String state) {
         Transaction tx = pm.currentTransaction();
         boolean stopFlag = false;
@@ -248,10 +246,8 @@ public class MakeNontransactionalDirtyInstance extends PersistenceManagerTest {
                 logger.debug(" ** in testMakeNontransactionalDirtyInstanceAll2()");
             tx.begin();
 
-            Iterator iter = tcol.iterator();
-            while (iter.hasNext()) {
-                PCPoint p = (PCPoint) iter.next();
-                if (makeAndTestDirtyInstance(p,state))
+            for (PCPoint p : tcol) {
+                if (makeAndTestDirtyInstance(p, state))
                     stopFlag = true;
             }
 
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalIsImmediate.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalIsImmediate.java
index 5968b9cd..2c663241 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalIsImmediate.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalIsImmediate.java
@@ -19,7 +19,6 @@ package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -63,8 +62,8 @@ public class MakeNontransactionalIsImmediate extends PersistenceManagerTest {
     private PCPoint p6 = null;
     private PCPoint p7 = null;
 
-    private Collection col1 = new HashSet();
-    private Collection col2 = new HashSet();
+    private final Collection<PCPoint> col1 = new HashSet<>();
+    private final Collection<PCPoint> col2 = new HashSet<>();
 
     /** */
     public void testTransactionalInst() {
@@ -219,12 +218,10 @@ public class MakeNontransactionalIsImmediate extends PersistenceManagerTest {
     }
     
     /** */
-    private boolean navigateAndTestTransientCol (Collection col) {
+    private boolean navigateAndTestTransientCol (Collection<PCPoint> col) {
         boolean noError = true;
-        Iterator iter = col1.iterator();
-        while (iter.hasNext() ) {
-            PCPoint p = (PCPoint) iter.next();
-            if (! testState(p, TRANSIENT, "transient")) {
+        for (PCPoint p : col1) {
+            if (!testState(p, TRANSIENT, "transient")) {
                 noError = false;
             }
         }
@@ -234,9 +231,9 @@ public class MakeNontransactionalIsImmediate extends PersistenceManagerTest {
     /** */
     private boolean navigateAndTestTransientArray (Object[] objArray) {
         boolean noError = true;
-        for (int i=0; i < objArray.length; i++) {
-            PCPoint p = (PCPoint) objArray[i];
-            if (! testState(p, TRANSIENT, "transient")) {
+        for (Object o : objArray) {
+            PCPoint p = (PCPoint) o;
+            if (!testState(p, TRANSIENT, "transient")) {
                 noError = false;
             }
         }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalPersistentCleanInstance.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalPersistentCleanInstance.java
index 63bd66e2..ae8d666e 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalPersistentCleanInstance.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalPersistentCleanInstance.java
@@ -18,7 +18,7 @@
 package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
-import java.util.Iterator;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -64,8 +64,8 @@ public class MakeNontransactionalPersistentCleanInstance
     private PCPoint p6 = null;
     private PCPoint p7 = null;
 
-    private Collection col1 = new java.util.HashSet();
-    private Collection col2 = new java.util.HashSet();
+    private final Collection<PCPoint> col1 = new HashSet<>();
+    private final Collection<PCPoint> col2 = new HashSet<>();
 
     /** */
     public void testTransactionalInstance() {
@@ -168,17 +168,14 @@ public class MakeNontransactionalPersistentCleanInstance
                  makePersistentCleanInstance(p4)) {
                 
                 pm.makeNontransactionalAll(col1);
-                Iterator iter = col1.iterator();
-                while (iter.hasNext() ) {
-                    PCPoint p = (PCPoint) iter.next();
+                for (PCPoint p : col1) {
                     curr = currentState(p);
                     if (curr == HOLLOW ||
-                        curr == PERSISTENT_NONTRANSACTIONAL) {
-                    }
-                    else {
+                            curr == PERSISTENT_NONTRANSACTIONAL) {
+                    } else {
                         fail(ASSERTION_FAILED,
-                             "Expected persistent-nontransactional or hollow; got " + 
-                             getStateOfInstance(p));
+                                "Expected persistent-nontransactional or hollow; got " +
+                                        getStateOfInstance(p));
                     }
                 }
             }
@@ -211,16 +208,15 @@ public class MakeNontransactionalPersistentCleanInstance
                 
                 pm.makeNontransactionalAll(objArray);
 
-                for (int i=0; i < objArray.length; i++) {
-                    PCPoint p = (PCPoint) objArray[i];
+                for (Object o : objArray) {
+                    PCPoint p = (PCPoint) o;
                     curr = currentState(p);
                     if (curr == HOLLOW ||
-                        curr == PERSISTENT_NONTRANSACTIONAL) {
-                    }
-                    else {
+                            curr == PERSISTENT_NONTRANSACTIONAL) {
+                    } else {
                         fail(ASSERTION_FAILED,
-                             "Expected persistent-nontransactional or hollow; got " + 
-                             getStateOfInstance(p));
+                                "Expected persistent-nontransactional or hollow; got " +
+                                        getStateOfInstance(p));
                     }
                 }
             }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalTransientCleanInstance.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalTransientCleanInstance.java
index 39c3301d..127c6dc6 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalTransientCleanInstance.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakeNontransactionalTransientCleanInstance.java
@@ -18,7 +18,7 @@
 package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
-import java.util.Iterator;
+import java.util.HashSet;
 
 import javax.jdo.PersistenceManager;
 import javax.jdo.Transaction;
@@ -60,8 +60,8 @@ public class MakeNontransactionalTransientCleanInstance extends PersistenceManag
     private PCPoint p6 = null;
     private PCPoint p7 = null;
 
-    private Collection col1 = new java.util.HashSet();
-    private Collection col2 = new java.util.HashSet();
+    private final Collection<PCPoint> col1 = new HashSet<>();
+    private final Collection<PCPoint> col2 = new HashSet<>();
 
     /** */
     public void testTransactionalInst() {
@@ -158,16 +158,13 @@ public class MakeNontransactionalTransientCleanInstance extends PersistenceManag
                 testState(p4, TRANSIENT_CLEAN, "transient clean")) {
                 
                 pm.makeNontransactionalAll(col1);
-                Iterator iter = col1.iterator();
-                while (iter.hasNext() ) {
-                    PCPoint p = (PCPoint) iter.next();
+                for (PCPoint p : col1) {
                     if (testState(p, TRANSIENT, "transient")) {
                         // expected result
-                    }
-                    else {
-                    fail(ASSERTION_FAILED, 
-                         "expected transient instance after pm.makeNontransactionalAll, instance is " +
-                         getStateOfInstance(p));
+                    } else {
+                        fail(ASSERTION_FAILED,
+                                "expected transient instance after pm.makeNontransactionalAll, instance is " +
+                                        getStateOfInstance(p));
                     }
                 }
             }
@@ -196,16 +193,15 @@ public class MakeNontransactionalTransientCleanInstance extends PersistenceManag
                 testState(p7, TRANSIENT_CLEAN, "transient clean")) {
                 
                 pm.makeNontransactionalAll(objArray);
-                
-                for (int i=0; i < objArray.length; i++) {
-                    PCPoint p = (PCPoint) objArray[i];
+
+                for (Object o : objArray) {
+                    PCPoint p = (PCPoint) o;
                     if (testState(p, TRANSIENT, "transient")) {
                         // expected result
-                    }
-                    else {
-                        fail(ASSERTION_FAILED, 
-                             "expected transient instance after pm.makeNontransactionalAll, instance is " +
-                             getStateOfInstance(p));
+                    } else {
+                        fail(ASSERTION_FAILED,
+                                "expected transient instance after pm.makeNontransactionalAll, instance is " +
+                                        getStateOfInstance(p));
                     }
                 }
             }
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistent.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistent.java
index 4e4884a8..c974f08d 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistent.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistent.java
@@ -69,6 +69,7 @@ public class MakePersistent extends PersistenceManagerTest {
      * Overrides parent method to avoid querying for classes
      * that may not exist in the schema
      */
+    @Override
     protected void localSetUp() {
         addTearDownClass(PCPoint.class);
     }
@@ -124,7 +125,7 @@ public class MakePersistent extends PersistenceManagerTest {
         try {
             tx.begin();
 
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
             
@@ -146,7 +147,7 @@ public class MakePersistent extends PersistenceManagerTest {
             tx = pm.currentTransaction();
             tx.begin();
             
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p1);
             col1.add(p2);
             
@@ -189,7 +190,7 @@ public class MakePersistent extends PersistenceManagerTest {
         PCPoint np1 = new PCPoint (3,3);
         PCPoint np2 = new PCPoint (4,4);
         
-        Collection col1 = new HashSet();
+        Collection<PCPoint> col1 = new HashSet<>();
         col1.add(np1);
         col1.add(np2);
         
@@ -212,7 +213,7 @@ public class MakePersistent extends PersistenceManagerTest {
         PCPoint np1 = new PCPoint (3,3);
         PCPoint np2 = new PCPoint (4,4);
         
-        Collection col1 = new HashSet();
+        Collection<PCPoint> col1 = new HashSet<>();
         col1.add(np1);
         col1.add(np2);
         
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAllFails.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAllFails.java
index 9c94bf46..88900f56 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAllFails.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAllFails.java
@@ -18,6 +18,7 @@
 package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
@@ -75,7 +76,7 @@ public class MakePersistentAllFails extends PersistenceManagerTest {
            PCPoint np2 = new PCPoint (4,4);
            Point np3 =  new Point (5,5);
            
-           Collection col1 = new java.util.HashSet();
+           Collection<Object> col1 = new HashSet<>();
            col1.add(np1);
            col1.add(np2);
            col1.add(np3);
@@ -107,7 +108,7 @@ public class MakePersistentAllFails extends PersistenceManagerTest {
             PCPoint np2 = new PCPoint (4,4);
             Point np3 =  new Point (5,5);
             
-            Collection col1 = new java.util.HashSet();
+            Collection<Object> col1 = new HashSet<>();
             col1.add(np1);
             col1.add(np2);
             col1.add(np3);
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAssignsObjectId.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAssignsObjectId.java
index 8eb556da..d5f4a398 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAssignsObjectId.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentAssignsObjectId.java
@@ -20,7 +20,6 @@ package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 
 import javax.jdo.Transaction;
 import javax.jdo.PersistenceManager;
@@ -119,22 +118,21 @@ public class MakePersistentAssignsObjectId extends PersistenceManagerTest {
         try {
             tx.begin();
             
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
             col1.add(p3);
             
             pm.makePersistentAll(col1);
 
-            for (Iterator i = col1.iterator(); i.hasNext();) {
-                PCPoint p = (PCPoint)i.next();
+            for (PCPoint p : col1) {
                 if (!testState(p, PERSISTENT_NEW, "persistent_new")) {
                     fail(ASSERTION_FAILED,
-                         "expected P-NEW instance, instance is " + getStateOfInstance(p) + ".");
+                            "expected P-NEW instance, instance is " + getStateOfInstance(p) + ".");
                 }
-                
+
                 if (pm.getObjectId(p) == null) {
                     fail(ASSERTION_FAILED,
-                         "pm.makePersistentAll should assign non-null oid.");
+                            "pm.makePersistentAll should assign non-null oid.");
                 }
             }
             
@@ -154,7 +152,7 @@ public class MakePersistentAssignsObjectId extends PersistenceManagerTest {
             int NUM_OBJS = 2;
             tx.begin();
 
-            Collection col1 = new HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p4);
             col1.add(p5);
             
diff --git a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
index 5a2ced6f..1f4d1c33 100644
--- a/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
+++ b/tck/src/main/java/org/apache/jdo/tck/api/persistencemanager/lifecycle/MakePersistentFailsIfInstanceManagedByAnotherPersistenceManager.java
@@ -19,6 +19,7 @@
 package org.apache.jdo.tck.api.persistencemanager.lifecycle;
 
 import java.util.Collection;
+import java.util.HashSet;
 
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
@@ -135,7 +136,7 @@ public class MakePersistentFailsIfInstanceManagedByAnotherPersistenceManager ext
         try {
             tx.begin();
 
-            Collection col1 = new java.util.HashSet();
+            Collection<PCPoint> col1 = new HashSet<>();
             col1.add(p2);
... 47765 lines suppressed ...