[java-opensaml] branch main updated: IDP-2069 - Null Handling Task

Scott Cantor cantor.2 at osu.edu
Mon Apr 3 18:03:08 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=7fbd82de70cc286ae0b54f370ee288b11756defa

The following commit(s) were added to refs/heads/main by this push:
     new 7fbd82de7 IDP-2069 - Null Handling Task
7fbd82de7 is described below

commit 7fbd82de70cc286ae0b54f370ee288b11756defa
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Apr 3 14:03:05 2023 -0400

    IDP-2069 - Null Handling Task
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Cleaned most tests in xmlsec-impl.
    Add some clarifying comments.
---
 .../core/testing/XMLObjectBaseTestCase.java        |   2 +-
 .../support/DefaultPreDecryptionValidator.java     |   3 +-
 .../KeyAgreementEncryptionConfiguration.java       |  12 +-
 opensaml-xmlsec-impl/pom.xml                       |   5 +
 .../impl/BasicEncryptionParametersResolver.java    |   3 +
 .../DefaultSecurityConfigurationBootstrapTest.java |  31 ++-
 .../encryption/impl/AgreementMethodTest.java       |  12 +-
 .../xmlsec/encryption/impl/CarriedKeyNameTest.java |   6 +-
 .../xmlsec/encryption/impl/CipherDataTest.java     |  12 +-
 .../tests/ChainingEncryptedKeyResolverTest.java    |  20 +-
 .../support/tests/DHWithExplicitKDFTest.java       |  66 +++--
 .../support/tests/DHWithLegacyKDFTest.java         |  57 +++--
 .../xmlsec/encryption/support/tests/ECDHTest.java  |  61 +++--
 .../support/tests/EncryptionClonedContentTest.java |  36 +--
 .../tests/InlineEncryptedKeyResolverTest.java      |  76 +++---
 .../support/tests/SimpleDecryptionTest.java        |  11 +-
 .../support/tests/SimpleEncryptionTest.java        | 211 ++++++++++------
 ...leKeyInfoReferenceEncryptedKeyResolverTest.java |  67 ++---
 ...pleRetrievalMethodEncryptedKeyResolverTest.java |  75 +++---
 .../AbstractSecurityParametersResolverTest.java    |  75 +++---
 .../AlgorithmPolicyConfigurationCriterion.java     |   7 +-
 .../AlgorithmRuntimeSupportedPredicateTest.java    |   6 +-
 .../BasicAlgorithmPolicyConfigurationTest.java     |   8 +-
 .../impl/BasicDecryptionConfigurationTest.java     |   1 +
 .../BasicDecryptionParametersResolverTest.java     |   9 +-
 .../impl/BasicEncryptionConfigurationTest.java     |   4 +-
 .../BasicEncryptionParametersResolverTest.java     | 271 +++++++++++++--------
 .../BasicSignatureSigningConfigurationTest.java    |   4 +-
 ...asicSignatureSigningParametersResolverTest.java |  67 ++---
 .../BasicSignatureValidationConfigurationTest.java |   1 +
 ...cSignatureValidationParametersResolverTest.java |   7 +-
 .../impl/ExcludedAlgorithmsPredicateTest.java      |  14 +-
 .../impl/IncludedAlgorithmsPredicateTest.java      |  17 +-
 .../keyinfo/impl/BasicKeyInfoGeneratorTest.java    |  24 +-
 .../impl/KeyAgreementKeyInfoGeneratorTest.java     | 243 +++++++++++-------
 .../impl/LocalKeyInfoCredentialResolverTest.java   |  35 +--
 .../keyinfo/impl/StaticKeyInfoGeneratorTest.java   |   5 +-
 .../keyinfo/impl/X509KeyInfoGeneratorTest.java     |  76 +++---
 .../xmlsec/keyinfo/tests/KeyInfoSupportTest.java   | 157 ++++++++----
 .../impl/ChainingSignatureTrustEngineTest.java     |  13 +-
 .../impl/ExplicitKeySignatureTrustEngineTest.java  |  49 ++--
 .../support/impl/PKIXSignatureTrustEngineTest.java |  45 ++--
 .../support/tests/DetachedSignatureTest.java       |  16 +-
 .../support/tests/EnvelopedSignatureTest.java      |   6 +-
 .../signature/support/tests/HMACSignatureTest.java |   5 +-
 .../xmlsec/testing/XMLSecurityTestingSupport.java  |   8 +-
 46 files changed, 1159 insertions(+), 780 deletions(-)

diff --git a/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectBaseTestCase.java b/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectBaseTestCase.java
index 328b84aec..2d9bbe8b9 100644
--- a/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectBaseTestCase.java
+++ b/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectBaseTestCase.java
@@ -138,7 +138,7 @@ public abstract class XMLObjectBaseTestCase extends OpenSAMLInitBaseTestCase {
      * 
      * @return the built XMLObject
      */
-    protected <T extends XMLObject> T buildXMLObject(@Nonnull final QName name) {
+    @Nonnull protected <T extends XMLObject> T buildXMLObject(@Nonnull final QName name) {
         final XMLObjectBuilder<T> builder = getBuilder(name);
         if (builder == null) {
             Assert.fail("no builder registered for: " + name);
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
index 670557973..475cd46b1 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/DefaultPreDecryptionValidator.java
@@ -64,4 +64,5 @@ public class DefaultPreDecryptionValidator implements PreDecryptionValidator {
                             encryptedType.getClass().getSimpleName()));
         }
     }
-}
+
+}
\ No newline at end of file
diff --git a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/KeyAgreementEncryptionConfiguration.java b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/KeyAgreementEncryptionConfiguration.java
index d4442f265..28a39e4a6 100644
--- a/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/KeyAgreementEncryptionConfiguration.java
+++ b/opensaml-xmlsec-api/src/main/java/org/opensaml/xmlsec/encryption/support/KeyAgreementEncryptionConfiguration.java
@@ -25,7 +25,6 @@ import javax.annotation.Nullable;
 
 import org.opensaml.xmlsec.agreement.KeyAgreementParameter;
 
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.primitive.StringSupport;
@@ -36,7 +35,7 @@ import net.shibboleth.shared.primitive.StringSupport;
 public class KeyAgreementEncryptionConfiguration {
     
     /** The key agreement algorithm URI. */
-    private String algorithm;
+    @Nullable private String algorithm;
     
     /** The collection of {@link KeyAgreementParameter}. */
     @Nullable private Collection<KeyAgreementParameter> parameters;
@@ -62,10 +61,13 @@ public class KeyAgreementEncryptionConfiguration {
     /**
      * Get the collection of {@link KeyAgreementParameter}.
      * 
-     * @return the collection of parameters
+     * <p>Note that null is a very significant return value here as the calling code
+     * will skip nulls but pick the first non-null result, so an empty collection will
+     * circumvent key agreement.</p>
+     * 
+     * @return the collection of parameters or null if none exist
      */
-    @Nullable @NonnullElements @NotLive @Unmodifiable
-    public Collection<KeyAgreementParameter> getParameters() {
+    @Nullable @NotLive @Unmodifiable public Collection<KeyAgreementParameter> getParameters() {
         return parameters;
     }
 
diff --git a/opensaml-xmlsec-impl/pom.xml b/opensaml-xmlsec-impl/pom.xml
index 9785e5da7..abc788f3f 100644
--- a/opensaml-xmlsec-impl/pom.xml
+++ b/opensaml-xmlsec-impl/pom.xml
@@ -100,6 +100,11 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-support</artifactId>
+            <version>9.0.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <scm>
diff --git a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolver.java b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolver.java
index ef1235262..794ff5a14 100644
--- a/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolver.java
+++ b/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolver.java
@@ -519,6 +519,9 @@ public class BasicEncryptionParametersResolver extends AbstractSecurityParameter
                     .findFirst().orElse(null)
                 );
         
+        // Note this stops on the first non-null collection of parameters, so an empty collection
+        // will "break" it, and the absence of any parameters must be handled with a null.
+        
         config.setParameters(
                 encConfigs.stream()
                     .map(c -> c.getKeyAgreementConfigurations().get(keyType))
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrapTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrapTest.java
index a9d045173..9f302ea09 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrapTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/config/impl/DefaultSecurityConfigurationBootstrapTest.java
@@ -17,11 +17,13 @@
 
 package org.opensaml.xmlsec.config.impl;
 
+import java.util.Collection;
 import java.util.Map;
 import java.util.Properties;
 
 import org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesHolder;
 import org.opensaml.security.crypto.JCAConstants;
+import org.opensaml.xmlsec.agreement.KeyAgreementParameter;
 import org.opensaml.xmlsec.derivation.KeyDerivation;
 import org.opensaml.xmlsec.derivation.impl.ConcatKDF;
 import org.opensaml.xmlsec.derivation.impl.PBKDF2;
@@ -38,7 +40,10 @@ public class DefaultSecurityConfigurationBootstrapTest {
         Assert.assertTrue(kaConfigs.containsKey(JCAConstants.KEY_ALGO_EC));
         
         final KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
-        final KeyDerivation keyDerivation = config.getParameters().stream()
+        final Collection<KeyAgreementParameter> params = config.getParameters();
+        assert params != null;
+        
+        final KeyDerivation keyDerivation = params.stream()
                 .filter(KeyDerivation.class::isInstance)
                 .map(KeyDerivation.class::cast)
                 .findFirst().orElse(null);
@@ -57,7 +62,9 @@ public class DefaultSecurityConfigurationBootstrapTest {
             Assert.assertTrue(kaConfigs.containsKey(JCAConstants.KEY_ALGO_EC));
         
             final KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
-            KeyDerivation keyDerivation = config.getParameters().stream()
+            final Collection<KeyAgreementParameter> params = config.getParameters();
+            assert params != null;
+            final KeyDerivation keyDerivation = params.stream()
                     .filter(KeyDerivation.class::isInstance)
                     .map(KeyDerivation.class::cast)
                     .findFirst().orElse(null);
@@ -72,15 +79,17 @@ public class DefaultSecurityConfigurationBootstrapTest {
     @Test
     public void testECDHPBKDF2() {
         try {
-            Properties props = new Properties();
+            final Properties props = new Properties();
             props.setProperty("opensaml.config.ecdh.defaultKDF", "PBKDF2");
             ThreadLocalConfigurationPropertiesHolder.setProperties(props);
             
-            Map<String, KeyAgreementEncryptionConfiguration> kaConfigs = DefaultSecurityConfigurationBootstrap.buildKeyAgreementConfigurations();
+            final Map<String, KeyAgreementEncryptionConfiguration> kaConfigs = DefaultSecurityConfigurationBootstrap.buildKeyAgreementConfigurations();
             Assert.assertTrue(kaConfigs.containsKey(JCAConstants.KEY_ALGO_EC));
         
-            KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
-            KeyDerivation keyDerivation = config.getParameters().stream()
+            final KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
+            final Collection<KeyAgreementParameter> params = config.getParameters();
+            assert params != null;
+            final KeyDerivation keyDerivation = params.stream()
                     .filter(KeyDerivation.class::isInstance)
                     .map(KeyDerivation.class::cast)
                     .findFirst().orElse(null);
@@ -95,15 +104,17 @@ public class DefaultSecurityConfigurationBootstrapTest {
     @Test
     public void testECDHBadKDF() {
         try {
-            Properties props = new Properties();
+            final Properties props = new Properties();
             props.setProperty("opensaml.config.ecdh.defaultKDF", "BADBADBAD");
             ThreadLocalConfigurationPropertiesHolder.setProperties(props);
             
-            Map<String, KeyAgreementEncryptionConfiguration> kaConfigs = DefaultSecurityConfigurationBootstrap.buildKeyAgreementConfigurations();
+            final Map<String, KeyAgreementEncryptionConfiguration> kaConfigs = DefaultSecurityConfigurationBootstrap.buildKeyAgreementConfigurations();
             Assert.assertTrue(kaConfigs.containsKey(JCAConstants.KEY_ALGO_EC));
         
-            KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
-            KeyDerivation keyDerivation = config.getParameters().stream()
+            final KeyAgreementEncryptionConfiguration config = kaConfigs.get(JCAConstants.KEY_ALGO_EC);
+            final Collection<KeyAgreementParameter> params = config.getParameters();
+            assert params != null;
+            final KeyDerivation keyDerivation = params.stream()
                     .filter(KeyDerivation.class::isInstance)
                     .map(KeyDerivation.class::cast)
                     .findFirst().orElse(null);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/AgreementMethodTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/AgreementMethodTest.java
index 6dd7b343c..99bb81123 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/AgreementMethodTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/AgreementMethodTest.java
@@ -54,9 +54,9 @@ public class AgreementMethodTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testSingleElementUnmarshall() {
-        AgreementMethod am = (AgreementMethod) unmarshallElement(singleElementFile);
+        final AgreementMethod am = (AgreementMethod) unmarshallElement(singleElementFile);
         
-        Assert.assertNotNull(am, "AgreementMethod");
+        assert am != null;
         Assert.assertEquals(am.getAlgorithm(), expectedAlgorithm, "Algorithm attribute");
         Assert.assertNull(am.getKANonce(), "KA-Nonce child element");
         Assert.assertEquals(am.getUnknownXMLObjects().size(), 0, "Unknown children");
@@ -67,9 +67,9 @@ public class AgreementMethodTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testChildElementsUnmarshall() {
-        AgreementMethod am = (AgreementMethod) unmarshallElement(childElementsFile);
+        final AgreementMethod am = (AgreementMethod) unmarshallElement(childElementsFile);
         
-        Assert.assertNotNull(am, "AgreementMethod");
+        assert am != null;
         Assert.assertEquals(am.getAlgorithm(), expectedAlgorithm, "Algorithm attribute");
         Assert.assertNotNull(am.getKANonce(), "KA-Nonce child element");
         Assert.assertEquals(am.getUnknownXMLObjects().size(), expectedNumUnknownChildren, "Unknown children");
@@ -80,7 +80,7 @@ public class AgreementMethodTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testSingleElementMarshall() {
-        AgreementMethod am = (AgreementMethod) buildXMLObject(AgreementMethod.DEFAULT_ELEMENT_NAME);
+        final AgreementMethod am = (AgreementMethod) buildXMLObject(AgreementMethod.DEFAULT_ELEMENT_NAME);
         
         am.setAlgorithm(expectedAlgorithm);
         
@@ -90,7 +90,7 @@ public class AgreementMethodTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testChildElementsMarshall() {
-        AgreementMethod am = (AgreementMethod) buildXMLObject(AgreementMethod.DEFAULT_ELEMENT_NAME);
+        final AgreementMethod am = (AgreementMethod) buildXMLObject(AgreementMethod.DEFAULT_ELEMENT_NAME);
         
         am.setAlgorithm(expectedAlgorithm);
         am.setKANonce((KANonce) buildXMLObject(KANonce.DEFAULT_ELEMENT_NAME));
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CarriedKeyNameTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CarriedKeyNameTest.java
index 11b673ac1..5624a43e8 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CarriedKeyNameTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CarriedKeyNameTest.java
@@ -48,16 +48,16 @@ public class CarriedKeyNameTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testSingleElementUnmarshall() {
-        CarriedKeyName ckn = (CarriedKeyName) unmarshallElement(singleElementFile);
+        final CarriedKeyName ckn = (CarriedKeyName) unmarshallElement(singleElementFile);
         
-        Assert.assertNotNull(ckn, "CarriedKeyName");
+        assert ckn != null;
         Assert.assertEquals(expectedStringContent, ckn.getValue(), "CarriedKeyName value");
     }
 
     /** {@inheritDoc} */
     @Test
     public void testSingleElementMarshall() {
-        CarriedKeyName ckn = (CarriedKeyName) buildXMLObject(CarriedKeyName.DEFAULT_ELEMENT_NAME);
+        final CarriedKeyName ckn = (CarriedKeyName) buildXMLObject(CarriedKeyName.DEFAULT_ELEMENT_NAME);
         ckn.setValue(expectedStringContent);
         
         assertXMLEquals(expectedDOM, ckn);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CipherDataTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CipherDataTest.java
index 5555847b8..4d980c0ae 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CipherDataTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/impl/CipherDataTest.java
@@ -42,9 +42,9 @@ public class CipherDataTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testSingleElementUnmarshall() {
-        CipherData cipherData = (CipherData) unmarshallElement(singleElementFile);
+        final CipherData cipherData = (CipherData) unmarshallElement(singleElementFile);
         
-        Assert.assertNotNull(cipherData, "CipherData");
+        assert cipherData != null;
         Assert.assertNull(cipherData.getCipherValue(), "CipherValue child element");
         Assert.assertNull(cipherData.getCipherReference(), "CipherReference child element");
     }
@@ -52,9 +52,9 @@ public class CipherDataTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testChildElementsUnmarshall() {
-        CipherData cipherData = (CipherData) unmarshallElement(childElementsFile);
+        final CipherData cipherData = (CipherData) unmarshallElement(childElementsFile);
         
-        Assert.assertNotNull(cipherData, "CipherData");
+        assert cipherData != null;
         Assert.assertNotNull(cipherData.getCipherValue(), "CipherValue child element");
         Assert.assertNotNull(cipherData.getCipherReference(), "CipherReference child element");
     }
@@ -62,7 +62,7 @@ public class CipherDataTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testSingleElementMarshall() {
-        CipherData cipherData = (CipherData) buildXMLObject(CipherData.DEFAULT_ELEMENT_NAME);
+        final CipherData cipherData = (CipherData) buildXMLObject(CipherData.DEFAULT_ELEMENT_NAME);
         
         assertXMLEquals(expectedDOM, cipherData);
     }
@@ -70,7 +70,7 @@ public class CipherDataTest extends XMLObjectProviderBaseTestCase {
     /** {@inheritDoc} */
     @Test
     public void testChildElementsMarshall() {
-        CipherData cipherData = (CipherData) buildXMLObject(CipherData.DEFAULT_ELEMENT_NAME);
+        final CipherData cipherData = (CipherData) buildXMLObject(CipherData.DEFAULT_ELEMENT_NAME);
         
         cipherData.setCipherValue((CipherValue) buildXMLObject(CipherValue.DEFAULT_ELEMENT_NAME));
         cipherData.setCipherReference((CipherReference) buildXMLObject(CipherReference.DEFAULT_ELEMENT_NAME));
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ChainingEncryptedKeyResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ChainingEncryptedKeyResolverTest.java
index 4bf9a2bc7..575e695b9 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ChainingEncryptedKeyResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ChainingEncryptedKeyResolverTest.java
@@ -71,8 +71,8 @@ public class ChainingEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
         final KeyInfo keyInfo = encData.getKeyInfo();
         assert keyInfo != null;
         Assert.assertFalse(keyInfo.getEncryptedKeys().isEmpty());
@@ -95,8 +95,8 @@ public class ChainingEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
         final KeyInfo keyInfo = encData.getKeyInfo();
         assert keyInfo != null;
         Assert.assertFalse(keyInfo.getEncryptedKeys().isEmpty());
@@ -124,8 +124,8 @@ public class ChainingEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
         final KeyInfo keyInfo = encData.getKeyInfo();
         assert keyInfo != null;
         Assert.assertTrue(keyInfo.getEncryptedKeys().isEmpty());
@@ -153,8 +153,8 @@ public class ChainingEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
         final KeyInfo keyInfo = encData.getKeyInfo();
         assert keyInfo != null;
         Assert.assertFalse(keyInfo.getEncryptedKeys().isEmpty());
@@ -183,8 +183,8 @@ public class ChainingEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
         final KeyInfo keyInfo = encData.getKeyInfo();
         assert keyInfo != null;
         Assert.assertFalse(keyInfo.getEncryptedKeys().isEmpty());
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithExplicitKDFTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithExplicitKDFTest.java
index 611c348f0..ef01c213d 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithExplicitKDFTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithExplicitKDFTest.java
@@ -48,6 +48,8 @@ import org.opensaml.xmlsec.derivation.impl.ConcatKDF;
 import org.opensaml.xmlsec.derivation.impl.PBKDF2;
 import org.opensaml.xmlsec.encryption.AgreementMethod;
 import org.opensaml.xmlsec.encryption.EncryptedData;
+import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.encryption.EncryptionMethod;
 import org.opensaml.xmlsec.encryption.KeyDerivationMethod;
 import org.opensaml.xmlsec.encryption.support.DataEncryptionParameters;
 import org.opensaml.xmlsec.encryption.support.Decrypter;
@@ -63,6 +65,7 @@ import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
 import org.opensaml.xmlsec.keyinfo.impl.LocalKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.provider.AgreementMethodKeyInfoProvider;
 import org.opensaml.xmlsec.mock.SignableSimpleXMLObject;
+import org.opensaml.xmlsec.signature.KeyInfo;
 import org.opensaml.xmlsec.testing.XMLSecurityTestingSupport;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
@@ -71,6 +74,7 @@ import org.testng.annotations.Test;
 import org.w3c.dom.Element;
 
 import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.xml.ParserPool;
 import net.shibboleth.shared.xml.SerializeSupport;
 
 @SuppressWarnings("javadoc")
@@ -188,33 +192,46 @@ public class DHWithExplicitKDFTest extends XMLObjectBaseTestCase {
     
     private void testRoundtrip(String expectedDataAlgo, String expectedKEKAlgo, String expectedKDFAlgo) throws Exception {
         // Encrypt
-        SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxoOrig != null;
         
-        EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
-        Assert.assertNotNull(encParams);
+        final EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
+        assert encParams != null;
         
-        DataEncryptionParameters dataEncParams = new DataEncryptionParameters(encParams);
-        List<KeyEncryptionParameters> kekParams = encParams.getKeyTransportEncryptionCredential() != null ?
+        final DataEncryptionParameters dataEncParams = new DataEncryptionParameters(encParams);
+        final List<KeyEncryptionParameters> kekParams = encParams.getKeyTransportEncryptionCredential() != null ?
                 List.of(new KeyEncryptionParameters(encParams, null)) : Collections.emptyList();
         
-        EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
+        final EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
         Assert.assertNotNull(encryptedDataOrig);
         Assert.assertNotNull(encryptedDataOrig.getKeyInfo());
         
         if (expectedDataAlgo != null) {
-            Assert.assertEquals(encryptedDataOrig.getEncryptionMethod().getAlgorithm(), expectedDataAlgo);
+            final EncryptionMethod method = encryptedDataOrig.getEncryptionMethod(); 
+            assert method != null;
+            Assert.assertEquals(method.getAlgorithm(), expectedDataAlgo);
         }
+
+        final KeyInfo encKeyInfo = encryptedDataOrig.getKeyInfo();
+        assert encKeyInfo != null;
         
         if (expectedKEKAlgo != null) {
-            Assert.assertNotNull(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0));
-            Assert.assertEquals(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getEncryptionMethod().getAlgorithm(), expectedKEKAlgo);
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final EncryptionMethod nestedMethod = ekey.getEncryptionMethod();
+            assert nestedMethod != null;
+            Assert.assertEquals(nestedMethod.getAlgorithm(), expectedKEKAlgo);
         }
         
-        AgreementMethod agreementMethod = null;
-        if (!encryptedDataOrig.getKeyInfo().getEncryptedKeys().isEmpty())  {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getKeyInfo().getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod;
+        if (!encKeyInfo.getEncryptedKeys().isEmpty())  {
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final KeyInfo nestedKeyInfo = ekey.getKeyInfo();
+            assert nestedKeyInfo != null;
+            agreementMethod = nestedKeyInfo.getAgreementMethods().get(0);
         } else {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getAgreementMethods().get(0);
+            agreementMethod = encKeyInfo.getAgreementMethods().get(0);
         }
         Assert.assertNotNull(agreementMethod);
         Assert.assertEquals(agreementMethod.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYAGREEMENT_DH_EXPLICIT_KDF);
@@ -226,28 +243,31 @@ public class DHWithExplicitKDFTest extends XMLObjectBaseTestCase {
         }
         
         // Serialize out and back in
-        Element domEncrypted = XMLObjectSupport.marshall(encryptedDataOrig);
+        final Element domEncrypted = XMLObjectSupport.marshall(encryptedDataOrig);
         
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         SerializeSupport.writeNode(domEncrypted, baos);
         baos.flush();
-        byte[] bytesEncrypted = baos.toByteArray();
+        final byte[] bytesEncrypted = baos.toByteArray();
         
         ByteArrayInputStream bais = new ByteArrayInputStream(bytesEncrypted);
-        EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(
-                XMLObjectProviderRegistrySupport.getParserPool(), bais);
+        final ParserPool parser = XMLObjectProviderRegistrySupport.getParserPool();
+        assert parser != null;
+        final EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(parser, bais);
         Assert.assertNotNull(encryptedData);
         
         // Decrypt
-        DecryptionParameters decryptParams = decryptParamsResolver.resolveSingle(decryptCriteria);
+        final DecryptionParameters decryptParams = decryptParamsResolver.resolveSingle(decryptCriteria);
         
-        Decrypter decrypter = new Decrypter(decryptParams);
+        final Decrypter decrypter = new Decrypter(decryptParams);
         
-        XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
+        final XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
         Assert.assertNotNull(decryptedXMLObject);
         Assert.assertTrue(decryptedXMLObject instanceof SignableSimpleXMLObject);
         
-        assertXMLEquals(sxoOrig.getDOM().getOwnerDocument(), decryptedXMLObject);
+        final Element origDOM = sxoOrig.getDOM();
+        assert origDOM != null;
+        assertXMLEquals(origDOM.getOwnerDocument(), decryptedXMLObject);
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithLegacyKDFTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithLegacyKDFTest.java
index a1e1564df..2ac37ffb8 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithLegacyKDFTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/DHWithLegacyKDFTest.java
@@ -48,6 +48,8 @@ import org.opensaml.xmlsec.criterion.DecryptionConfigurationCriterion;
 import org.opensaml.xmlsec.criterion.EncryptionConfigurationCriterion;
 import org.opensaml.xmlsec.encryption.AgreementMethod;
 import org.opensaml.xmlsec.encryption.EncryptedData;
+import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.encryption.EncryptionMethod;
 import org.opensaml.xmlsec.encryption.support.DataEncryptionParameters;
 import org.opensaml.xmlsec.encryption.support.Decrypter;
 import org.opensaml.xmlsec.encryption.support.Encrypter;
@@ -62,6 +64,7 @@ import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
 import org.opensaml.xmlsec.keyinfo.impl.LocalKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.provider.AgreementMethodKeyInfoProvider;
 import org.opensaml.xmlsec.mock.SignableSimpleXMLObject;
+import org.opensaml.xmlsec.signature.KeyInfo;
 import org.opensaml.xmlsec.signature.support.SignatureConstants;
 import org.opensaml.xmlsec.testing.XMLSecurityTestingSupport;
 import org.testng.Assert;
@@ -72,6 +75,7 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.xml.ParserPool;
 import net.shibboleth.shared.xml.SerializeSupport;
 
 @SuppressWarnings("javadoc")
@@ -185,33 +189,45 @@ public class DHWithLegacyKDFTest extends XMLObjectBaseTestCase {
     
     private void testRoundtrip(String expectedDataAlgo, String expectedKEKAlgo, String expectedDigestMethod, boolean nonceExpected) throws Exception {
         // Encrypt
-        SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxoOrig != null;
         
-        EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
-        Assert.assertNotNull(encParams);
+        final EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
+        assert encParams != null;
         
-        DataEncryptionParameters dataEncParams = new DataEncryptionParameters(encParams);
-        List<KeyEncryptionParameters> kekParams = encParams.getKeyTransportEncryptionCredential() != null ?
+        final DataEncryptionParameters dataEncParams = new DataEncryptionParameters(encParams);
+        final List<KeyEncryptionParameters> kekParams = encParams.getKeyTransportEncryptionCredential() != null ?
                 List.of(new KeyEncryptionParameters(encParams, null)) : Collections.emptyList();
         
-        EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
+        final EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
         Assert.assertNotNull(encryptedDataOrig);
-        Assert.assertNotNull(encryptedDataOrig.getKeyInfo());
+
+        final KeyInfo encKeyInfo = encryptedDataOrig.getKeyInfo();
+        assert encKeyInfo != null;
         
         if (expectedDataAlgo != null) {
-            Assert.assertEquals(encryptedDataOrig.getEncryptionMethod().getAlgorithm(), expectedDataAlgo);
+            final EncryptionMethod method = encryptedDataOrig.getEncryptionMethod(); 
+            assert method != null;
+            Assert.assertEquals(method.getAlgorithm(), expectedDataAlgo);
         }
         
         if (expectedKEKAlgo != null) {
-            Assert.assertNotNull(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0));
-            Assert.assertEquals(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getEncryptionMethod().getAlgorithm(), expectedKEKAlgo);
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final EncryptionMethod nestedMethod = ekey.getEncryptionMethod();
+            assert nestedMethod != null;
+            Assert.assertEquals(nestedMethod.getAlgorithm(), expectedKEKAlgo);
         }
         
-        AgreementMethod agreementMethod = null;
-        if (!encryptedDataOrig.getKeyInfo().getEncryptedKeys().isEmpty())  {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getKeyInfo().getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod;
+        if (!encKeyInfo.getEncryptedKeys().isEmpty())  {
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final KeyInfo nestedKeyInfo = ekey.getKeyInfo();
+            assert nestedKeyInfo != null;
+            agreementMethod = nestedKeyInfo.getAgreementMethods().get(0);
         } else {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getAgreementMethods().get(0);
+            agreementMethod = encKeyInfo.getAgreementMethods().get(0);
         }
         Assert.assertNotNull(agreementMethod);
         Assert.assertEquals(agreementMethod.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYAGREEMENT_DH);
@@ -226,7 +242,7 @@ public class DHWithLegacyKDFTest extends XMLObjectBaseTestCase {
         
         org.opensaml.xmlsec.encryption.KANonce nonce = agreementMethod.getKANonce();
         if (nonceExpected) {
-            Assert.assertNotNull(nonce);
+            assert nonce != null;
             Assert.assertNotNull(nonce.getValue());
         } else {
             Assert.assertNull(nonce);
@@ -240,9 +256,10 @@ public class DHWithLegacyKDFTest extends XMLObjectBaseTestCase {
         baos.flush();
         byte[] bytesEncrypted = baos.toByteArray();
         
-        ByteArrayInputStream bais = new ByteArrayInputStream(bytesEncrypted);
-        EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(
-                XMLObjectProviderRegistrySupport.getParserPool(), bais);
+        final ByteArrayInputStream bais = new ByteArrayInputStream(bytesEncrypted);
+        final ParserPool parser = XMLObjectProviderRegistrySupport.getParserPool();
+        assert parser != null;
+        final EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(parser, bais);
         Assert.assertNotNull(encryptedData);
         
         // Decrypt
@@ -254,7 +271,9 @@ public class DHWithLegacyKDFTest extends XMLObjectBaseTestCase {
         Assert.assertNotNull(decryptedXMLObject);
         Assert.assertTrue(decryptedXMLObject instanceof SignableSimpleXMLObject);
         
-        assertXMLEquals(sxoOrig.getDOM().getOwnerDocument(), decryptedXMLObject);
+        final Element origDOM = sxoOrig.getDOM();
+        assert origDOM != null;
+        assertXMLEquals(origDOM.getOwnerDocument(), decryptedXMLObject);
     }
 
 }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ECDHTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ECDHTest.java
index 601ad3918..5d16b5052 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ECDHTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/ECDHTest.java
@@ -47,6 +47,8 @@ import org.opensaml.xmlsec.criterion.EncryptionConfigurationCriterion;
 import org.opensaml.xmlsec.derivation.impl.PBKDF2;
 import org.opensaml.xmlsec.encryption.AgreementMethod;
 import org.opensaml.xmlsec.encryption.EncryptedData;
+import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.encryption.EncryptionMethod;
 import org.opensaml.xmlsec.encryption.KeyDerivationMethod;
 import org.opensaml.xmlsec.encryption.support.DataEncryptionParameters;
 import org.opensaml.xmlsec.encryption.support.Decrypter;
@@ -62,6 +64,7 @@ import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
 import org.opensaml.xmlsec.keyinfo.impl.LocalKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.provider.AgreementMethodKeyInfoProvider;
 import org.opensaml.xmlsec.mock.SignableSimpleXMLObject;
+import org.opensaml.xmlsec.signature.KeyInfo;
 import org.opensaml.xmlsec.testing.XMLSecurityTestingSupport;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
@@ -70,6 +73,7 @@ import org.testng.annotations.Test;
 import org.w3c.dom.Element;
 
 import net.shibboleth.shared.resolver.CriteriaSet;
+import net.shibboleth.shared.xml.ParserPool;
 import net.shibboleth.shared.xml.SerializeSupport;
 
 @SuppressWarnings("javadoc")
@@ -175,33 +179,45 @@ public class ECDHTest extends XMLObjectBaseTestCase {
     
     private void testRoundtrip(String expectedDataAlgo, String expectedKEKAlgo, String expectedKDFAlgo) throws Exception {
         // Encrypt
-        SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxoOrig = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxoOrig != null;
         
-        EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
+        final EncryptionParameters encParams = encParamsResolver.resolveSingle(encCriteria);
         assert encParams != null;
         
         DataEncryptionParameters dataEncParams = new DataEncryptionParameters(encParams);
         List<KeyEncryptionParameters> kekParams = encParams.getKeyTransportEncryptionCredential() != null ?
                 List.of(new KeyEncryptionParameters(encParams, null)) : Collections.emptyList();
         
-        EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
+        final EncryptedData encryptedDataOrig = encrypter.encryptElement(sxoOrig, dataEncParams, kekParams);
         Assert.assertNotNull(encryptedDataOrig);
-        Assert.assertNotNull(encryptedDataOrig.getKeyInfo());
+
+        final KeyInfo encKeyInfo = encryptedDataOrig.getKeyInfo();
+        assert encKeyInfo != null;
         
         if (expectedDataAlgo != null) {
-            Assert.assertEquals(encryptedDataOrig.getEncryptionMethod().getAlgorithm(), expectedDataAlgo);
+            final EncryptionMethod method = encryptedDataOrig.getEncryptionMethod(); 
+            assert method != null;
+            Assert.assertEquals(method.getAlgorithm(), expectedDataAlgo);
         }
         
         if (expectedKEKAlgo != null) {
-            Assert.assertNotNull(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0));
-            Assert.assertEquals(encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getEncryptionMethod().getAlgorithm(), expectedKEKAlgo);
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final EncryptionMethod nestedMethod = ekey.getEncryptionMethod();
+            assert nestedMethod != null;
+            Assert.assertEquals(nestedMethod.getAlgorithm(), expectedKEKAlgo);
         }
         
-        AgreementMethod agreementMethod = null;
-        if (!encryptedDataOrig.getKeyInfo().getEncryptedKeys().isEmpty())  {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getEncryptedKeys().get(0).getKeyInfo().getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod;
+        if (!encKeyInfo.getEncryptedKeys().isEmpty())  {
+            final EncryptedKey ekey = encKeyInfo.getEncryptedKeys().get(0);
+            assert ekey != null;
+            final KeyInfo nestedKeyInfo = ekey.getKeyInfo();
+            assert nestedKeyInfo != null;
+            agreementMethod = nestedKeyInfo.getAgreementMethods().get(0);
         } else {
-            agreementMethod = encryptedDataOrig.getKeyInfo().getAgreementMethods().get(0);
+            agreementMethod = encKeyInfo.getAgreementMethods().get(0);
         }
         Assert.assertNotNull(agreementMethod);
         Assert.assertEquals(agreementMethod.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYAGREEMENT_ECDH_ES);
@@ -213,28 +229,31 @@ public class ECDHTest extends XMLObjectBaseTestCase {
         }
         
         // Serialize out and back in
-        Element domEncrypted = XMLObjectSupport.marshall(encryptedDataOrig);
+        final Element domEncrypted = XMLObjectSupport.marshall(encryptedDataOrig);
         
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         SerializeSupport.writeNode(domEncrypted, baos);
         baos.flush();
-        byte[] bytesEncrypted = baos.toByteArray();
+        final byte[] bytesEncrypted = baos.toByteArray();
         
-        ByteArrayInputStream bais = new ByteArrayInputStream(bytesEncrypted);
-        EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(
-                XMLObjectProviderRegistrySupport.getParserPool(), bais);
+        final ByteArrayInputStream bais = new ByteArrayInputStream(bytesEncrypted);
+        final ParserPool parser = XMLObjectProviderRegistrySupport.getParserPool();
+        assert parser != null;
+        final EncryptedData encryptedData = (EncryptedData) XMLObjectSupport.unmarshallFromInputStream(parser, bais);
         Assert.assertNotNull(encryptedData);
         
         // Decrypt
-        DecryptionParameters decryptParams = decryptParamsResolver.resolveSingle(decryptCriteria);
+        final DecryptionParameters decryptParams = decryptParamsResolver.resolveSingle(decryptCriteria);
         
-        Decrypter decrypter = new Decrypter(decryptParams);
+        final Decrypter decrypter = new Decrypter(decryptParams);
         
-        XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
+        final XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
         Assert.assertNotNull(decryptedXMLObject);
         Assert.assertTrue(decryptedXMLObject instanceof SignableSimpleXMLObject);
         
-        assertXMLEquals(sxoOrig.getDOM().getOwnerDocument(), decryptedXMLObject);
+        final Element origDOM = sxoOrig.getDOM();
+        assert origDOM != null;
+        assertXMLEquals(origDOM.getOwnerDocument(), decryptedXMLObject);
     }
 
 }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/EncryptionClonedContentTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/EncryptionClonedContentTest.java
index b1929ed53..d934bfb21 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/EncryptionClonedContentTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/EncryptionClonedContentTest.java
@@ -17,12 +17,15 @@
 
 package org.opensaml.xmlsec.encryption.support.tests;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.util.XMLObjectSupport;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
 import org.opensaml.xmlsec.encryption.EncryptedData;
+import org.opensaml.xmlsec.encryption.EncryptionMethod;
 import org.opensaml.xmlsec.encryption.support.DataEncryptionParameters;
 import org.opensaml.xmlsec.encryption.support.Decrypter;
 import org.opensaml.xmlsec.encryption.support.Encrypter;
@@ -31,46 +34,51 @@ import org.opensaml.xmlsec.keyinfo.impl.StaticKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.mock.SignableSimpleXMLObject;
 import org.testng.Assert;
 import org.testng.annotations.Test;
+import org.w3c.dom.Element;
 
 @SuppressWarnings("javadoc")
 public class EncryptionClonedContentTest extends XMLObjectBaseTestCase {
     
     private String targetFile;
     
-    private String algoURI = EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128;
+    @Nonnull private final String algoURI = EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128;
     
     public EncryptionClonedContentTest() {
-        super();
-        
         targetFile = "/org/opensaml/xmlsec/encryption/support/SimpleEncryptionTest.xml";
     }
 
     @Test
     public void testEncryptDecrypt() throws Exception {
-            SignableSimpleXMLObject origXMLObject = (SignableSimpleXMLObject) unmarshallElement(targetFile);
-            SignableSimpleXMLObject clonedXMLObject = XMLObjectSupport.cloneXMLObject(origXMLObject);
+            final SignableSimpleXMLObject origXMLObject = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+            assert origXMLObject != null;
+            final SignableSimpleXMLObject clonedXMLObject = XMLObjectSupport.cloneXMLObject(origXMLObject);
             
-            Credential encCred = AlgorithmSupport.generateSymmetricKeyAndCredential(algoURI);
+            final Credential encCred = AlgorithmSupport.generateSymmetricKeyAndCredential(algoURI);
             
-            DataEncryptionParameters encParams = new DataEncryptionParameters();
+            final DataEncryptionParameters encParams = new DataEncryptionParameters();
             encParams.setAlgorithm(algoURI);
             encParams.setEncryptionCredential(encCred);
             
             Encrypter encrypter = new Encrypter();
             
-            EncryptedData encryptedData = encrypter.encryptElement(clonedXMLObject, encParams);
-            
+            final EncryptedData encryptedData = encrypter.encryptElement(clonedXMLObject, encParams);
             Assert.assertNotNull(encryptedData);
-            Assert.assertEquals(encryptedData.getEncryptionMethod().getAlgorithm(), algoURI);
             
-            StaticKeyInfoCredentialResolver dataKeyInfoResolver = new StaticKeyInfoCredentialResolver(encCred);
+            final EncryptionMethod method = encryptedData.getEncryptionMethod();
+            assert method != null;
+            Assert.assertEquals(method.getAlgorithm(), algoURI);
             
-            Decrypter decrypter = new Decrypter(dataKeyInfoResolver, null, null);
+            final StaticKeyInfoCredentialResolver dataKeyInfoResolver = new StaticKeyInfoCredentialResolver(encCred);
             
-            XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
+            final Decrypter decrypter = new Decrypter(dataKeyInfoResolver, null, null);
+            
+            final XMLObject decryptedXMLObject = decrypter.decryptData(encryptedData);
             
             Assert.assertNotNull(decryptedXMLObject);
             Assert.assertTrue(decryptedXMLObject instanceof SignableSimpleXMLObject);
-            assertXMLEquals(origXMLObject.getDOM().getOwnerDocument(), decryptedXMLObject);
+            
+            final Element origDOM = origXMLObject.getDOM();
+            assert origDOM != null;
+            assertXMLEquals(origDOM.getOwnerDocument(), decryptedXMLObject);
     }
 }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/InlineEncryptedKeyResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/InlineEncryptedKeyResolverTest.java
index 9b3ca1759..3eb7f592d 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/InlineEncryptedKeyResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/InlineEncryptedKeyResolverTest.java
@@ -26,11 +26,14 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.xmlsec.encryption.EncryptedData;
 import org.opensaml.xmlsec.encryption.EncryptedKey;
 import org.opensaml.xmlsec.encryption.support.EncryptedKeyResolver;
 import org.opensaml.xmlsec.encryption.support.InlineEncryptedKeyResolver;
+import org.opensaml.xmlsec.signature.KeyInfo;
 
 /**
  * Test the inline encrypted key resolver.
@@ -43,17 +46,18 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
     /** No recipients specified to resolver, one inline EncryptedKey in instance. */
     @Test
     public void  testSingleEKNoRecipients() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver();
         
-        List<EncryptedKey> resolved = generateList(encData, resolver);
+        final List<EncryptedKey> resolved = generateList(encData, resolver);
         Assert.assertEquals(resolved.size(), 1, "Incorrect number of resolved EncryptedKeys found");
         
         Assert.assertTrue(resolved.get(0) == allKeys.get(0), "Unexpected EncryptedKey instance found");
@@ -62,12 +66,13 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
     /** One recipient specified to resolver, one matching inline EncryptedKey in instance. */
     @Test
     public void  testSingleEKOneRecipientWithMatch() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver(Collections.singleton("foo"));
@@ -81,12 +86,13 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
     /** One recipient specified to resolver, zero matching inline EncryptedKey in instance. */
     @Test
     public void  testSingleEKOneRecipientNoMatch() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverSingle.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver(Collections.singleton("bar"));
@@ -98,12 +104,13 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
     /** No recipients specified to resolver. */
     @Test
     public void  testMultiEKNoRecipients() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
-        
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver();
@@ -121,12 +128,13 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
      *  inline EncryptedKey in instance. */
     @Test
     public void  testMultiEKOneRecipientWithMatch() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver(Collections.singleton("foo"));
@@ -141,12 +149,13 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
     /** Multi recipient specified to resolver, several matching inline EncryptedKey in instance. */
     @Test
     public void  testMultiEKOneRecipientWithMatches() {
-        String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
-        EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        final String filename = "/org/opensaml/xmlsec/encryption/support/InlineEncryptedKeyResolverMultiple.xml";
+        final EncryptedData encData = (EncryptedData) unmarshallElement(filename);
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertNotNull(encData.getKeyInfo());
-        List<EncryptedKey> allKeys = encData.getKeyInfo().getEncryptedKeys();
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        final List<EncryptedKey> allKeys = keyInfo.getEncryptedKeys();
         Assert.assertFalse(allKeys.isEmpty());
         
         resolver = new InlineEncryptedKeyResolver(new HashSet<>(Arrays.asList("foo", "baz")));
@@ -166,7 +175,8 @@ public class InlineEncryptedKeyResolverTest extends XMLObjectBaseTestCase {
      * @param ekResolver the resolver to test
      * @return list of resolved EncryptedKeys
      */
-    private List<EncryptedKey> generateList(EncryptedData encData, EncryptedKeyResolver ekResolver) {
+    @Nonnull private List<EncryptedKey> generateList(@Nonnull final EncryptedData encData,
+            @Nonnull final EncryptedKeyResolver ekResolver) {
         List<EncryptedKey> resolved = new ArrayList<>();
         for (EncryptedKey encKey : ekResolver.resolve(encData)) {
             resolved.add(encKey);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleDecryptionTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleDecryptionTest.java
index dc854ec10..ca1dcb01b 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleDecryptionTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleDecryptionTest.java
@@ -34,6 +34,7 @@ import org.opensaml.security.credential.BasicCredential;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.security.testing.SecurityProviderTestSupport;
 import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
+import org.opensaml.xmlsec.encryption.CipherData;
 import org.opensaml.xmlsec.encryption.CipherReference;
 import org.opensaml.xmlsec.encryption.EncryptedData;
 import org.opensaml.xmlsec.encryption.EncryptedKey;
@@ -216,7 +217,9 @@ public class SimpleDecryptionTest extends XMLObjectBaseTestCase {
      */
     @Test(expectedExceptions=DecryptionException.class)
     public void testEncryptedDataWithCipherReference() throws DecryptionException {
-        encryptedData.getCipherData().setCipherReference((CipherReference) XMLObjectSupport.buildXMLObject(CipherReference.DEFAULT_ELEMENT_NAME));
+        final CipherData data = encryptedData.getCipherData();
+        assert data != null;
+        data.setCipherReference((CipherReference) XMLObjectSupport.buildXMLObject(CipherReference.DEFAULT_ELEMENT_NAME));
 
         Decrypter decrypter = new Decrypter(keyResolver, null, null);
         decrypter.decryptData(encryptedData);
@@ -230,9 +233,11 @@ public class SimpleDecryptionTest extends XMLObjectBaseTestCase {
      */
     @Test(expectedExceptions=DecryptionException.class)
     public void testEncryptedKeyWithCipherReference() throws DecryptionException {
-        encryptedKey.getCipherData().setCipherReference((CipherReference) XMLObjectSupport.buildXMLObject(CipherReference.DEFAULT_ELEMENT_NAME));
+        final CipherData data = encryptedKey.getCipherData();
+        assert data != null;
+        data.setCipherReference((CipherReference) XMLObjectSupport.buildXMLObject(CipherReference.DEFAULT_ELEMENT_NAME));
 
-        Decrypter decrypter = new Decrypter(null, kekResolver, null);
+        final Decrypter decrypter = new Decrypter(null, kekResolver, null);
         decrypter.decryptKey(encryptedKey, encURI);
     }
     
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleEncryptionTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleEncryptionTest.java
index 6a138025b..b7c106976 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleEncryptionTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleEncryptionTest.java
@@ -25,6 +25,8 @@ import java.security.NoSuchProviderException;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.security.credential.CredentialSupport;
@@ -33,6 +35,7 @@ import org.opensaml.security.testing.SecurityProviderTestSupport;
 import org.opensaml.xmlsec.algorithm.AlgorithmSupport;
 import org.opensaml.xmlsec.encryption.EncryptedData;
 import org.opensaml.xmlsec.encryption.EncryptedKey;
+import org.opensaml.xmlsec.encryption.EncryptionMethod;
 import org.opensaml.xmlsec.encryption.MGF;
 import org.opensaml.xmlsec.encryption.OAEPparams;
 import org.opensaml.xmlsec.encryption.support.DataEncryptionParameters;
@@ -149,8 +152,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptDataWithKeyNameNoKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
-        
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         encParams.setKeyInfoGenerator(new StaticKeyInfoGenerator(keyInfo));
         
         EncryptedData encData = null;
@@ -159,14 +162,19 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
+
         Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_ELEMENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
-        Assert.assertEquals(encData.getKeyInfo().getKeyNames().get(0).getValue(), expectedKeyName, "KeyName");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+        
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertEquals(keyInfo.getKeyNames().get(0).getValue(), expectedKeyName, "KeyName");
         
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 0, "Number of EncryptedKeys");
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 0, "Number of EncryptedKeys");
     }
     
     /**
@@ -174,7 +182,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptDataSingleKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         kekParamsRSA.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoRSA));
         
@@ -184,14 +193,19 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
-        
-        Assert.assertNotNull(encData);
+        assert encData != null;
+
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
+
         Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_ELEMENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
         
-        List<EncryptedKey> encKeys = encData.getKeyInfo().getEncryptedKeys();
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 1, "Number of EncryptedKeys");
+        List<EncryptedKey> encKeys = keyInfo.getEncryptedKeys();
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 1, "Number of EncryptedKeys");
         checkKEKRSA(encKeys.get(0), true);
     }
     
@@ -200,7 +214,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptDataMultipleKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         kekParamsRSA.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoRSA));
         kekParamsAES.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoAES));
@@ -214,14 +229,19 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
+
         Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_ELEMENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
         
-        List<EncryptedKey> encKeys = encData.getKeyInfo().getEncryptedKeys();
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 2, "Number of EncryptedKeys");
+        List<EncryptedKey> encKeys = keyInfo.getEncryptedKeys();
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 2, "Number of EncryptedKeys");
         checkKEKRSA(encKeys.get(0), true);
         checkKEKAES(encKeys.get(1), true);
     }
@@ -232,7 +252,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptContentWithKeyNameNoKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         encParams.setKeyInfoGenerator(new StaticKeyInfoGenerator(keyInfo));
         
@@ -242,14 +263,19 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
+
         Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_CONTENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
-        Assert.assertEquals(encData.getKeyInfo().getKeyNames().get(0).getValue(), expectedKeyName, "KeyName");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertEquals(keyInfo.getKeyNames().get(0).getValue(), expectedKeyName, "KeyName");
         
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 0, "Number of EncryptedKeys");
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 0, "Number of EncryptedKeys");
     }
     
     /**
@@ -257,7 +283,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptContentSingleKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         kekParamsRSA.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoRSA));
         
@@ -267,14 +294,18 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
+        assert encData != null;
         
-        Assert.assertNotNull(encData);
-        Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_CONTENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
         
-        List<EncryptedKey> encKeys = encData.getKeyInfo().getEncryptedKeys();
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 1, "Number of EncryptedKeys");
+        Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_CONTENT, "Type attribute");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        List<EncryptedKey> encKeys = keyInfo.getEncryptedKeys();
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 1, "Number of EncryptedKeys");
         checkKEKRSA(encKeys.get(0), true);
     }
     
@@ -283,7 +314,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptContentMultipleKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         kekParamsAES.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoAES));
         kekParamsRSA.setKeyInfoGenerator(new StaticKeyInfoGenerator(kekKeyInfoRSA));
@@ -297,14 +329,19 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
+        assert encData != null;
+
+        final EncryptionMethod method = encData.getEncryptionMethod();
+        assert method != null;
         
-        Assert.assertNotNull(encData);
         Assert.assertEquals(encData.getType(), EncryptionConstants.TYPE_CONTENT, "Type attribute");
-        Assert.assertEquals(encData.getEncryptionMethod().getAlgorithm(), algoURI, "Algorithm attribute");
-        Assert.assertNotNull(encData.getKeyInfo(), "KeyInfo");
-        
-        List<EncryptedKey> encKeys = encData.getKeyInfo().getEncryptedKeys();
-        Assert.assertEquals(encData.getKeyInfo().getEncryptedKeys().size(), 2, "Number of EncryptedKeys");
+        Assert.assertEquals(method.getAlgorithm(), algoURI, "Algorithm attribute");
+
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+
+        List<EncryptedKey> encKeys = keyInfo.getEncryptedKeys();
+        Assert.assertEquals(keyInfo.getEncryptedKeys().size(), 2, "Number of EncryptedKeys");
         checkKEKRSA(encKeys.get(0), true);
         checkKEKAES(encKeys.get(1), true);
     }
@@ -330,9 +367,10 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         Document ownerDocument = parserPool.newDocument();
         try {
             encKey = encrypter.encryptKey(targetKey, kekParamsRSA, ownerDocument);
-        } catch (EncryptionException e) {
+        } catch (final EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
-        } 
+        }
+        assert encKey != null;
         
         checkKEKRSA(encKey, true);
     }
@@ -362,10 +400,11 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
         Document ownerDocument = parserPool.newDocument();
         try {
             encKeys = encrypter.encryptKey(targetKey, kekParamsList, ownerDocument);
-        } catch (EncryptionException e) {
+        } catch (final EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
         }
         
+        assert encKeys != null;
         
         Assert.assertEquals(encKeys.size(), 2, "Number of EncryptedKeys");
         checkKEKAES(encKeys.get(0), true);
@@ -377,7 +416,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testAutoKeyGen() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         encParams.setEncryptionCredential(null);
         
@@ -407,7 +447,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testAutoKeyGenNoKEK() {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         encParams.setEncryptionCredential(null);
         
@@ -454,13 +495,14 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
             encKey = encrypter.encryptKey(targetKey, kekParamsRSA, ownerDocument);
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
-        } 
+        }
+        assert encKey != null;
         
-        Assert.assertFalse(encKey.getEncryptionMethod().getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).isEmpty(),
+        final EncryptionMethod method = encKey.getEncryptionMethod();
+        assert method != null;
+        Assert.assertFalse(method.getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).isEmpty(),
                 "EncryptedKey/EncryptionMethod/DigestMethod list was empty");
-        DigestMethod dm = 
-                (DigestMethod) encKey.getEncryptionMethod()
-                .getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).get(0);
+        final DigestMethod dm = (DigestMethod) method.getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).get(0);
         Assert.assertEquals(dm.getAlgorithm(), 
                 SignatureConstants.ALGO_ID_DIGEST_SHA1, "DigestMethod algorithm URI had unexpected value");
     }
@@ -479,7 +521,7 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
     public void testEncryptKeyDigestMethodsRSAv15() throws NoSuchAlgorithmException, NoSuchProviderException, 
             XMLParserException, KeyException {
         
-        Key targetKey = AlgorithmSupport.generateSymmetricKey(algoURI);
+        final Key targetKey = AlgorithmSupport.generateSymmetricKey(algoURI);
         
         kekParamsRSA.setAlgorithm(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
         
@@ -489,9 +531,12 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
             encKey = encrypter.encryptKey(targetKey, kekParamsRSA, ownerDocument);
         } catch (EncryptionException e) {
             Assert.fail("Object encryption failed: " + e);
-        } 
+        }
+        assert encKey != null;
         
-        Assert.assertTrue(encKey.getEncryptionMethod().getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).isEmpty(),
+        final EncryptionMethod method = encKey.getEncryptionMethod();
+        assert method != null;
+        Assert.assertTrue(method.getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME).isEmpty(),
                 "EncryptedKey/EncryptionMethod/DigestMethod list was NOT empty");
     }
     
@@ -503,7 +548,8 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testEncryptDataBadKEKDSA() throws NoSuchAlgorithmException, NoSuchProviderException {
-        SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        final SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) unmarshallElement(targetFile);
+        assert sxo != null;
         
         KeyEncryptionParameters kekParamsDSA = new KeyEncryptionParameters();
         KeyPair kp = KeySupport.generateKeyPair("DSA", 1024, null);
@@ -611,17 +657,22 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      * @param encKey EncryptedKey to test
      * @param hasKeyInfo flag indicating expectation of KeyInfo presence
      */
-    private void checkKEKAES(EncryptedKey encKey, boolean hasKeyInfo) {
-        Assert.assertNotNull(encKey, "EncryptedKey was null");
-        Assert.assertEquals(encKey.getEncryptionMethod().getAlgorithm(), kekURIAES, "Algorithm attribute");
+    private void checkKEKAES(@Nonnull final EncryptedKey encKey, boolean hasKeyInfo) {
+        
+        final EncryptionMethod method = encKey.getEncryptionMethod();
+        assert method != null;
+        
+        Assert.assertEquals(method.getAlgorithm(), kekURIAES, "Algorithm attribute");
         Assert.assertEquals(encKey.getRecipient(), expectedRecipientAES, "Recipient attribute");
-        if (! hasKeyInfo) {
+        if (!hasKeyInfo) {
             Assert.assertNull(encKey.getKeyInfo(), "Unexpected KeyInfo was present");
             return;
         }
-        Assert.assertNotNull(encKey.getKeyInfo(), "KeyInfo was not present");
-        Assert.assertNotNull(encKey.getKeyInfo().getKeyNames().get(0), "KeyName was not present");
-        Assert.assertEquals(encKey.getKeyInfo().getKeyNames().get(0).getValue(), expectedKEKKeyNameAES, 
+        
+        final KeyInfo keyInfo = encKey.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertNotNull(keyInfo.getKeyNames().get(0), "KeyName was not present");
+        Assert.assertEquals(keyInfo.getKeyNames().get(0).getValue(), expectedKEKKeyNameAES, 
                 "Unexpected KEK KeyName");
     }
  
@@ -631,38 +682,52 @@ public class SimpleEncryptionTest extends XMLObjectBaseTestCase {
      * @param encKey EncryptedKey to test
      * @param hasKeyInfo flag indicating expectation of KeyInfo presence
      */
-    private void checkKEKRSA(EncryptedKey encKey, boolean hasKeyInfo) {
-        Assert.assertNotNull(encKey, "EncryptedKey was null");
-        Assert.assertEquals(encKey.getEncryptionMethod().getAlgorithm(), kekURIRSA, "Algorithm attribute");
+    private void checkKEKRSA(@Nonnull final EncryptedKey encKey, boolean hasKeyInfo) {
+        
+        final EncryptionMethod method = encKey.getEncryptionMethod();
+        assert method != null;
+
+        Assert.assertEquals(method.getAlgorithm(), kekURIRSA, "Algorithm attribute");
         Assert.assertEquals(encKey.getRecipient(), expectedRecipientRSA, "Recipient attribute");
         if (! hasKeyInfo) {
             Assert.assertNull(encKey.getKeyInfo(), "Unexpected KeyInfo was present");
             return;
         }
-        Assert.assertNotNull(encKey.getKeyInfo(), "KeyInfo was not present");
-        Assert.assertNotNull(encKey.getKeyInfo().getKeyNames().get(0), "KeyName was not present");
-        Assert.assertEquals(encKey.getKeyInfo().getKeyNames().get(0).getValue(), expectedKEKKeyNameRSA, 
+
+        final KeyInfo keyInfo = encKey.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertNotNull(keyInfo.getKeyNames().get(0), "KeyName was not present");
+        Assert.assertEquals(keyInfo.getKeyNames().get(0).getValue(), expectedKEKKeyNameRSA, 
                 "Unexpected KEK KeyName");
     }
     
-    private String getDigestMethod(EncryptedKey encryptedKey) {
-        List<XMLObject> digestMethods = encryptedKey.getEncryptionMethod().getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME);
+    private String getDigestMethod(@Nonnull final EncryptedKey encryptedKey) {
+        final EncryptionMethod method = encryptedKey.getEncryptionMethod();
+        assert method != null;
+
+        final List<XMLObject> digestMethods = method.getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME);
         if (digestMethods != null && digestMethods.size() > 0) { 
             return ((DigestMethod)digestMethods.get(0)).getAlgorithm();
         }
         return null;
     }
     
-    private String getMGF(EncryptedKey encryptedKey) {
-        List<XMLObject> mgfs = encryptedKey.getEncryptionMethod().getUnknownXMLObjects(MGF.DEFAULT_ELEMENT_NAME);
+    private String getMGF(@Nonnull final EncryptedKey encryptedKey) {
+        final EncryptionMethod method = encryptedKey.getEncryptionMethod();
+        assert method != null;
+
+        final List<XMLObject> mgfs = method.getUnknownXMLObjects(MGF.DEFAULT_ELEMENT_NAME);
         if (mgfs != null && mgfs.size() > 0) {
             return ((MGF)mgfs.get(0)).getAlgorithm();
         }
         return null;
     }
     
-    private String getOAEPParams(EncryptedKey encryptedKey) {
-        OAEPparams params = encryptedKey.getEncryptionMethod().getOAEPparams();
+    private String getOAEPParams(@Nonnull final EncryptedKey encryptedKey) {
+        final EncryptionMethod method = encryptedKey.getEncryptionMethod();
+        assert method != null;
+
+        final OAEPparams params = method.getOAEPparams();
         if (params != null) {
             return params.getValue();
         }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleKeyInfoReferenceEncryptedKeyResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleKeyInfoReferenceEncryptedKeyResolverTest.java
index b08b8034b..89d241706 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleKeyInfoReferenceEncryptedKeyResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleKeyInfoReferenceEncryptedKeyResolverTest.java
@@ -23,6 +23,8 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.EncryptedData;
@@ -46,16 +48,17 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
     /** No recipients specified to resolver, one EncryptedKey in instance. */
     @Test
     public void testSingleEKNoRecipient() {
-        String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverSingle.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverSingle.xml";
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getXMLObjects(KeyInfoReference.DEFAULT_ELEMENT_NAME).isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getXMLObjects(KeyInfoReference.DEFAULT_ELEMENT_NAME).isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -71,16 +74,17 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
     /** One recipient specified to resolver, one EncryptedKey in instance. */
     @Test
     public void testSingleEKWithRecipient() {
-        String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverSingle.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverSingle.xml";
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getXMLObjects(KeyInfoReference.DEFAULT_ELEMENT_NAME).isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getXMLObjects(KeyInfoReference.DEFAULT_ELEMENT_NAME).isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -96,16 +100,17 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
     /** One recipient specified to resolver, three EncryptedKeys in instance, two KeyInfoReference references. */
     @Test
     public void testMultiEKWithOneRecipient() {
-        String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverMultiple.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverMultiple.xml";
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getKeyInfoReferences().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getKeyInfoReferences().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -124,16 +129,17 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
      */
     @Test
     public void testMultiEKWithTwoRecipients() {
-        String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverMultiple.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleKeyInfoReferenceEncryptedKeyResolverMultiple.xml";
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getKeyInfoReferences().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getKeyInfoReferences().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -153,7 +159,7 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
      * @param sxo the mock object to process
      * @return a list of EncryptedKey elements
      */
-    private List<EncryptedKey> getEncryptedKeys(SignableSimpleXMLObject sxo) {
+    @Nonnull private List<EncryptedKey> getEncryptedKeys(@Nonnull final SignableSimpleXMLObject sxo) {
         List<EncryptedKey> allKeys = new ArrayList<>();
         for (XMLObject xmlObject : sxo.getUnknownXMLObjects()) {
            if (xmlObject instanceof KeyInfo)  {
@@ -170,7 +176,8 @@ public class SimpleKeyInfoReferenceEncryptedKeyResolverTest extends XMLObjectBas
      * @param ekResolver the resolver to test
      * @return list of resolved EncryptedKeys
      */
-    private List<EncryptedKey> generateList(EncryptedData encData, EncryptedKeyResolver ekResolver) {
+    @Nonnull private List<EncryptedKey> generateList(@Nonnull final EncryptedData encData,
+            @Nonnull final EncryptedKeyResolver ekResolver) {
         List<EncryptedKey> resolved = new ArrayList<>();
         for (EncryptedKey encKey : ekResolver.resolve(encData)) {
             resolved.add(encKey);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleRetrievalMethodEncryptedKeyResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleRetrievalMethodEncryptedKeyResolverTest.java
index 9c555c10b..df2583447 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleRetrievalMethodEncryptedKeyResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/encryption/support/tests/SimpleRetrievalMethodEncryptedKeyResolverTest.java
@@ -26,6 +26,8 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.xmlsec.encryption.EncryptedData;
@@ -33,6 +35,7 @@ import org.opensaml.xmlsec.encryption.EncryptedKey;
 import org.opensaml.xmlsec.encryption.support.EncryptedKeyResolver;
 import org.opensaml.xmlsec.encryption.support.SimpleRetrievalMethodEncryptedKeyResolver;
 import org.opensaml.xmlsec.mock.SignableSimpleXMLObject;
+import org.opensaml.xmlsec.signature.KeyInfo;
 
 /**
  * Test the encrypted key resolver which dereferences RetrievalMethods.
@@ -45,16 +48,17 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
     /** No recipients specified to resolver, one EncryptedKey in instance. */
     @Test
     public void testSingleEKNoRecipient() {
-        String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverSingle.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverSingle.xml";
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getRetrievalMethods().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getRetrievalMethods().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -71,15 +75,16 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
     @Test
     public void testSingleEKWithRecipient() {
         String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverSingle.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getRetrievalMethods().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getRetrievalMethods().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -97,15 +102,16 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
     public void testSingleEKWithTransform() {
         String filename =  
             "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverSingleWithTransforms.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getRetrievalMethods().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getRetrievalMethods().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -121,15 +127,16 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
     @Test
     public void testMultiEKWithOneRecipient() {
         String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverMultiple.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getRetrievalMethods().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getRetrievalMethods().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -147,15 +154,16 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
     @Test
     public void testMultiEKWithTwoRecipients() {
         String filename =  "/org/opensaml/xmlsec/encryption/support/SimpleRetrievalMethodEncryptedKeyResolverMultiple.xml";
-        SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
-        Assert.assertNotNull(sxo);
+        final SignableSimpleXMLObject sxo =  (SignableSimpleXMLObject) unmarshallElement(filename);
+        assert sxo != null;
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0));
         Assert.assertNotNull(sxo.getSimpleXMLObjects().get(0).getEncryptedData());
         
-        EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
-        
-        Assert.assertNotNull(encData.getKeyInfo());
-        Assert.assertFalse(encData.getKeyInfo().getRetrievalMethods().isEmpty());
+        final EncryptedData encData = sxo.getSimpleXMLObjects().get(0).getEncryptedData();
+        assert encData != null;
+        final KeyInfo keyInfo = encData.getKeyInfo();
+        assert keyInfo != null;
+        Assert.assertFalse(keyInfo.getRetrievalMethods().isEmpty());
         
         List<EncryptedKey> allKeys = getEncryptedKeys(sxo);
         Assert.assertFalse(allKeys.isEmpty());
@@ -175,7 +183,7 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
      * @param sxo the mock object to process
      * @return a list of EncryptedKey elements
      */
-    private List<EncryptedKey> getEncryptedKeys(SignableSimpleXMLObject sxo) {
+    @Nonnull private List<EncryptedKey> getEncryptedKeys(@Nonnull final SignableSimpleXMLObject sxo) {
         List<EncryptedKey> allKeys = new ArrayList<>();
         for (XMLObject xmlObject : sxo.getUnknownXMLObjects()) {
            if (xmlObject instanceof EncryptedKey)  {
@@ -192,7 +200,8 @@ public class SimpleRetrievalMethodEncryptedKeyResolverTest extends XMLObjectBase
      * @param ekResolver the resolver to test
      * @return list of resolved EncryptedKeys
      */
-    private List<EncryptedKey> generateList(EncryptedData encData, EncryptedKeyResolver ekResolver) {
+    @Nonnull private List<EncryptedKey> generateList(@Nonnull final EncryptedData encData,
+            @Nonnull final EncryptedKeyResolver ekResolver) {
         List<EncryptedKey> resolved = new ArrayList<>();
         for (EncryptedKey encKey : ekResolver.resolve(encData)) {
             resolved.add(encKey);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AbstractSecurityParametersResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AbstractSecurityParametersResolverTest.java
index 95e723be2..9b3ef73e9 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AbstractSecurityParametersResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AbstractSecurityParametersResolverTest.java
@@ -23,9 +23,7 @@ import java.security.KeyPair;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 import java.util.function.Predicate;
 
@@ -33,7 +31,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
 
@@ -54,6 +52,7 @@ import org.testng.annotations.Test;
  * Test various aspects of the {@link AbstractSecurityParametersResolver} so don't have to test
  * them in all the individual subclasses.
  */
+ at SuppressWarnings("javadoc")
 public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCase {
     
     private DummyParametersResolver resolver;
@@ -85,13 +84,14 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setExcludedAlgorithms(set1);
         config2.setExcludedAlgorithms(set2);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        HashSet<String> control = new HashSet<>();
+        final HashSet<String> control = new HashSet<>();
         control.addAll(set1);
         control.addAll(set2);
         
-        assertTrue(params.getIncludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getIncludedAlgorithms().equals(CollectionSupport.emptySet()));
         assertTrue(params.getExcludedAlgorithms().equals(control));
     }
     
@@ -101,9 +101,10 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setExcludeMerge(false);
         config2.setExcludedAlgorithms(set2);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertTrue(params.getIncludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getIncludedAlgorithms().equals(CollectionSupport.emptySet()));
         assertTrue(params.getExcludedAlgorithms().equals(set1));
     }
     
@@ -113,13 +114,14 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setExcludeMerge(true);
         config2.setExcludedAlgorithms(set2);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         HashSet<String> control = new HashSet<>();
         control.addAll(set1);
         control.addAll(set2);
         
-        assertTrue(params.getIncludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getIncludedAlgorithms().equals(CollectionSupport.emptySet()));
         assertTrue(params.getExcludedAlgorithms().equals(control));
     }
     
@@ -130,13 +132,14 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config2.setExcludeMerge(true);
         config3.setExcludedAlgorithms(set3);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         HashSet<String> control = new HashSet<>();
         control.addAll(set1);
         control.addAll(set3);
         
-        assertTrue(params.getIncludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getIncludedAlgorithms().equals(CollectionSupport.emptySet()));
         assertTrue(params.getExcludedAlgorithms().equals(control));
     }
     
@@ -145,10 +148,11 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setIncludedAlgorithms(set1);
         config2.setIncludedAlgorithms(set2);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         assertTrue(params.getIncludedAlgorithms().equals(set1));
-        assertTrue(params.getExcludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getExcludedAlgorithms().equals(CollectionSupport.emptySet()));
     }
     
     @Test
@@ -157,14 +161,15 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setIncludeMerge(true);
         config2.setIncludedAlgorithms(set2);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         HashSet<String> control = new HashSet<>();
         control.addAll(set1);
         control.addAll(set2);
         
         assertTrue(params.getIncludedAlgorithms().equals(control));
-        assertTrue(params.getExcludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getExcludedAlgorithms().equals(CollectionSupport.emptySet()));
     }
     
     @Test
@@ -174,14 +179,15 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config2.setIncludeMerge(true);
         config3.setIncludedAlgorithms(set3);
         
-        AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        final AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         HashSet<String> control = new HashSet<>();
         control.addAll(set1);
         control.addAll(set3);
         
         assertTrue(params.getIncludedAlgorithms().equals(control));
-        assertTrue(params.getExcludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getExcludedAlgorithms().equals(CollectionSupport.emptySet()));
     }
     
     @Test
@@ -192,15 +198,17 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         config1.setIncludeExcludePrecedence(Precedence.INCLUDE);
         
         AlgorithmPolicyParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         assertTrue(params.getIncludedAlgorithms().equals(set1));
-        assertTrue(params.getExcludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getExcludedAlgorithms().equals(CollectionSupport.emptySet()));
         
         config1.setIncludeExcludePrecedence(Precedence.EXCLUDE);
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertTrue(params.getIncludedAlgorithms().equals(Collections.emptySet()));
+        assertTrue(params.getIncludedAlgorithms().equals(CollectionSupport.emptySet()));
         assertTrue(params.getExcludedAlgorithms().equals(set2));
     }
 
@@ -214,7 +222,7 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         
         config1.setIncludeExcludePrecedence(Precedence.INCLUDE);
         
-        predicate = resolver.resolveIncludeExcludePredicate(criteriaSet, List.of(config1, config2, config3));
+        predicate = resolver.resolveIncludeExcludePredicate(criteriaSet, CollectionSupport.listOf(config1, config2, config3));
         
         // Note: Have effective whitelist based on set1
         
@@ -232,7 +240,7 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         
         config1.setIncludeExcludePrecedence(Precedence.EXCLUDE);
         
-        predicate = resolver.resolveIncludeExcludePredicate(criteriaSet, List.of(config1, config2, config3));
+        predicate = resolver.resolveIncludeExcludePredicate(criteriaSet, CollectionSupport.listOf(config1, config2, config3));
         
         // Note: Have effective blacklist based on set2
         
@@ -383,13 +391,6 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
         
         assertNull(resolver.lookupKeyInfoGenerator(cred, null, null));
         assertNull(resolver.lookupKeyInfoGenerator(cred, null, "test"));
-        
-        try {
-            resolver.lookupKeyInfoGenerator(null, manager, "test");
-            fail("Null credential should have thrown");
-        } catch (ConstraintViolationException e) {
-            // expected
-        }
     }
     
     
@@ -400,20 +401,22 @@ public class AbstractSecurityParametersResolverTest extends XMLObjectBaseTestCas
 
         /** {@inheritDoc} */
         @Nonnull
-        public Iterable<AlgorithmPolicyParameters> resolve(CriteriaSet criteria) throws ResolverException {
-            AlgorithmPolicyParameters params = resolveSingle(criteria);
+        public Iterable<AlgorithmPolicyParameters> resolve(@Nullable final CriteriaSet criteria) throws ResolverException {
+            final AlgorithmPolicyParameters params = resolveSingle(criteria);
             if (params != null) {
-                return Collections.singletonList(params);
+                return CollectionSupport.singletonList(params);
             }
-            return Collections.emptyList();
+            return CollectionSupport.emptyList();
         }
 
         /** {@inheritDoc} */
         @Nullable
-        public AlgorithmPolicyParameters resolveSingle(CriteriaSet criteria) throws ResolverException {
-            AlgorithmPolicyParameters params = new AlgorithmPolicyParameters();
+        public AlgorithmPolicyParameters resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
+            
+            assert criteria != null;
+            final AlgorithmPolicyParameters params = new AlgorithmPolicyParameters();
             resolveAndPopulateIncludesExcludes(params, criteria, 
-                    criteria.get(AlgorithmPolicyConfigurationCriterion.class).getConfigurations());
+                    Constraint.isNotNull(criteria.get(AlgorithmPolicyConfigurationCriterion.class), "Criterion").getConfigurations());
             return params;
         }
         
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmPolicyConfigurationCriterion.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmPolicyConfigurationCriterion.java
index 5c41ee9e8..e23f06f73 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmPolicyConfigurationCriterion.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmPolicyConfigurationCriterion.java
@@ -25,6 +25,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.resolver.Criterion;
 
@@ -37,7 +38,7 @@ import org.opensaml.xmlsec.AlgorithmPolicyConfiguration;
 public class AlgorithmPolicyConfigurationCriterion implements Criterion {
     
     /** The list of configuration instances. */
-    private List<AlgorithmPolicyConfiguration> configs;
+    @Nonnull private List<AlgorithmPolicyConfiguration> configs;
     
     /**
      * Constructor.
@@ -46,7 +47,7 @@ public class AlgorithmPolicyConfigurationCriterion implements Criterion {
      */
     public AlgorithmPolicyConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty
             final List<AlgorithmPolicyConfiguration> configurations) {
-        configs = List.copyOf(Constraint.isNotNull(configurations, "List of configurations may not be null"));
+        configs = CollectionSupport.copyToList(Constraint.isNotNull(configurations, "List of configurations may not be null"));
         Constraint.isNotEmpty(configs, "At least one configuration is required");
         
     }
@@ -58,7 +59,7 @@ public class AlgorithmPolicyConfigurationCriterion implements Criterion {
      */
     public AlgorithmPolicyConfigurationCriterion(@Nonnull @NonnullElements @NotEmpty
             final AlgorithmPolicyConfiguration... configurations) {
-        configs = List.of(Constraint.isNotNull(configurations, "List of configurations may not be null"));
+        configs = CollectionSupport.listOf(Constraint.isNotNull(configurations, "List of configurations may not be null"));
         Constraint.isNotEmpty(configs, "At least one configuration is required");
     }
     
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmRuntimeSupportedPredicateTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmRuntimeSupportedPredicateTest.java
index 9f97447ed..a6eeae2d9 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmRuntimeSupportedPredicateTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/AlgorithmRuntimeSupportedPredicateTest.java
@@ -59,8 +59,7 @@ public class AlgorithmRuntimeSupportedPredicateTest extends OpenSAMLInitBaseTest
     
     @Test(dataProvider = "loadBCTestData")
     public void testCommon(boolean loadBC) throws InitializationException {
-        AlgorithmRegistry originalRegistry = AlgorithmSupport.getGlobalAlgorithmRegistry();
-        Assert.assertNotNull(originalRegistry);
+        final AlgorithmRegistry originalRegistry = AlgorithmSupport.ensureGlobalAlgorithmRegistry();
         
         if (loadBC) {
             providerSupport.loadBC();
@@ -95,8 +94,7 @@ public class AlgorithmRuntimeSupportedPredicateTest extends OpenSAMLInitBaseTest
     
     @Test(dataProvider = "loadBCTestData")
     public void testConditional(boolean loadBC) throws InitializationException {
-        AlgorithmRegistry originalRegistry = AlgorithmSupport.getGlobalAlgorithmRegistry();
-        Assert.assertNotNull(originalRegistry);
+        final AlgorithmRegistry originalRegistry = AlgorithmSupport.ensureGlobalAlgorithmRegistry();
         
         if (loadBC) {
             providerSupport.loadBC();
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicAlgorithmPolicyConfigurationTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicAlgorithmPolicyConfigurationTest.java
index 9bbf8bbcc..f9753c18e 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicAlgorithmPolicyConfigurationTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicAlgorithmPolicyConfigurationTest.java
@@ -28,6 +28,7 @@ import org.testng.annotations.Test;
 
 import net.shibboleth.shared.logic.ConstraintViolationException;
 
+ at SuppressWarnings("javadoc")
 public class BasicAlgorithmPolicyConfigurationTest {
     
     private BasicAlgorithmPolicyConfiguration config;
@@ -132,9 +133,4 @@ public class BasicAlgorithmPolicyConfigurationTest {
         assertEquals(config.getIncludeExcludePrecedence(), Precedence.EXCLUDE);
     }
     
-    @Test(expectedExceptions=ConstraintViolationException.class)
-    public void testNullPrecedence() {
-        config.setIncludeExcludePrecedence(null);
-    }
-    
-}
+}
\ No newline at end of file
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionConfigurationTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionConfigurationTest.java
index 1ed43b33c..0e40340aa 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionConfigurationTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionConfigurationTest.java
@@ -28,6 +28,7 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+ at SuppressWarnings("javadoc")
 public class BasicDecryptionConfigurationTest {
     
     private BasicDecryptionConfiguration config;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionParametersResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionParametersResolverTest.java
index 7df9d707d..bff6b8a43 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionParametersResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicDecryptionParametersResolverTest.java
@@ -38,9 +38,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class BasicDecryptionParametersResolverTest {
     
     private BasicDecryptionParametersResolver resolver;
@@ -191,9 +189,8 @@ public class BasicDecryptionParametersResolverTest {
         config1.setKEKKeyInfoCredentialResolver(controlKeyInfoResolver1);
         config1.setEncryptedKeyResolver(controlEncKeyResolver1);
         
-        DecryptionParameters params = resolver.resolveSingle(criteriaSet);
-        
-        Assert.assertNotNull(params);
+        final DecryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         Assert.assertTrue(params.getDataKeyInfoCredentialResolver() == controlKeyInfoResolver1);
         Assert.assertTrue(params.getKEKKeyInfoCredentialResolver() == controlKeyInfoResolver1);
         Assert.assertTrue(params.getEncryptedKeyResolver() == controlEncKeyResolver1);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionConfigurationTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionConfigurationTest.java
index 4b68c425a..967157fb1 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionConfigurationTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionConfigurationTest.java
@@ -37,9 +37,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class BasicEncryptionConfigurationTest {
     
     private BasicEncryptionConfiguration config;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolverTest.java
index 0e7fc28c5..a98cc5289 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicEncryptionParametersResolverTest.java
@@ -25,16 +25,16 @@ import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
 import java.security.spec.ECGenParameterSpec;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.annotation.Nullable;
 import javax.crypto.SecretKey;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.ConstraintViolationException;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
@@ -47,6 +47,7 @@ import org.opensaml.security.crypto.KeySupport;
 import org.opensaml.xmlsec.EncryptionParameters;
 import org.opensaml.xmlsec.KeyTransportAlgorithmPredicate;
 import org.opensaml.xmlsec.agreement.KeyAgreementCredential;
+import org.opensaml.xmlsec.agreement.KeyAgreementParameter;
 import org.opensaml.xmlsec.criterion.EncryptionConfigurationCriterion;
 import org.opensaml.xmlsec.criterion.KeyInfoGenerationProfileCriterion;
 import org.opensaml.xmlsec.derivation.impl.ConcatKDF;
@@ -65,9 +66,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase {
     
     private BasicEncryptionParametersResolver resolver;
@@ -126,7 +125,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         config3 = new BasicEncryptionConfiguration();
         
         // Set these as defaults on the last config in the chain, just so don't have to set in every test.
-        config3.setDataEncryptionAlgorithms(List.of(
+        config3.setDataEncryptionAlgorithms(CollectionSupport.listOf(
                 defaultAES128DataAlgo,
                 defaultAES192DataAlgo,
                 defaultAES256DataAlgo,
@@ -135,7 +134,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
                 EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES192_GCM,
                 EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256_GCM
                 ));
-        config3.setKeyTransportEncryptionAlgorithms(List.of(
+        config3.setKeyTransportEncryptionAlgorithms(CollectionSupport.listOf(
                 defaultRSAKeyTransportAlgo, 
                 EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15,
                 EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11,
@@ -151,8 +150,8 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         concatKDF.setAlgorithmID("00");
         concatKDF.setPartyUInfo("00");
         concatKDF.setPartyVInfo("00");
-        ecConfig.setParameters(Set.of(concatKDF));
-        config3.setKeyAgreementConfigurations(Map.of("EC", ecConfig));
+        ecConfig.setParameters(CollectionSupport.singletonList(concatKDF));
+        config3.setKeyAgreementConfigurations(CollectionSupport.singletonMap("EC", ecConfig));
         
         BasicKeyInfoGeneratorFactory basicFactory1 = new BasicKeyInfoGeneratorFactory();
         X509KeyInfoGeneratorFactory x509Factory1 = new X509KeyInfoGeneratorFactory();
@@ -181,9 +180,9 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     public void testBasicRSA() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(rsaCred1));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), defaultRSAKeyTransportAlgo);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -200,9 +199,9 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         config2.setDataEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256));
         config2.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -215,11 +214,11 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     @Test
     public void testRSAWithBlacklist() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(rsaCred1));
-        config1.setExcludedAlgorithms(List.of(defaultRSAKeyTransportAlgo, defaultAES128DataAlgo, defaultAES192DataAlgo));
+        config1.setExcludedAlgorithms(CollectionSupport.listOf(defaultRSAKeyTransportAlgo, defaultAES128DataAlgo, defaultAES192DataAlgo));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -232,11 +231,11 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     @Test
     public void testRSAWithWhitelist() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(rsaCred1));
-        config1.setIncludedAlgorithms(List.of(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15));
+        config1.setIncludedAlgorithms(CollectionSupport.listOf(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -252,16 +251,19 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         resolver.setAutoGenerateDataEncryptionCredential(true);
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), defaultRSAKeyTransportAlgo);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
         
-        assertNotNull(params.getDataEncryptionCredential());
-        assertNotNull(params.getDataEncryptionCredential().getSecretKey());
-        assertEquals(KeySupport.getKeyLength(params.getDataEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+        final Credential dataCred = params.getDataEncryptionCredential();
+        assert dataCred != null;
+        
+        final SecretKey skey = dataCred.getSecretKey();
+        assert skey != null;
+        assertEquals(KeySupport.getKeyLength(skey), 128);
         assertEquals(params.getDataEncryptionAlgorithm(), defaultAES128DataAlgo);
         assertNotNull(params.getDataKeyInfoGenerator());
     }
@@ -274,32 +276,41 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         // Shouldn't resolve since not RSA OAEP
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15));
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         assertNull(params.getRSAOAEPParameters());
         
         // Should resolve an empty instance
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP));
         params = resolver.resolveSingle(criteriaSet);
-        assertNotNull(params.getRSAOAEPParameters());
-        assertTrue(params.getRSAOAEPParameters().isEmpty());
+        assert params != null;
+        
+        RSAOAEPParameters oaep = params.getRSAOAEPParameters();
+        assert oaep != null;
+        assertTrue(oaep.isEmpty());
         
         // Should resolve full set of values from config3
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP));
         config3.setRSAOAEPParameters(new RSAOAEPParameters(SignatureConstants.ALGO_ID_DIGEST_SHA1, EncryptionConstants.ALGO_ID_MGF1_SHA1, "dummy-oaep-params-3"));
         params = resolver.resolveSingle(criteriaSet);
-        assertNotNull(params.getRSAOAEPParameters());
-        assertEquals(params.getRSAOAEPParameters().getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA1);
-        assertEquals(params.getRSAOAEPParameters().getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA1);
-        assertEquals(params.getRSAOAEPParameters().getOAEPParams(), "dummy-oaep-params-3");
+        assert params != null;
+        oaep = params.getRSAOAEPParameters();
+        assert oaep != null;
+        assertEquals(oaep.getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA1);
+        assertEquals(oaep.getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA1);
+        assertEquals(oaep.getOAEPParams(), "dummy-oaep-params-3");
         
         // Should resolve digest and mgf from config2, OAEPParams from config3 (merged)
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11));
         config2.setRSAOAEPParameters(new RSAOAEPParameters(SignatureConstants.ALGO_ID_DIGEST_SHA256, EncryptionConstants.ALGO_ID_MGF1_SHA256, null));
         config3.setRSAOAEPParameters(new RSAOAEPParameters(SignatureConstants.ALGO_ID_DIGEST_SHA1, EncryptionConstants.ALGO_ID_MGF1_SHA1, "dummy-oaep-params-3"));
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
+        oaep = params.getRSAOAEPParameters();
+        assert oaep != null;
         assertNotNull(params.getRSAOAEPParameters());
-        assertEquals(params.getRSAOAEPParameters().getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA256);
-        assertEquals(params.getRSAOAEPParameters().getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA256);
-        assertEquals(params.getRSAOAEPParameters().getOAEPParams(), "dummy-oaep-params-3");
+        assertEquals(oaep.getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA256);
+        assertEquals(oaep.getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA256);
+        assertEquals(oaep.getOAEPParams(), "dummy-oaep-params-3");
         
         // Should resolve digest from config1, and mgf from config2 (merged), but with no merging from config3 
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11));
@@ -308,10 +319,13 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         config2.setRSAOAEPParametersMerge(false);
         config3.setRSAOAEPParameters(new RSAOAEPParameters(SignatureConstants.ALGO_ID_DIGEST_SHA1, EncryptionConstants.ALGO_ID_MGF1_SHA1, "dummy-oaep-params-3"));
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
+        oaep = params.getRSAOAEPParameters();
+        assert oaep != null;
         assertNotNull(params.getRSAOAEPParameters());
-        assertEquals(params.getRSAOAEPParameters().getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
-        assertEquals(params.getRSAOAEPParameters().getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA256);
-        assertNull(params.getRSAOAEPParameters().getOAEPParams());
+        assertEquals(oaep.getDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
+        assertEquals(oaep.getMaskGenerationFunction(), EncryptionConstants.ALGO_ID_MGF1_SHA256);
+        assertNull(oaep.getOAEPParams());
         
         // Should resolve empty instance based on config1 only, with no merging
         config1.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11));
@@ -319,26 +333,32 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         config1.setRSAOAEPParametersMerge(false);
         config2.setRSAOAEPParameters(new RSAOAEPParameters(SignatureConstants.ALGO_ID_DIGEST_SHA256, EncryptionConstants.ALGO_ID_MGF1_SHA256, "dummy-oaep-params2"));
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
+        oaep = params.getRSAOAEPParameters();
+        assert oaep != null;
         assertNotNull(params.getRSAOAEPParameters());
-        assertTrue(params.getRSAOAEPParameters().isEmpty());
+        assertTrue(oaep.isEmpty());
     }
     
     @Test
     public void testECDHWithDirectDataEncryption() throws ResolverException {
         config1.setDataEncryptionCredentials(Collections.singletonList(ecCred1));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertNull(params.getKeyTransportEncryptionCredential());
         assertNull(params.getKeyTransportEncryptionAlgorithm());
         assertNull(params.getKeyTransportKeyInfoGenerator());
         
-        assertNotNull(params.getDataEncryptionCredential());
+        final Credential dataCred = params.getDataEncryptionCredential();
+        assert dataCred != null;
         assertTrue(KeyAgreementCredential.class.isInstance(params.getDataEncryptionCredential()));
-        assertNotNull(params.getDataEncryptionCredential().getSecretKey());
-        assertEquals(params.getDataEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getDataEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+        
+        final SecretKey skey = dataCred.getSecretKey();
+        assert skey != null;
+        assertEquals(skey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(skey), 128);
         assertEquals(params.getDataEncryptionAlgorithm(), defaultAES128DataAlgo);
         assertNotNull(params.getDataKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getDataKeyInfoGenerator()));
@@ -350,18 +370,22 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         config2.setDataEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertNull(params.getKeyTransportEncryptionCredential());
         assertNull(params.getKeyTransportEncryptionAlgorithm());
         assertNull(params.getKeyTransportKeyInfoGenerator());
         
-        assertNotNull(params.getDataEncryptionCredential());
+        final Credential dataCred = params.getDataEncryptionCredential();
+        assert dataCred != null;
         assertTrue(KeyAgreementCredential.class.isInstance(params.getDataEncryptionCredential()));
-        assertNotNull(params.getDataEncryptionCredential().getSecretKey());
-        assertEquals(params.getDataEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getDataEncryptionCredential().getSecretKey()), Integer.valueOf(256));
+        
+        final SecretKey skey = dataCred.getSecretKey();
+        assert skey != null;
+
+        assertEquals(skey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(skey), 256);
         assertEquals(params.getDataEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256);
         assertNotNull(params.getDataKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getDataKeyInfoGenerator()));
@@ -371,13 +395,17 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     public void testECDHWithKeyWrap() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(ecCred1));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
-        
-        assertNotNull(params.getKeyTransportEncryptionCredential());
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
+
+        final Credential keyCred = params.getKeyTransportEncryptionCredential();
+        assert keyCred != null;
         assertTrue(KeyAgreementCredential.class.isInstance(params.getKeyTransportEncryptionCredential()));
-        assertNotNull(params.getKeyTransportEncryptionCredential().getSecretKey());
-        assertEquals(params.getKeyTransportEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getKeyTransportEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+        
+        final SecretKey skey = keyCred.getSecretKey();
+        assert skey != null;
+        assertEquals(skey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(skey), 128);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYWRAP_AES128);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getKeyTransportKeyInfoGenerator()));
@@ -394,13 +422,18 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         config2.setKeyTransportEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_KEYWRAP_AES256));
         config2.setDataEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES192));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
-        
-        assertNotNull(params.getKeyTransportEncryptionCredential());
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
+                
+        final Credential keyCred = params.getKeyTransportEncryptionCredential();
+        assert keyCred != null;
         assertTrue(KeyAgreementCredential.class.isInstance(params.getKeyTransportEncryptionCredential()));
-        assertNotNull(params.getKeyTransportEncryptionCredential().getSecretKey());
-        assertEquals(params.getKeyTransportEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getKeyTransportEncryptionCredential().getSecretKey()), Integer.valueOf(256));
+
+        final SecretKey skey = keyCred.getSecretKey();
+        assert skey != null;
+        
+        assertEquals(skey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(skey), 256);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYWRAP_AES256);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getKeyTransportKeyInfoGenerator()));
@@ -416,21 +449,29 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         resolver.setAutoGenerateDataEncryptionCredential(true);
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params.getKeyTransportEncryptionCredential());
+        final Credential keyCred = params.getKeyTransportEncryptionCredential();
+        assert keyCred != null;
         assertTrue(KeyAgreementCredential.class.isInstance(params.getKeyTransportEncryptionCredential()));
-        assertNotNull(params.getKeyTransportEncryptionCredential().getSecretKey());
-        assertEquals(params.getKeyTransportEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getKeyTransportEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+
+        final SecretKey skey = keyCred.getSecretKey();
+        assert skey != null;
+
+        assertEquals(skey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(skey), 128);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYWRAP_AES128);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getKeyTransportKeyInfoGenerator()));
         
-        assertNotNull(params.getDataEncryptionCredential());
-        assertNotNull(params.getDataEncryptionCredential().getSecretKey());
-        assertEquals(params.getDataEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getDataEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+        final Credential dataCred = params.getDataEncryptionCredential();
+        assert dataCred != null;
+        final SecretKey dataKey = dataCred.getSecretKey();
+        assert dataKey != null;
+
+        assertEquals(dataKey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(dataKey), 128);
         assertEquals(params.getDataEncryptionAlgorithm(), defaultAES128DataAlgo);
         assertNotNull(params.getDataKeyInfoGenerator());
     }
@@ -441,21 +482,24 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         KeyAgreementEncryptionConfiguration ecConfig = new KeyAgreementEncryptionConfiguration();
         PBKDF2 kdf = new PBKDF2();
-        ecConfig.setParameters(Set.of(kdf));
-        config2.setKeyAgreementConfigurations(Map.of("EC", ecConfig));
+        ecConfig.setParameters(CollectionSupport.singletonList(kdf));
+        config2.setKeyAgreementConfigurations(CollectionSupport.singletonMap("EC", ecConfig));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertNull(params.getKeyTransportEncryptionCredential());
         assertNull(params.getKeyTransportEncryptionAlgorithm());
         assertNull(params.getKeyTransportKeyInfoGenerator());
-        
-        assertNotNull(params.getDataEncryptionCredential());
+
         assertTrue(KeyAgreementCredential.class.isInstance(params.getDataEncryptionCredential()));
-        assertNotNull(params.getDataEncryptionCredential().getSecretKey());
-        assertEquals(params.getDataEncryptionCredential().getSecretKey().getAlgorithm(), "AES");
-        assertEquals(KeySupport.getKeyLength(params.getDataEncryptionCredential().getSecretKey()), Integer.valueOf(128));
+        final Credential dataCred = params.getDataEncryptionCredential();
+        assert dataCred != null;
+        final SecretKey dataKey = dataCred.getSecretKey();
+        assert dataKey != null;
+
+        assertEquals(dataKey.getAlgorithm(), "AES");
+        assertEquals(KeySupport.getKeyLength(dataKey), 128);
         assertEquals(params.getDataEncryptionAlgorithm(), defaultAES128DataAlgo);
         assertNotNull(params.getDataKeyInfoGenerator());
         assertTrue(KeyAgreementKeyInfoGenerator.class.isInstance(params.getDataKeyInfoGenerator()));
@@ -467,35 +511,42 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     
     @Test
     public void testGetEffectiveKeyAgreementConfiguration() {
-        KeyAgreementEncryptionConfiguration ecConfig1 = new KeyAgreementEncryptionConfiguration();
-        ecConfig1.setParameters(Set.of(new ConcatKDF()));
-        config1.setKeyAgreementConfigurations(Map.of("EC", ecConfig1));
+        final KeyAgreementEncryptionConfiguration ecConfig1 = new KeyAgreementEncryptionConfiguration();
+        ecConfig1.setParameters(CollectionSupport.singletonList(new ConcatKDF()));
+        config1.setKeyAgreementConfigurations(CollectionSupport.singletonMap("EC", ecConfig1));
         
-        KeyAgreementEncryptionConfiguration ecConfig2 = new KeyAgreementEncryptionConfiguration();
+        final KeyAgreementEncryptionConfiguration ecConfig2 = new KeyAgreementEncryptionConfiguration();
         ecConfig2.setAlgorithm(EncryptionConstants.ALGO_ID_KEYAGREEMENT_ECDH_ES);
-        ecConfig2.setParameters(Set.of(new PBKDF2()));
-        config2.setKeyAgreementConfigurations(Map.of("EC", ecConfig2));
+        ecConfig2.setParameters(CollectionSupport.singletonList(new PBKDF2()));
+        config2.setKeyAgreementConfigurations(CollectionSupport.singletonMap("EC", ecConfig2));
         
-        KeyAgreementEncryptionConfiguration ecConfig3 = new KeyAgreementEncryptionConfiguration();
+        final KeyAgreementEncryptionConfiguration ecConfig3 = new KeyAgreementEncryptionConfiguration();
         ecConfig3.setAlgorithm("SomeAlgo");
-        ecConfig3.setParameters(Set.of(new ConcatKDF()));
-        config3.setKeyAgreementConfigurations(Map.of("EC", ecConfig3));
+        ecConfig3.setParameters(CollectionSupport.singletonList(new ConcatKDF()));
+        config3.setKeyAgreementConfigurations(CollectionSupport.singletonMap("EC", ecConfig3));
         
-        KeyAgreementEncryptionConfiguration config = resolver.getEffectiveKeyAgreementConfiguration(criteriaSet, ecCred1);
+        final KeyAgreementEncryptionConfiguration config = resolver.getEffectiveKeyAgreementConfiguration(criteriaSet, ecCred1);
+        assert config != null;
         
         Assert.assertEquals(config.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYAGREEMENT_ECDH_ES);
-        Assert.assertEquals(config.getParameters().size(), 1);
-        Assert.assertTrue(ConcatKDF.class.isInstance(config.getParameters().iterator().next()));
-        Assert.assertSame(config.getParameters().iterator().next(), ecConfig1.getParameters().iterator().next());
+        
+        final Collection<KeyAgreementParameter> agreementParams = config.getParameters();
+        assert agreementParams != null;
+        Assert.assertEquals(agreementParams.size(), 1);
+        Assert.assertTrue(ConcatKDF.class.isInstance(agreementParams.iterator().next()));
+        
+        final Collection<KeyAgreementParameter> ec1Params = ecConfig1.getParameters();
+        assert ec1Params != null;
+        Assert.assertSame(agreementParams.iterator().next(), ec1Params.iterator().next());
     }
     
     @Test
     public void testAES128KeyWrap() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(aes128Cred1));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), aes128Cred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYWRAP_AES128);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -509,9 +560,9 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     public void testDataCredOnly() throws ResolverException {
         config1.setDataEncryptionCredentials(Collections.singletonList(aes256Cred1));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertNull(params.getKeyTransportEncryptionCredential());
         assertNull(params.getKeyTransportEncryptionAlgorithm());
         assertNull(params.getKeyTransportKeyInfoGenerator());
@@ -523,14 +574,14 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     
     @Test
     public void testKeyTransportCredWithBlacklistAndFallthrough() throws ResolverException {
-        config1.setKeyTransportEncryptionCredentials(List.of(rsaCred1, aes256Cred1));
+        config1.setKeyTransportEncryptionCredentials(CollectionSupport.listOf(rsaCred1, aes256Cred1));
         
         // Blacklist all RSA algos so rsaCred1 is skipped in favor of aes256Cred1
-        config1.setExcludedAlgorithms(List.of(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11));
+        config1.setExcludedAlgorithms(CollectionSupport.listOf(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP11));
         
-        EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), aes256Cred1);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYWRAP_AES256);
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -542,14 +593,14 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     
     @Test
     public void testDataCredOnlyWithBlacklistAndFallthrough() throws ResolverException {
-        config1.setDataEncryptionCredentials(List.of(aes128Cred1, aes256Cred1));
+        config1.setDataEncryptionCredentials(CollectionSupport.listOf(aes128Cred1, aes256Cred1));
         
         // Blacklist both AES-128 variants so aes128Cred1 is skipped in favor of aes256Cred1
-        config1.setExcludedAlgorithms(List.of(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128, EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128_GCM));
+        config1.setExcludedAlgorithms(CollectionSupport.listOf(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128, EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128_GCM));
         
         final EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
-        assertNotNull(params);
         assertNull(params.getKeyTransportEncryptionCredential());
         assertNull(params.getKeyTransportEncryptionAlgorithm());
         assertNull(params.getKeyTransportKeyInfoGenerator());
@@ -562,7 +613,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
     @Test
     public void testKeyTransportAlgorithmPredicate() throws ResolverException {
         config1.setKeyTransportEncryptionCredentials(Collections.singletonList(rsaCred1));
-        config1.setKeyTransportEncryptionAlgorithms(List.of(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP));
+        config1.setKeyTransportEncryptionAlgorithms(CollectionSupport.listOf(EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15, EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP));
         config1.setDataEncryptionAlgorithms(Collections.singletonList(EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128));
         
         // Data algorithm -> key transport algorithm preferences mappings
@@ -573,6 +624,8 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         // Without the predicate, for control
         EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
+        
         assertEquals(params.getDataEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
         
@@ -580,6 +633,8 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         // Explicit preference with predicate, mapping # 1
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
+        
         assertEquals(params.getDataEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES128);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP);
         
@@ -587,6 +642,8 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         // Explicit preference with predicate, mapping # 2
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
+        
         assertEquals(params.getDataEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_BLOCKCIPHER_AES256);
         assertEquals(params.getKeyTransportEncryptionAlgorithm(), EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSA15);
     }
@@ -602,6 +659,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         defaultKeyTransportKeyInfoGeneratorManager.setUseDefaultManager(true);
         
         EncryptionParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
         assertNotNull(params.getDataKeyInfoGenerator());
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -610,6 +668,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         defaultKeyTransportKeyInfoGeneratorManager.setUseDefaultManager(false);
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
         assertNull(params.getDataKeyInfoGenerator());
         assertNull(params.getKeyTransportKeyInfoGenerator());
@@ -620,6 +679,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         defaultKeyTransportKeyInfoGeneratorManager.registerFactory("testKeyInfoProfile", new BasicKeyInfoGeneratorFactory());
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;        
         
         assertNotNull(params.getDataKeyInfoGenerator());
         assertNotNull(params.getKeyTransportKeyInfoGenerator());
@@ -637,7 +697,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         
         assertTrue(iterator.hasNext());
         
-        EncryptionParameters params = iterator.next();
+        final EncryptionParameters params = iterator.next();
         
         assertNotNull(params);
         assertEquals(params.getKeyTransportEncryptionCredential(), rsaCred1);
@@ -724,6 +784,7 @@ public class BasicEncryptionParametersResolverTest extends XMLObjectBaseTestCase
         }
         
         public boolean test(@Nullable SelectionInput input) {
+            assert input != null;
             return algoMap.get(input.getDataEncryptionAlgorithm()).equals(input.getKeyTransportAlgorithm());
         }
     }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningConfigurationTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningConfigurationTest.java
index 11d98c80b..883a43e1c 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningConfigurationTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningConfigurationTest.java
@@ -33,9 +33,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class BasicSignatureSigningConfigurationTest {
     
     private BasicSignatureSigningConfiguration config;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningParametersResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningParametersResolverTest.java
index 44f1ed47b..5b2a622e9 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningParametersResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureSigningParametersResolverTest.java
@@ -49,9 +49,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTestCase {
     
     private BasicSignatureSigningParametersResolver resolver;
@@ -127,9 +125,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
     public void testBasicRSA() throws ResolverException {
         config1.setSigningCredentials(Collections.singletonList(rsaCred));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultRSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -145,9 +143,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         
         config2.setSignatureAlgorithms(Collections.singletonList(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -166,9 +164,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config2.setSignatureAlgorithms(List.of(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1, SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256));
         config2.setSignatureReferenceDigestMethods(List.of(SignatureConstants.ALGO_ID_DIGEST_SHA1, SignatureConstants.ALGO_ID_DIGEST_SHA256));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
         assertEquals(params.getSignatureReferenceDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA256);
@@ -187,9 +185,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config2.setSignatureAlgorithms(List.of(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1, SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256));
         config2.setSignatureReferenceDigestMethods(List.of(SignatureConstants.ALGO_ID_DIGEST_SHA1, SignatureConstants.ALGO_ID_DIGEST_SHA256));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
         assertEquals(params.getSignatureReferenceDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA256);
@@ -203,9 +201,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
     public void testBasicDSA() throws ResolverException {
         config1.setSigningCredentials(Collections.singletonList(dsaCred));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), dsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultDSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -221,9 +219,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         if (ecCred != null) {
             config1.setSigningCredentials(Collections.singletonList(ecCred));
             
-            SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+            final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+            assert params != null;
             
-            assertNotNull(params);
             assertEquals(params.getSigningCredential(), ecCred);
             assertEquals(params.getSignatureAlgorithm(), defaultECAlgo);
             assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -238,9 +236,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
     public void testBasicHMAC() throws ResolverException {
         config1.setSigningCredentials(Collections.singletonList(hmacCred));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), hmacCred);
         assertEquals(params.getSignatureAlgorithm(), defaultHMACAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -258,9 +256,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config2.setSignatureReferenceDigestMethods(Collections.singletonList(SignatureConstants.ALGO_ID_DIGEST_SHA256));
         config2.setSignatureHMACOutputLength(160);
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), hmacCred);
         assertEquals(params.getSignatureAlgorithm(), SignatureConstants.ALGO_ID_MAC_HMAC_SHA256);
         assertEquals(params.getSignatureReferenceDigestMethod(), SignatureConstants.ALGO_ID_DIGEST_SHA256);
@@ -276,9 +274,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         
         config2.setSignatureCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N11_WITH_COMMENTS);
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultRSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -294,9 +292,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         
         config2.setSignatureReferenceCanonicalizationAlgorithm(SignatureConstants.TRANSFORM_C14N_EXCL_WITH_COMMENTS);
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultRSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -311,8 +309,8 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config1.setSigningCredentials(List.of(rsaCred, dsaCred));
         
         SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultRSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -324,8 +322,8 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config1.setSigningCredentials(List.of(dsaCred, rsaCred));
         
         params = resolver.resolveSingle(criteriaSet);
-        
-        assertNotNull(params);
+        assert params != null;        
+
         assertEquals(params.getSigningCredential(), dsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultDSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -339,12 +337,12 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
             config1.setSigningCredentials(List.of(ecCred, dsaCred, rsaCred));
             
             params = resolver.resolveSingle(criteriaSet);
-            
-            assertNotNull(params);
+            assert params != null;            
+
             assertEquals(params.getSigningCredential(), ecCred);
             assertEquals(params.getSignatureAlgorithm(), defaultECAlgo);
             assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
-        assertNull(params.getSignatureReferenceCanonicalizationAlgorithm());
+            assertNull(params.getSignatureReferenceCanonicalizationAlgorithm());
             assertEquals(params.getSignatureCanonicalizationAlgorithm(), defaultC14N);
             assertNull(params.getSignatureHMACOutputLength());
             assertNotNull(params.getKeyInfoGenerator());
@@ -353,8 +351,8 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config1.setSigningCredentials(List.of(hmacCred, dsaCred, rsaCred));
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), hmacCred);
         assertEquals(params.getSignatureAlgorithm(), defaultHMACAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -371,9 +369,9 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         config2.setSigningCredentials(List.of(rsaCred, dsaCred, hmacCred));
         config2.setSignatureAlgorithms(Collections.singletonList(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256));
         
-        SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
-        assertNotNull(params);
         assertEquals(params.getSigningCredential(), dsaCred);
         assertEquals(params.getSignatureAlgorithm(), defaultDSAAlgo);
         assertEquals(params.getSignatureReferenceDigestMethod(), defaultReferenceDigest);
@@ -392,12 +390,14 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         defaultKeyInfoGeneratorManager.setUseDefaultManager(true);
         
         SignatureSigningParameters params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         assertNotNull(params.getKeyInfoGenerator());
         
         defaultKeyInfoGeneratorManager.setUseDefaultManager(false);
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         assertNull(params.getKeyInfoGenerator());
         
@@ -405,6 +405,7 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         defaultKeyInfoGeneratorManager.registerFactory("testKeyInfoProfile", new BasicKeyInfoGeneratorFactory());
         
         params = resolver.resolveSingle(criteriaSet);
+        assert params != null;
         
         assertNotNull(params.getKeyInfoGenerator());
     }
@@ -421,7 +422,7 @@ public class BasicSignatureSigningParametersResolverTest extends XMLObjectBaseTe
         
         assertTrue(iterator.hasNext());
         
-        SignatureSigningParameters params =iterator.next();
+        final SignatureSigningParameters params =iterator.next();
         
         assertNotNull(params);
         assertEquals(params.getSigningCredential(), rsaCred);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationConfigurationTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationConfigurationTest.java
index 37326ec9c..12b511cf2 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationConfigurationTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationConfigurationTest.java
@@ -29,6 +29,7 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+ at SuppressWarnings("javadoc")
 public class BasicSignatureValidationConfigurationTest {
     
     private BasicSignatureValidationConfiguration config;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationParametersResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationParametersResolverTest.java
index 6723abfaf..c4a18f78f 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationParametersResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/BasicSignatureValidationParametersResolverTest.java
@@ -40,6 +40,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+ at SuppressWarnings("javadoc")
 public class BasicSignatureValidationParametersResolverTest {
     
     private BasicSignatureValidationParametersResolver resolver;
@@ -113,7 +114,7 @@ public class BasicSignatureValidationParametersResolverTest {
         
         assertTrue(iterator.hasNext());
         
-        SignatureValidationParameters params =iterator.next();
+        final SignatureValidationParameters params =iterator.next();
         
         assertNotNull(params);
         assertTrue(params.getSignatureTrustEngine() == controlTrustEngine1);
@@ -130,9 +131,9 @@ public class BasicSignatureValidationParametersResolverTest {
         config1.setExcludedAlgorithms(List.of("foo", "bar"));
         config1.setSignatureTrustEngine(controlTrustEngine1);
         
-        SignatureValidationParameters params = resolver.resolveSingle(criteriaSet);
+        final SignatureValidationParameters params = resolver.resolveSingle(criteriaSet);
         
-        assertNotNull(params);
+        assert params != null;
         assertTrue(params.getSignatureTrustEngine() == controlTrustEngine1);
         assertTrue(params.getIncludedAlgorithms().isEmpty());
         assertEquals(params.getExcludedAlgorithms().size(), 2);
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/ExcludedAlgorithmsPredicateTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/ExcludedAlgorithmsPredicateTest.java
index b50e28df8..a734a3dfc 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/ExcludedAlgorithmsPredicateTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/ExcludedAlgorithmsPredicateTest.java
@@ -17,18 +17,17 @@
 
 package org.opensaml.xmlsec.impl;
 
-import java.util.List;
-
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.collection.CollectionSupport;
 
+ at SuppressWarnings("javadoc")
 public class ExcludedAlgorithmsPredicateTest {
 
     @Test
     public void testBasic() {
-        ExcludedAlgorithmsPredicate predicate = new ExcludedAlgorithmsPredicate(List.of("A", "B", "C", "D"));
+        ExcludedAlgorithmsPredicate predicate = new ExcludedAlgorithmsPredicate(CollectionSupport.listOf("A", "B", "C", "D"));
         
         Assert.assertFalse(predicate.test("A"));
         Assert.assertFalse(predicate.test("B"));
@@ -43,14 +42,9 @@ public class ExcludedAlgorithmsPredicateTest {
         Assert.assertTrue(predicate.test("bax"));
     }
     
-    @Test(expectedExceptions=ConstraintViolationException.class)
-    public void testNullSet() {
-        new ExcludedAlgorithmsPredicate(null);
-    }
-    
     @Test(expectedExceptions=IllegalArgumentException.class)
     public void testNullArg() {
-        ExcludedAlgorithmsPredicate predicate = new ExcludedAlgorithmsPredicate(List.of("A", "B", "C", "D"));
+        ExcludedAlgorithmsPredicate predicate = new ExcludedAlgorithmsPredicate(CollectionSupport.listOf("A", "B", "C", "D"));
         predicate.test(null);
     }
     
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/IncludedAlgorithmsPredicateTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/IncludedAlgorithmsPredicateTest.java
index 6d15646fd..2fc5d1bc4 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/IncludedAlgorithmsPredicateTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/impl/IncludedAlgorithmsPredicateTest.java
@@ -17,21 +17,17 @@
 
 package org.opensaml.xmlsec.impl;
 
-import java.util.List;
-
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.collection.CollectionSupport;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class IncludedAlgorithmsPredicateTest {
 
     @Test
     public void testBasic() {
-        IncludedAlgorithmsPredicate predicate = new IncludedAlgorithmsPredicate(List.of("A", "B", "C", "D"));
+        IncludedAlgorithmsPredicate predicate = new IncludedAlgorithmsPredicate(CollectionSupport.listOf("A", "B", "C", "D"));
         
         Assert.assertTrue(predicate.test("A"));
         Assert.assertTrue(predicate.test("B"));
@@ -46,14 +42,9 @@ public class IncludedAlgorithmsPredicateTest {
         Assert.assertFalse(predicate.test("bax"));
     }
     
-    @Test(expectedExceptions=ConstraintViolationException.class)
-    public void testNullSet() {
-        new IncludedAlgorithmsPredicate(null);
-    }
-    
     @Test(expectedExceptions=IllegalArgumentException.class)
     public void testNullArg() {
-        IncludedAlgorithmsPredicate predicate = new IncludedAlgorithmsPredicate(List.of("A", "B", "C", "D"));
+        IncludedAlgorithmsPredicate predicate = new IncludedAlgorithmsPredicate(CollectionSupport.listOf("A", "B", "C", "D"));
         predicate.test(null);
     }
     
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/BasicKeyInfoGeneratorTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/BasicKeyInfoGeneratorTest.java
index 0f5a0ed89..27a8e8087 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/BasicKeyInfoGeneratorTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/BasicKeyInfoGeneratorTest.java
@@ -26,6 +26,7 @@ import java.security.PublicKey;
 import java.util.List;
 
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
+import org.opensaml.core.xml.XMLObject;
 import org.opensaml.security.SecurityException;
 import org.opensaml.security.credential.BasicCredential;
 import org.opensaml.security.crypto.KeySupport;
@@ -98,12 +99,13 @@ public class BasicKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitPublicDEREncodedKeyValue(true);
         
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-        
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
-        Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
         
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 2, "Unexpected number of KeyInfo children");
+        final List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        
+        Assert.assertEquals(children.size(), 2, "Unexpected number of KeyInfo children");
         Assert.assertEquals(keyInfo.getKeyValues().size(), 1, "Unexpected number of KeyValue elements");
         Assert.assertEquals(keyInfo.getDEREncodedKeyValues().size(), 1,
                 "Unexpected number of DEREncodedKeyValue elements");
@@ -179,10 +181,12 @@ public class BasicKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         generator = factory.newInstance();
         keyInfo = generator.generate(credential);
-        
         assert keyInfo != null;
-        Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 5, "Unexpected # of KeyInfo children found");
+        
+        final List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+
+        Assert.assertEquals(children.size(), 5, "Unexpected # of KeyInfo children found");
     }
     
     @DataProvider
@@ -211,9 +215,11 @@ public class BasicKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         Assert.assertTrue(type.isInstance(keyInfo));
         
         assert keyInfo != null;
-        Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
+
+        final List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
         
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 2, "Unexpected number of KeyInfo children");
+        Assert.assertEquals(children.size(), 2, "Unexpected number of KeyInfo children");
         Assert.assertEquals(keyInfo.getKeyValues().size(), 1, "Unexpected number of KeyValue elements");
         Assert.assertEquals(keyInfo.getDEREncodedKeyValues().size(), 1,
                 "Unexpected number of DEREncodedKeyValue elements");
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/KeyAgreementKeyInfoGeneratorTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/KeyAgreementKeyInfoGeneratorTest.java
index e1bb82a3a..24c6c6380 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/KeyAgreementKeyInfoGeneratorTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/KeyAgreementKeyInfoGeneratorTest.java
@@ -22,10 +22,12 @@ import java.security.KeyPair;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
 import java.security.spec.ECGenParameterSpec;
+import java.util.List;
 
 import javax.crypto.SecretKey;
 
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
+import org.opensaml.core.xml.XMLObject;
 import org.opensaml.security.credential.BasicCredential;
 import org.opensaml.security.credential.Credential;
 import org.opensaml.security.crypto.JCAConstants;
@@ -38,10 +40,15 @@ import org.opensaml.xmlsec.derivation.impl.ConcatKDF;
 import org.opensaml.xmlsec.derivation.impl.PBKDF2;
 import org.opensaml.xmlsec.encryption.AgreementMethod;
 import org.opensaml.xmlsec.encryption.ConcatKDFParams;
+import org.opensaml.xmlsec.encryption.IterationCount;
 import org.opensaml.xmlsec.encryption.KeyDerivationMethod;
+import org.opensaml.xmlsec.encryption.KeyLength;
 import org.opensaml.xmlsec.encryption.OriginatorKeyInfo;
 import org.opensaml.xmlsec.encryption.PBKDF2Params;
+import org.opensaml.xmlsec.encryption.PRF;
 import org.opensaml.xmlsec.encryption.RecipientKeyInfo;
+import org.opensaml.xmlsec.encryption.Salt;
+import org.opensaml.xmlsec.encryption.Specified;
 import org.opensaml.xmlsec.encryption.support.EncryptionConstants;
 import org.opensaml.xmlsec.keyinfo.KeyInfoGenerator;
 import org.opensaml.xmlsec.keyinfo.KeyInfoSupport;
@@ -52,9 +59,7 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-/**
- *
- */
+ at SuppressWarnings("javadoc")
 public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
     
     private KeyPair keyPairOriginatorECDH, keyPairRecipientECDH;
@@ -97,7 +102,7 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
     
     @Test
     public void ECDHWithConcatKDFWithDefaults() throws Exception {
-        ConcatKDF kdf = new ConcatKDF();
+        final ConcatKDF kdf = new ConcatKDF();
         kdf.setDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA512);
         kdf.setAlgorithmID("AA");
         kdf.setPartyUInfo("BB");
@@ -108,32 +113,38 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         credECDH.getParameters().add(kdf);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credECDH);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credECDH);
+        assert keyInfo != null;
+        List<XMLObject> children = keyInfo.getOrderedChildren();
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
         Assert.assertEquals(agreementMethod.getAlgorithm(), credECDH.getAlgorithm());
-                
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 3);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 3);
         
         //Originator
-        Assert.assertNotNull(agreementMethod.getOriginatorKeyInfo());
-        OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
-        Assert.assertEquals(originatorKeyInfo.getOrderedChildren().size(), 2);
+        final OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
+        assert originatorKeyInfo != null;
+        children = originatorKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(originatorKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getDEREncodedKeyValues().get(0)), keyPairOriginatorECDH.getPublic());
         Assert.assertEquals(originatorKeyInfo.getKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getKeyValues().get(0)), keyPairOriginatorECDH.getPublic());
         
         //Recipient
-        Assert.assertNotNull(agreementMethod.getRecipientKeyInfo());
-        RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
-        Assert.assertEquals(recipientKeyInfo.getOrderedChildren().size(), 2);
+        final RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
+        assert recipientKeyInfo != null;
+        children = recipientKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(recipientKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(recipientKeyInfo.getDEREncodedKeyValues().get(0)), keyPairRecipientECDH.getPublic());
         Assert.assertEquals(recipientKeyInfo.getKeyValues().size(), 1);
@@ -141,13 +152,14 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         //Params
         Assert.assertEquals(agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).size(), 1);
-        KeyDerivationMethod kdm = (KeyDerivationMethod) agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).get(0);
+        final KeyDerivationMethod kdm = (KeyDerivationMethod) agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).get(0);
         Assert.assertEquals(kdm.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYDERIVATION_CONCATKDF);
         Assert.assertEquals(kdm.getUnknownXMLObjects().size(), 1);
         Assert.assertEquals(kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).size(), 1);
-        ConcatKDFParams kdfParams = (ConcatKDFParams) kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).get(0);
-        Assert.assertNotNull(kdfParams.getDigestMethod());
-        Assert.assertEquals(kdfParams.getDigestMethod().getAlgorithm(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
+        final ConcatKDFParams kdfParams = (ConcatKDFParams) kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).get(0);
+        final org.opensaml.xmlsec.signature.DigestMethod dm = kdfParams.getDigestMethod();
+        assert dm != null;
+        Assert.assertEquals(dm.getAlgorithm(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
         Assert.assertEquals(kdfParams.getAlgorithmID(), "00AA");
         Assert.assertEquals(kdfParams.getPartyUInfo(), "00BB");
         Assert.assertEquals(kdfParams.getPartyVInfo(), "00CC");
@@ -157,7 +169,7 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
 
     @Test
     public void ECDHWithPBKDF2WithDefaults() throws Exception {
-        PBKDF2 kdf = new PBKDF2();
+        final PBKDF2 kdf = new PBKDF2();
         kdf.setIterationCount(1500);
         kdf.setKeyLength(256);
         kdf.setPRF(SignatureConstants.ALGO_ID_MAC_HMAC_SHA512);
@@ -166,32 +178,39 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         credECDH.getParameters().add(kdf);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credECDH);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credECDH);
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        assert keyInfo != null;
+        List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
         Assert.assertEquals(agreementMethod.getAlgorithm(), credECDH.getAlgorithm());
         
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 3);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 3);
         
         //Originator
-        Assert.assertNotNull(agreementMethod.getOriginatorKeyInfo());
-        OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
-        Assert.assertEquals(originatorKeyInfo.getOrderedChildren().size(), 2);
+        final OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
+        assert originatorKeyInfo != null;
+        children = originatorKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(originatorKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getDEREncodedKeyValues().get(0)), keyPairOriginatorECDH.getPublic());
         Assert.assertEquals(originatorKeyInfo.getKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getKeyValues().get(0)), keyPairOriginatorECDH.getPublic());
         
         //Recipient
-        Assert.assertNotNull(agreementMethod.getRecipientKeyInfo());
-        RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
-        Assert.assertEquals(recipientKeyInfo.getOrderedChildren().size(), 2);
+        final RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
+        assert recipientKeyInfo != null;
+        children = recipientKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(recipientKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(recipientKeyInfo.getDEREncodedKeyValues().get(0)), keyPairRecipientECDH.getPublic());
         Assert.assertEquals(recipientKeyInfo.getKeyValues().size(), 1);
@@ -204,20 +223,30 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         Assert.assertEquals(kdm.getUnknownXMLObjects().size(), 1);
         Assert.assertEquals(kdm.getUnknownXMLObjects(PBKDF2Params.DEFAULT_ELEMENT_NAME).size(), 1);
         PBKDF2Params kdfParams = (PBKDF2Params) kdm.getUnknownXMLObjects(PBKDF2Params.DEFAULT_ELEMENT_NAME).get(0);
-        Assert.assertNotNull(kdfParams.getIterationCount());
-        Assert.assertEquals(kdfParams.getIterationCount().getValue().intValue(), 1500);
-        Assert.assertNotNull(kdfParams.getKeyLength());
-        Assert.assertEquals(kdfParams.getKeyLength().getValue().intValue(), 256/8); // bytes
-        Assert.assertNotNull(kdfParams.getPRF());
-        Assert.assertEquals(kdfParams.getPRF().getAlgorithm(), SignatureConstants.ALGO_ID_MAC_HMAC_SHA512);
-        Assert.assertNotNull(kdfParams.getSalt());
-        Assert.assertNotNull(kdfParams.getSalt().getSpecified());
-        Assert.assertEquals(kdfParams.getSalt().getSpecified().getValue(), "ABCD");
+        
+        final IterationCount icount = kdfParams.getIterationCount();
+        assert icount != null;
+        Assert.assertEquals(icount.getValue(), 1500);
+        
+        final KeyLength keyLength = kdfParams.getKeyLength();
+        assert keyLength != null;
+        Assert.assertEquals(keyLength.getValue(), 256/8); // bytes
+        
+        final PRF prf = kdfParams.getPRF();
+        assert prf != null;
+        Assert.assertEquals(prf.getAlgorithm(), SignatureConstants.ALGO_ID_MAC_HMAC_SHA512);
+        
+        final Salt salt = kdfParams.getSalt();
+        assert salt != null;
+        
+        final Specified spec = salt.getSpecified();
+        assert spec != null;
+        Assert.assertEquals(spec.getValue(), "ABCD");
     }
     
     @Test
     public void DiffieHellmanWithConcatKDFWithDefaults() throws Exception {
-        ConcatKDF kdf = new ConcatKDF();
+        final ConcatKDF kdf = new ConcatKDF();
         kdf.setDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA512);
         kdf.setAlgorithmID("AA");
         kdf.setPartyUInfo("BB");
@@ -228,32 +257,39 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         credDiffieHellmanExplicitKDF.getParameters().add(kdf);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credDiffieHellmanExplicitKDF);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credDiffieHellmanExplicitKDF);
+        assert keyInfo != null;
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
         Assert.assertEquals(agreementMethod.getAlgorithm(), credDiffieHellmanExplicitKDF.getAlgorithm());
         
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 3);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 3);
         
         //Originator
-        Assert.assertNotNull(agreementMethod.getOriginatorKeyInfo());
-        OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
-        Assert.assertEquals(originatorKeyInfo.getOrderedChildren().size(), 2);
+        final OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
+        assert originatorKeyInfo != null;
+        children = originatorKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(originatorKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getDEREncodedKeyValues().get(0)), keyPairOriginatorDiffieHellman.getPublic());
         Assert.assertEquals(originatorKeyInfo.getKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getKeyValues().get(0)), keyPairOriginatorDiffieHellman.getPublic());
         
         //Recipient
-        Assert.assertNotNull(agreementMethod.getRecipientKeyInfo());
-        RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
-        Assert.assertEquals(recipientKeyInfo.getOrderedChildren().size(), 2);
+        final RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
+        assert recipientKeyInfo != null;
+        children = recipientKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(recipientKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(recipientKeyInfo.getDEREncodedKeyValues().get(0)), keyPairRecipientDiffieHellman.getPublic());
         Assert.assertEquals(recipientKeyInfo.getKeyValues().size(), 1);
@@ -261,13 +297,15 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         //Params
         Assert.assertEquals(agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).size(), 1);
-        KeyDerivationMethod kdm = (KeyDerivationMethod) agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).get(0);
+        final KeyDerivationMethod kdm = (KeyDerivationMethod) agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).get(0);
         Assert.assertEquals(kdm.getAlgorithm(), EncryptionConstants.ALGO_ID_KEYDERIVATION_CONCATKDF);
         Assert.assertEquals(kdm.getUnknownXMLObjects().size(), 1);
         Assert.assertEquals(kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).size(), 1);
-        ConcatKDFParams kdfParams = (ConcatKDFParams) kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).get(0);
-        Assert.assertNotNull(kdfParams.getDigestMethod());
-        Assert.assertEquals(kdfParams.getDigestMethod().getAlgorithm(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
+        final ConcatKDFParams kdfParams = (ConcatKDFParams) kdm.getUnknownXMLObjects(ConcatKDFParams.DEFAULT_ELEMENT_NAME).get(0);
+        
+        final org.opensaml.xmlsec.signature.DigestMethod dm = kdfParams.getDigestMethod();
+        assert dm != null;
+        Assert.assertEquals(dm.getAlgorithm(), SignatureConstants.ALGO_ID_DIGEST_SHA512);
         Assert.assertEquals(kdfParams.getAlgorithmID(), "00AA");
         Assert.assertEquals(kdfParams.getPartyUInfo(), "00BB");
         Assert.assertEquals(kdfParams.getPartyVInfo(), "00CC");
@@ -288,40 +326,49 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         credDiffieHellmanLegacyKDF.getParameters().add(dm);
         credDiffieHellmanLegacyKDF.getParameters().add(nonce);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credDiffieHellmanLegacyKDF);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credDiffieHellmanLegacyKDF);
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        assert keyInfo != null;
+        
+        List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
         Assert.assertEquals(agreementMethod.getAlgorithm(), credDiffieHellmanLegacyKDF.getAlgorithm());
         
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 4);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 4);
         
         //Originator
-        Assert.assertNotNull(agreementMethod.getOriginatorKeyInfo());
-        OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
-        Assert.assertEquals(originatorKeyInfo.getOrderedChildren().size(), 2);
+        final OriginatorKeyInfo originatorKeyInfo = agreementMethod.getOriginatorKeyInfo();
+        assert originatorKeyInfo != null;
+        children = originatorKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(originatorKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getDEREncodedKeyValues().get(0)), keyPairOriginatorDiffieHellman.getPublic());
         Assert.assertEquals(originatorKeyInfo.getKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(originatorKeyInfo.getKeyValues().get(0)), keyPairOriginatorDiffieHellman.getPublic());
         
         //Recipient
-        Assert.assertNotNull(agreementMethod.getRecipientKeyInfo());
-        RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
-        Assert.assertEquals(recipientKeyInfo.getOrderedChildren().size(), 2);
+        final RecipientKeyInfo recipientKeyInfo = agreementMethod.getRecipientKeyInfo();
+        assert recipientKeyInfo != null;
+        children = recipientKeyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 2);
         Assert.assertEquals(recipientKeyInfo.getDEREncodedKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(recipientKeyInfo.getDEREncodedKeyValues().get(0)), keyPairRecipientDiffieHellman.getPublic());
         Assert.assertEquals(recipientKeyInfo.getKeyValues().size(), 1);
         Assert.assertEquals(KeyInfoSupport.getKey(recipientKeyInfo.getKeyValues().get(0)), keyPairRecipientDiffieHellman.getPublic());
         
         //Params
-        Assert.assertNotNull(agreementMethod.getKANonce());
-        Assert.assertEquals(agreementMethod.getKANonce().getValue(), "ABCD");
+        final org.opensaml.xmlsec.encryption.KANonce kanonce = agreementMethod.getKANonce();
+        assert kanonce != null;
+        Assert.assertEquals(kanonce.getValue(), "ABCD");
         Assert.assertEquals(agreementMethod.getUnknownXMLObjects(org.opensaml.xmlsec.signature.DigestMethod.DEFAULT_ELEMENT_NAME).size(), 1);
         org.opensaml.xmlsec.signature.DigestMethod xmlDigest =
                 (org.opensaml.xmlsec.signature.DigestMethod) agreementMethod.getUnknownXMLObjects(
@@ -335,7 +382,7 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitOriginatorKeyInfo(false);
         factory.setEmitRecipientKeyInfo(false);
         
-        ConcatKDF kdf = new ConcatKDF();
+        final ConcatKDF kdf = new ConcatKDF();
         kdf.setDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA512);
         kdf.setAlgorithmID("AA");
         kdf.setPartyUInfo("BB");
@@ -346,16 +393,20 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         credECDH.getParameters().add(kdf);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credECDH);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credECDH);
+        
+        assert keyInfo != null;
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 1);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         
         Assert.assertEquals(agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).size(), 1);
         Assert.assertNull(agreementMethod.getOriginatorKeyInfo());
@@ -367,7 +418,7 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setOriginatorKeyInfoGeneratorManager(null);
         factory.setRecipientKeyInfoGeneratorManager(null);
         
-        ConcatKDF kdf = new ConcatKDF();
+        final ConcatKDF kdf = new ConcatKDF();
         kdf.setDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA512);
         kdf.setAlgorithmID("AA");
         kdf.setPartyUInfo("BB");
@@ -378,16 +429,20 @@ public class KeyAgreementKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         
         credECDH.getParameters().add(kdf);
         
-        KeyInfoGenerator generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credECDH);
+        final KeyInfoGenerator generator = factory.newInstance();
+        final KeyInfo keyInfo = generator.generate(credECDH);
+        
+        assert keyInfo != null;
         
-        Assert.assertNotNull(keyInfo);
-        Assert.assertNotNull(keyInfo.getOrderedChildren());
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1);
+        List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         Assert.assertEquals(keyInfo.getAgreementMethods().size(), 1);
         
-        AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
-        Assert.assertEquals(agreementMethod.getOrderedChildren().size(), 1);
+        final AgreementMethod agreementMethod = keyInfo.getAgreementMethods().get(0);
+        children = agreementMethod.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 1);
         
         Assert.assertEquals(agreementMethod.getUnknownXMLObjects(KeyDerivationMethod.DEFAULT_ELEMENT_NAME).size(), 1);
         Assert.assertNull(agreementMethod.getOriginatorKeyInfo());
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/LocalKeyInfoCredentialResolverTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/LocalKeyInfoCredentialResolverTest.java
index a411d5f20..82bc22b09 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/LocalKeyInfoCredentialResolverTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/LocalKeyInfoCredentialResolverTest.java
@@ -44,6 +44,7 @@ import org.opensaml.xmlsec.signature.KeyInfo;
 /**
  * Test the local credential resolver specialization of the KeyInfo credential resolver.
  */
+ at SuppressWarnings("javadoc")
 public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
     
     private String keyName;
@@ -66,7 +67,7 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
         localCredResolver = new CollectionCredentialResolver();
         localCredResolver.getCollection().add(localCred);
         
-        ArrayList<KeyInfoProvider> providers = new ArrayList<>();
+        final ArrayList<KeyInfoProvider> providers = new ArrayList<>();
         providers.add( new RSAKeyValueProvider() );
         keyInfoResolver = new LocalKeyInfoCredentialResolver(providers, localCredResolver);
         
@@ -77,8 +78,8 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
     public void testKeyInfoWithKeyName() throws ResolverException {
         KeyInfoSupport.addKeyName(keyInfo, keyName);
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
         Assert.assertEquals(resolvedCred, localCred, "Unexpected local credential resolved");
     }
@@ -87,8 +88,8 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
     public void testKeyInfoWithKnownPublicKey() throws ResolverException, EncodingException {
         KeyInfoSupport.addPublicKey(keyInfo, keyPair.getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
         Assert.assertEquals(resolvedCred, localCred, "Unexpected local credential resolved");
     }
@@ -100,8 +101,8 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
         KeyInfoSupport.addPublicKey(keyInfo, 
                 KeySupport.generateKeyPair("RSA", 1024, null).getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
         Assert.assertNull(resolvedCred, "Expected no credential to be resolved");
     }
@@ -111,8 +112,8 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
         // Nominally the same as "testKeyInfoWithKnownPublicKey", just testing an explicit mode which is the default
         KeyInfoSupport.addPublicKey(keyInfo, keyPair.getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.LOCAL) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.LOCAL) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
         Assert.assertEquals(resolvedCred, localCred, "Unexpected local credential resolved");
     }
@@ -123,10 +124,10 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
         
         KeyInfoSupport.addPublicKey(keyInfo, keyPair.getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.PUBLIC) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.PUBLIC) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
-        Assert.assertNotNull(resolvedCred);
+        assert resolvedCred != null;
         Assert.assertNotSame(resolvedCred, localCred);
         Assert.assertNull(resolvedCred.getPrivateKey());
         Assert.assertNotNull(resolvedCred.getPublicKey());
@@ -139,10 +140,10 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
         
         KeyInfoSupport.addPublicKey(keyInfo, keyPair.getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.BOTH) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.BOTH) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
-        Assert.assertNotNull(resolvedCred);
+        assert resolvedCred != null;
         Assert.assertNotSame(resolvedCred, localCred);
         Assert.assertNull(resolvedCred.getPrivateKey());
         Assert.assertNotNull(resolvedCred.getPublicKey());
@@ -153,8 +154,8 @@ public class LocalKeyInfoCredentialResolverTest extends XMLObjectBaseTestCase {
     public void testBothModeWithLocalPresent() throws ResolverException, EncodingException {
         KeyInfoSupport.addPublicKey(keyInfo, keyPair.getPublic());
         
-        CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.BOTH) );
-        Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
+        final CriteriaSet criteriaSet = new CriteriaSet( new KeyInfoCriterion(keyInfo), new KeyInfoCredentialResolutionMode(Mode.BOTH) );
+        final Credential resolvedCred = keyInfoResolver.resolveSingle(criteriaSet);
         
         Assert.assertEquals(resolvedCred, localCred, "Unexpected local credential resolved");
     }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/StaticKeyInfoGeneratorTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/StaticKeyInfoGeneratorTest.java
index acf20c398..fb5f25de7 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/StaticKeyInfoGeneratorTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/StaticKeyInfoGeneratorTest.java
@@ -137,9 +137,9 @@ public class StaticKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
     public void testWithCloningWithDOMCache() throws SecurityException, KeyException, MarshallingException {
         EncryptedData encData = (EncryptedData) buildXMLObject(EncryptedData.DEFAULT_ELEMENT_NAME);
         
-        XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(origKeyInfo).marshall(origKeyInfo);
+        XMLObjectProviderRegistrySupport.getMarshallerFactory().ensureMarshaller(origKeyInfo).marshall(origKeyInfo);
         Assert.assertNotNull(origKeyInfo.getDOM(), "Original KeyInfo should have a cached DOM");
-        Element origDOM = origKeyInfo.getDOM();
+        final Element origDOM = origKeyInfo.getDOM();
         
         KeyInfo keyInfo = generator.generate(null);
         checkKeyInfo(keyInfo);
@@ -154,6 +154,7 @@ public class StaticKeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         Assert.assertNull(keyInfo.getDOM(), "Generated KeyInfo should NOT have a cached DOM");
         
         Assert.assertNotNull(origKeyInfo.getDOM(), "KeyInfo cached DOM should NOT have been cleared after cloning");
+        assert origDOM != null;
         Assert.assertTrue(origDOM.isSameNode(origKeyInfo.getDOM()), "DOM Elements were not the same");
     }
     
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/X509KeyInfoGeneratorTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/X509KeyInfoGeneratorTest.java
index 887a05e06..15080fb26 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/X509KeyInfoGeneratorTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/impl/X509KeyInfoGeneratorTest.java
@@ -33,13 +33,16 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import javax.annotation.Nonnull;
 import javax.security.auth.x500.X500Principal;
 
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.codec.DecodingException;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.StringSupport;
 
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
+import org.opensaml.core.xml.XMLObject;
 import org.opensaml.security.SecurityException;
 import org.opensaml.security.x509.BasicX509Credential;
 import org.opensaml.security.x509.X509Support;
@@ -50,8 +53,10 @@ import org.opensaml.xmlsec.keyinfo.KeyInfoSupport;
 import org.opensaml.xmlsec.signature.KeyInfo;
 import org.opensaml.xmlsec.signature.X509Data;
 import org.opensaml.xmlsec.signature.X509Digest;
+import org.opensaml.xmlsec.signature.X509IssuerName;
 import org.opensaml.xmlsec.signature.X509IssuerSerial;
 import org.opensaml.xmlsec.signature.X509SKI;
+import org.opensaml.xmlsec.signature.X509SerialNumber;
 import org.opensaml.xmlsec.signature.support.SignatureConstants;
 
 /**
@@ -214,12 +219,13 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitPublicKeyValue(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
-        Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
+        
+        final List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
 
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 1, "Unexpected number of KeyInfo children");
+        Assert.assertEquals(children.size(), 1, "Unexpected number of KeyInfo children");
         Assert.assertEquals(keyInfo.getKeyValues().size(), 1, "Unexpected number of KeyValue elements");
         PublicKey generatedKey = KeyInfoSupport.getKey(keyInfo.getKeyValues().get(0));
         Assert.assertEquals(generatedKey, pubKey, "Unexpected key value");
@@ -235,9 +241,9 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitKeyNames(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
+        
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
 
         Assert.assertEquals(keyInfo.getKeyNames().size(), 2, "Unexpected number of KeyName elements");
@@ -256,9 +262,9 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitEntityIDAsKeyName(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
+        final KeyInfo keyInfo = generator.generate(credential);
+        assert keyInfo != null;
 
-        Assert.assertNotNull(keyInfo, "Generated KeyInfo was null");
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
 
         Assert.assertEquals(keyInfo.getKeyNames().size(), 1, "Unexpected number of KeyName elements");
@@ -300,9 +306,9 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitEntityCertificateChain(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
+        
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
 
         Assert.assertEquals(keyInfo.getX509Datas().size(), 1, "Unexpected number of X509Data elements");
@@ -393,21 +399,23 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitX509IssuerSerial(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
 
         Assert.assertEquals(keyInfo.getX509Datas().size(), 1, "Unexpected number of X509Data elements");
-        X509Data x509Data = keyInfo.getX509Datas().get(0);
+        final X509Data x509Data = keyInfo.getX509Datas().get(0);
         Assert.assertEquals(x509Data.getX509IssuerSerials().size(), 1, "Unexpected number of X509IssuerSerial elements");
-        X509IssuerSerial issuerSerial = x509Data.getX509IssuerSerials().get(0);
-        Assert.assertNotNull(issuerSerial.getX509IssuerName(), "X509IssuerName not present");
-        Assert.assertNotNull(issuerSerial.getX509SerialNumber(), "X509SerialNumber not present");
-        String name = StringSupport.trimOrNull(issuerSerial.getX509IssuerName().getValue());
+        final X509IssuerSerial issuerSerial = x509Data.getX509IssuerSerials().get(0);
+        
+        final X509IssuerName iname = issuerSerial.getX509IssuerName();
+        assert iname != null;
+        final X509SerialNumber serialNum = issuerSerial.getX509SerialNumber();
+        assert serialNum != null;
+        
+        String name = StringSupport.trimOrNull(iname.getValue());
         Assert.assertEquals(new X500Principal(name), issuerName, "Unexpected X509IssuerName value found");
-        BigInteger number = issuerSerial.getX509SerialNumber().getValue();
-        Assert.assertEquals(number, serialNumber, "Unexpected serial number value found");
+        Assert.assertEquals(serialNum.getValue(), serialNumber, "Unexpected serial number value found");
     }
 
     /**
@@ -421,16 +429,16 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setEmitX509SKI(true);
 
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
 
         Assert.assertEquals(keyInfo.getX509Datas().size(), 1, "Unexpected number of X509Data elements");
-        X509Data x509Data = keyInfo.getX509Datas().get(0);
+        final X509Data x509Data = keyInfo.getX509Datas().get(0);
         Assert.assertEquals(x509Data.getX509SKIs().size(), 1, "Unexpected number of X509SKI elements");
-        X509SKI ski = x509Data.getX509SKIs().get(0);
-        byte[] skiValue = Base64Support.decode(StringSupport.trimOrNull(ski.getValue()));
+        final X509SKI ski = x509Data.getX509SKIs().get(0);
+        final byte[] skiValue = Base64Support.decode(
+                Constraint.isNotNull(StringSupport.trimOrNull(ski.getValue()), "SKI was null"));
         Assert.assertTrue(Arrays.equals(subjectKeyIdentifier, skiValue), "Unexpected SKI value found");
     }
     
@@ -446,16 +454,17 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
         factory.setX509DigestAlgorithmURI(SignatureConstants.ALGO_ID_DIGEST_SHA1);
         
         generator = factory.newInstance();
-        KeyInfo keyInfo = generator.generate(credential);
-        
+        final KeyInfo keyInfo = generator.generate(credential);
         assert keyInfo != null;
         Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
         
         Assert.assertEquals(keyInfo.getX509Datas().size(), 1, "Unexpected number of X509Data elements");
-        X509Data x509Data = keyInfo.getX509Datas().get(0);
+        final X509Data x509Data = keyInfo.getX509Datas().get(0);
         Assert.assertEquals(x509Data.getX509Digests().size(), 1, "Unexpected number of X509Digest elements");
-        X509Digest digest = x509Data.getX509Digests().get(0);
-        byte[] digestValue = Base64Support.decode(StringSupport.trimOrNull(digest.getValue()));
+        final X509Digest digest = x509Data.getX509Digests().get(0);
+        
+        final byte[] digestValue = Base64Support.decode(
+                Constraint.isNotNull(StringSupport.trimOrNull(digest.getValue()), "Digest was null"));
         Assert.assertTrue(Arrays.equals(x509Digest, digestValue), "Unexpected SHA-1 digest value found");
     }
 
@@ -606,14 +615,15 @@ public class X509KeyInfoGeneratorTest extends XMLObjectBaseTestCase {
 
         generator = factory.newInstance();
         keyInfo = generator.generate(credential);
-
         assert keyInfo != null;
-        Assert.assertNotNull(keyInfo.getOrderedChildren(), "Generated KeyInfo children list was null");
-        Assert.assertEquals(keyInfo.getOrderedChildren().size(), 4, "Unexpected # of KeyInfo children found");
+        
+        final List<XMLObject> children = keyInfo.getOrderedChildren();
+        assert children != null;
+        Assert.assertEquals(children.size(), 4, "Unexpected # of KeyInfo children found");
     }
     
     @DataProvider
-    public Object[][] keyInfoTypes() {
+    @Nonnull public Object[][] keyInfoTypes() {
        return new Object[][] {
           new Object[] { KeyInfo.class }, 
           new Object[] { OriginatorKeyInfo.class }, 
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/tests/KeyInfoSupportTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/tests/KeyInfoSupportTest.java
index d23f71db3..470877dac 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/tests/KeyInfoSupportTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/keyinfo/tests/KeyInfoSupportTest.java
@@ -28,7 +28,6 @@ import java.security.NoSuchProviderException;
 import java.security.PublicKey;
 import java.security.Security;
 import java.security.cert.CRLException;
-import java.security.cert.CertificateEncodingException;
 import java.security.cert.CertificateException;
 import java.security.interfaces.DSAParams;
 import java.security.interfaces.DSAPublicKey;
@@ -70,8 +69,10 @@ import org.opensaml.xmlsec.signature.X509CRL;
 import org.opensaml.xmlsec.signature.X509Certificate;
 import org.opensaml.xmlsec.signature.X509Data;
 import org.opensaml.xmlsec.signature.X509Digest;
+import org.opensaml.xmlsec.signature.X509IssuerName;
 import org.opensaml.xmlsec.signature.X509IssuerSerial;
 import org.opensaml.xmlsec.signature.X509SKI;
+import org.opensaml.xmlsec.signature.X509SerialNumber;
 import org.opensaml.xmlsec.signature.X509SubjectName;
 import org.opensaml.xmlsec.signature.Y;
 import org.opensaml.xmlsec.signature.support.SignatureConstants;
@@ -81,6 +82,7 @@ import com.google.common.base.Strings;
 import net.shibboleth.shared.codec.Base64Support;
 import net.shibboleth.shared.codec.DecodingException;
 import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.logic.Constraint;
 
 /**
  * Test to exercise the KeyInfoSupport methods to convert between XMLObject's contained within KeyInfo and Java security
@@ -381,8 +383,9 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         assert javaCert != null;
         Assert.assertEquals(javaCert.getSubjectX500Principal().getName(X500Principal.RFC2253), cert1SubjectDN,
                 "Cert1 SubjectDN");
-        Assert.assertEquals(javaCert, X509Support.decodeCertificate(xmlCert1.getValue()),
-                "Java cert was not the expected value");
+        final String xmlCert1Value = xmlCert1.getValue();
+        assert xmlCert1Value != null;
+        Assert.assertEquals(javaCert, X509Support.decodeCertificate(xmlCert1Value), "Java cert was not the expected value");
 
         List<java.security.cert.X509Certificate> javaCertList = KeyInfoSupport.getCertificates(xmlX509Data);
         Assert.assertEquals(javaCertList.size(), numExpectedCerts, "# of certs returned");
@@ -410,8 +413,9 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         final java.security.cert.X509CRL javaCRL = KeyInfoSupport.getCRL(xmlCRL1);
         assert javaCRL != null;
         Assert.assertEquals(javaCRL.getIssuerX500Principal().getName(X500Principal.RFC2253), crl1IssuerDN, "CRL IssuerDN");
-        Assert.assertEquals(javaCRL, X509Support.decodeCRL(xmlCRL1.getValue()),
-                "Java CRL was not the expected value");
+        final String crl1 = xmlCRL1.getValue();
+        assert crl1 != null;
+        Assert.assertEquals(javaCRL, X509Support.decodeCRL(crl1), "Java CRL was not the expected value");
 
         List<java.security.cert.X509CRL> javaCRLList = KeyInfoSupport.getCRLs(xmlX509Data);
 
@@ -433,7 +437,9 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testCertConversionJavaToXML() throws CertificateException {
         final X509Certificate xmlCert = KeyInfoSupport.buildX509Certificate(javaCert1);
-        Assert.assertEquals(X509Support.decodeCertificate(xmlCert.getValue()), javaCert1,
+        final String val = xmlCert.getValue();
+        assert val != null;
+        Assert.assertEquals(X509Support.decodeCertificate(val), javaCert1,
                 "Java X509Certificate encoding to XMLObject failed");
     }
 
@@ -446,7 +452,9 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testCRLConversionJavaToXML() throws CertificateException, CRLException {
         final X509CRL xmlCRL = KeyInfoSupport.buildX509CRL(javaCRL1);
-        Assert.assertEquals(X509Support.decodeCRL(xmlCRL.getValue()), javaCRL1,
+        final String val = xmlCRL.getValue();
+        assert val != null;
+        Assert.assertEquals(X509Support.decodeCRL(val), javaCRL1,
                 "Java X509CRL encoding to XMLObject failed");
     }
     
@@ -542,7 +550,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
             Assert.fail("RSA key conversion XML to Java failed: " + e);
         }
         ecKey = (ECPublicKey) key;
-        Assert.assertNotNull(ecKey, "Generated key was not an instance of ECPublicKey");
+        assert ecKey != null;
         // The standard equals() test below doesn't work b/c the standard ECParameterSpec doesn't really implement equals()beyond
         // the standard reference compare, and the control key is from BC, so the instance object isn't the same (constant one) as from SunEC.
         // So use our Enhanced- equality wrapper helper instead.
@@ -558,14 +566,22 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testDHConversionJavaToXML() throws EncodingException {
         DHKeyValue dhKeyValue = KeyInfoSupport.buildDHKeyValue(javaDHPubKey1);
-        Assert.assertNotNull(dhKeyValue);
-        Assert.assertEquals(dhKeyValue
-                .getPublic().getValueBigInt(), javaDHPubKey1.getY(), "Generated DHKeyValue Public component was not the expected value");
-        Assert.assertEquals(dhKeyValue.getP().getValueBigInt(), javaDHPubKey1.getParams().getP(),
+        assert dhKeyValue != null;
+        Assert.assertEquals(
+                Constraint.isNotNull(dhKeyValue.getPublic(), "Public was null").getValueBigInt(),
+                javaDHPubKey1.getY(),
+                "Generated DHKeyValue Public component was not the expected value");
+        Assert.assertEquals(
+                Constraint.isNotNull(dhKeyValue.getP(), "P was null").getValueBigInt(),
+                javaDHPubKey1.getParams().getP(),
                 "Generated DHKeyValue P component was not the expected value");
-        Assert.assertEquals(dhKeyValue.getGenerator().getValueBigInt(), javaDHPubKey1.getParams().getG(),
+        Assert.assertEquals(
+                Constraint.isNotNull(dhKeyValue.getGenerator(), "Generator was null").getValueBigInt(),
+                javaDHPubKey1.getParams().getG(),
                 "Generated DHKeyValue Generator component was not the expected value");
-        Assert.assertEquals(dhKeyValue.getQ().getValueBigInt(), DHSupport.getPrimeQDomainParameter(javaDHPubKey1),
+        Assert.assertEquals(
+                Constraint.isNotNull(dhKeyValue.getQ(), "Q was null").getValueBigInt(),
+                DHSupport.getPrimeQDomainParameter(javaDHPubKey1),
                 "Generated DHKeyValue Q component was not the expected value");
     }
 
@@ -574,14 +590,22 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testDSAConversionJavaToXML() throws EncodingException {
         DSAKeyValue dsaKeyValue = KeyInfoSupport.buildDSAKeyValue(javaDSAPubKey1);
-        Assert.assertNotNull(dsaKeyValue);
-        Assert.assertEquals(dsaKeyValue
-                .getY().getValueBigInt(), javaDSAPubKey1.getY(), "Generated DSAKeyValue Y component was not the expected value");
-        Assert.assertEquals(dsaKeyValue.getP().getValueBigInt(), javaDSAPubKey1.getParams().getP(),
+        assert dsaKeyValue != null;
+        Assert.assertEquals(
+                Constraint.isNotNull(dsaKeyValue.getY(), "Y was null").getValueBigInt(),
+                javaDSAPubKey1.getY(),
+                "Generated DSAKeyValue Y component was not the expected value");
+        Assert.assertEquals(
+                Constraint.isNotNull(dsaKeyValue.getP(), "P was null").getValueBigInt(),
+                javaDSAPubKey1.getParams().getP(),
                 "Generated DSAKeyValue P component was not the expected value");
-        Assert.assertEquals(dsaKeyValue.getQ().getValueBigInt(), javaDSAPubKey1.getParams().getQ(),
+        Assert.assertEquals(
+                Constraint.isNotNull(dsaKeyValue.getQ(), "Q was null").getValueBigInt(),
+                javaDSAPubKey1.getParams().getQ(),
                 "Generated DSAKeyValue Q component was not the expected value");
-        Assert.assertEquals(dsaKeyValue.getG().getValueBigInt(), javaDSAPubKey1.getParams().getG(),
+        Assert.assertEquals(
+                Constraint.isNotNull(dsaKeyValue.getG(), "G was null").getValueBigInt(),
+                javaDSAPubKey1.getParams().getG(),
                 "Generated DSAKeyValue G component was not the expected value");
     }
 
@@ -590,11 +614,15 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testRSAConversionJavaToXML() throws EncodingException {
         RSAKeyValue rsaKeyValue = KeyInfoSupport.buildRSAKeyValue(javaRSAPubKey1);
-        Assert.assertNotNull(rsaKeyValue);
-        Assert.assertEquals(rsaKeyValue.getModulus().getValueBigInt(), javaRSAPubKey1.getModulus(),
+        assert rsaKeyValue != null;
+        Assert.assertEquals(
+                Constraint.isNotNull(rsaKeyValue.getModulus(), "Modulus was null").getValueBigInt(),
+                javaRSAPubKey1.getModulus(),
                 "Generated RSAKeyValue modulus component was not the expected value");
-        Assert.assertEquals(rsaKeyValue.getExponent().getValueBigInt(),
-                javaRSAPubKey1.getPublicExponent(), "Generated RSAKeyValue exponent component was not the expected value");
+        Assert.assertEquals(
+                Constraint.isNotNull(rsaKeyValue.getExponent(), "Exponent was null").getValueBigInt(),
+                javaRSAPubKey1.getPublicExponent(),
+                "Generated RSAKeyValue exponent component was not the expected value");
     }
 
     /** Test conversion of EC public keys from Java security native type to XML. 
@@ -604,11 +632,19 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testECConversionJavaToXMLWithNamedCurve() throws EncodingException, KeyException, DecodingException {
         ECKeyValue ecKeyValue = KeyInfoSupport.buildECKeyValue(javaECPubKey_NamedCurve1);
-        Assert.assertNotNull(ecKeyValue);
-        Assert.assertEquals(ecKeyValue.getNamedCurve().getURI(), "urn:oid:" + ecPubKey_NamedCurve1_OID);
-        Assert.assertEquals(ECSupport.decodeECPoint(Base64Support.decode(ecKeyValue.getPublicKey().getValue()),
-                ECSupport.getNamedCurve("urn:oid:" + ecPubKey_NamedCurve1_OID).getParameterSpec().getCurve()),
-                javaECPubKey_NamedCurve1.getW());
+        assert ecKeyValue != null;
+        Assert.assertEquals(
+                Constraint.isNotNull(ecKeyValue.getNamedCurve(), "NamedCurve").getURI(),
+                "urn:oid:" + ecPubKey_NamedCurve1_OID);
+        final org.opensaml.xmlsec.signature.PublicKey pubKey = ecKeyValue.getPublicKey();
+        assert pubKey != null;
+        
+        final var curve = ECSupport.getNamedCurve("urn:oid:" + ecPubKey_NamedCurve1_OID);
+        assert curve != null;
+        Assert.assertEquals(
+                ECSupport.decodeECPoint(
+                        Base64Support.decode(Constraint.isNotNull(pubKey.getValue(), "Public key value was null")),
+                        curve.getParameterSpec().getCurve()), javaECPubKey_NamedCurve1.getW());
     }
 
     /** Test conversion of EC public keys from Java security native type to XML. 
@@ -618,11 +654,19 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
     @Test
     public void testECConversionJavaToXMLWithExplicitParameters() throws EncodingException, KeyException, DecodingException {
         ECKeyValue ecKeyValue = KeyInfoSupport.buildECKeyValue(javaECPubKey_ExplicitParams1);
-        Assert.assertNotNull(ecKeyValue);
-        Assert.assertEquals(ecKeyValue.getNamedCurve().getURI(), "urn:oid:" + ecPubKey_ExplicitParams1_OID);
-        Assert.assertEquals(ECSupport.decodeECPoint(Base64Support.decode(ecKeyValue.getPublicKey().getValue()),
-                ECSupport.getNamedCurve("urn:oid:" + ecPubKey_ExplicitParams1_OID).getParameterSpec().getCurve()),
-                javaECPubKey_ExplicitParams1.getW());
+        assert ecKeyValue != null;
+        Assert.assertEquals(
+                Constraint.isNotNull(ecKeyValue.getNamedCurve(), "NamedCurve").getURI(),
+                "urn:oid:" + ecPubKey_ExplicitParams1_OID);
+        final org.opensaml.xmlsec.signature.PublicKey pubKey = ecKeyValue.getPublicKey();
+        assert pubKey != null;
+
+        final var curve = ECSupport.getNamedCurve("urn:oid:" + ecPubKey_ExplicitParams1_OID);
+        assert curve != null;
+        Assert.assertEquals(
+                ECSupport.decodeECPoint(
+                        Base64Support.decode(Constraint.isNotNull(pubKey.getValue(), "Public key value was null")),
+                        curve.getParameterSpec().getCurve()), javaECPubKey_ExplicitParams1.getW());
     }
 
     /** Tests extracting a DH public key from a KeyValue. */
@@ -695,7 +739,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         KeyValue kv = keyInfo.getKeyValues().get(0);
         Assert.assertNotNull(kv, "KeyValue was null");
         DSAKeyValue dsaKeyValue = kv.getDSAKeyValue();
-        Assert.assertNotNull(dsaKeyValue, "DSAKeyValue was null");
+        assert dsaKeyValue != null;
 
         DSAPublicKey javaKey = null;
         try {
@@ -719,7 +763,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         KeyValue kv = keyInfo.getKeyValues().get(0);
         Assert.assertNotNull(kv, "KeyValue was null");
         DHKeyValue dhKeyValue = kv.getDHKeyValue();
-        Assert.assertNotNull(dhKeyValue, "DHKeyValue was null");
+        assert dhKeyValue != null;
 
         DHPublicKey javaKey = null;
         try {
@@ -743,7 +787,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         KeyValue kv = keyInfo.getKeyValues().get(0);
         Assert.assertNotNull(kv, "KeyValue was null");
         RSAKeyValue rsaKeyValue = kv.getRSAKeyValue();
-        Assert.assertNotNull(rsaKeyValue, "RSAKeyValue was null");
+        assert rsaKeyValue != null;
 
         RSAPublicKey javaKey = null;
         try {
@@ -767,7 +811,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         KeyValue kv = keyInfo.getKeyValues().get(0);
         Assert.assertNotNull(kv, "KeyValue was null");
         ECKeyValue ecKeyValue = kv.getECKeyValue();
-        Assert.assertNotNull(ecKeyValue, "ECKeyValue was null");
+        assert ecKeyValue != null;
 
         ECPublicKey javaKey = null;
         try {
@@ -791,7 +835,7 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         KeyValue kv = keyInfo.getKeyValues().get(0);
         Assert.assertNotNull(kv, "KeyValue was null");
         ECKeyValue ecKeyValue = kv.getECKeyValue();
-        Assert.assertNotNull(ecKeyValue, "ECKeyValue was null");
+        assert ecKeyValue != null;
 
         ECPublicKey javaKey = null;
         try {
@@ -799,6 +843,8 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         } catch (KeyException e) {
             Assert.fail("Extraction of Java key failed: " + e);
         }
+        
+        assert javaKey != null;
 
         // The standard equals() test below doesn't work b/c the standard ECParameterSpec doesn't really implement equals()beyond
         // the standard reference compare, and the control key is from BC, so the instance object isn't the same (constant one) as from SunEC.
@@ -1019,11 +1065,13 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         X509IssuerSerial xmlIssuerSerial = KeyInfoSupport.buildX509IssuerSerial(name, serialNumber);
         Assert.assertNotNull(xmlIssuerSerial, "Constructed X509IssuerSerial was null");
 
-        Assert.assertNotNull(xmlIssuerSerial.getX509IssuerName(), "Constructed X509IssuerName was null");
-        Assert.assertEquals(xmlIssuerSerial.getX509IssuerName().getValue(), name, "Unexpected issuer name value");
+        final X509IssuerName issuerName = xmlIssuerSerial.getX509IssuerName();
+        assert issuerName != null;
+        Assert.assertEquals(issuerName.getValue(), name, "Unexpected issuer name value");
 
-        Assert.assertNotNull(xmlIssuerSerial.getX509SerialNumber(), "Constructed X509SerialNumber was null");
-        Assert.assertEquals(xmlIssuerSerial.getX509SerialNumber().getValue(), serialNumber, "Unexpected serial number");
+        final X509SerialNumber issuerSerial = xmlIssuerSerial.getX509SerialNumber();
+        assert issuerSerial != null;
+        Assert.assertEquals(issuerSerial.getValue(), serialNumber, "Unexpected serial number");
     }
 
     /**
@@ -1035,18 +1083,20 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testBuildSubjectKeyIdentifier() throws CertificateException, DecodingException, SecurityException {
-        byte[] skiValue = Base64Support.decode(cert1SKIPlainBase64);
-        X509SKI xmlSKI = KeyInfoSupport.buildX509SKI(javaCert1);
-        Assert.assertNotNull(xmlSKI, "Constructed X509SKI was null");
-        Assert.assertFalse(Strings.isNullOrEmpty(xmlSKI.getValue()), "SKI value was empty");
-        byte[] xmlValue = Base64Support.decode(xmlSKI.getValue());
+        final byte[] skiValue = Base64Support.decode(cert1SKIPlainBase64);
+        final X509SKI xmlSKI = KeyInfoSupport.buildX509SKI(javaCert1);
+        assert xmlSKI != null;
+        final String SKI = xmlSKI.getValue();
+        Assert.assertFalse(Strings.isNullOrEmpty(SKI), "SKI value was empty");
+        assert SKI != null;
+        byte[] xmlValue = Base64Support.decode(SKI);
         Assert.assertNotNull(xmlValue, "Decoded XML SKI value was null");
         Assert.assertTrue(Arrays.equals(skiValue, xmlValue), "Incorrect SKI value");
 
         // Test that a cert with no SKI produces null
         java.security.cert.X509Certificate noExtCert = X509Support.decodeCertificate(certNoExtensions);
         Assert.assertNotNull(noExtCert);
-        X509SKI noExtXMLSKI = KeyInfoSupport.buildX509SKI(noExtCert);
+        final X509SKI noExtXMLSKI = KeyInfoSupport.buildX509SKI(noExtCert);
         Assert.assertNull(noExtXMLSKI, "Building X509SKI from cert without SKI should have generated null");
     }
 
@@ -1065,9 +1115,14 @@ public class KeyInfoSupportTest extends XMLObjectBaseTestCase {
         } catch (NoSuchAlgorithmException e) {
             Assert.fail("Digest algorithm missing: " + e);
         }
+        
+        assert xmlDigest != null;
+        final String digest = xmlDigest.getValue();
+        
         Assert.assertNotNull(xmlDigest, "Constructed X509Digest was null");
-        Assert.assertFalse(Strings.isNullOrEmpty(xmlDigest.getValue()), "Digest value was empty");
-        byte[] xmlValue = Base64Support.decode(xmlDigest.getValue());
+        Assert.assertFalse(Strings.isNullOrEmpty(digest), "Digest value was empty");
+        assert digest != null;
+        final byte[] xmlValue = Base64Support.decode(digest);
         Assert.assertNotNull(xmlValue, "Decoded X509Digest value was null");
         Assert.assertTrue(Arrays.equals(digestValue, xmlValue), "Incorrect digest value");
     }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngineTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngineTest.java
index c22916a37..ec4ea1761 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngineTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngineTest.java
@@ -23,7 +23,6 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.shared.logic.ConstraintViolationException;
 import net.shibboleth.shared.resolver.CriteriaSet;
 
 import org.opensaml.core.criterion.EntityIdCriterion;
@@ -91,11 +90,6 @@ public class ChainingSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         engine.validate(token, criteriaSet);
     }
 
-    @Test(expectedExceptions = ConstraintViolationException.class)
-    public void testNullChain() {
-        engine = new ChainingSignatureTrustEngine(null);
-    }
-
     /** Mock trust engine. */
     private class MockSignatureTrustEngine implements SignatureTrustEngine {
 
@@ -106,7 +100,8 @@ public class ChainingSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         }
 
         /** {@inheritDoc} */
-        public boolean validate(Signature tok, CriteriaSet trustBasisCriteria) throws SecurityException {
+        public boolean validate(@Nonnull final Signature tok, @Nullable final CriteriaSet trustBasisCriteria)
+                throws SecurityException {
             if (trusted == null) {
                 throw new SecurityException("This means an error happened");
             }
@@ -114,8 +109,8 @@ public class ChainingSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         }
 
         /** {@inheritDoc} */
-        public boolean validate(@Nonnull byte[] signature, @Nonnull byte[] content, @Nonnull String algorithmURI,
-                @Nullable CriteriaSet trustBasisCriteria, @Nullable Credential candidateCredential)
+        public boolean validate(@Nonnull final byte[] signature, @Nonnull final byte[] content, @Nonnull final String algorithmURI,
+                @Nullable final CriteriaSet trustBasisCriteria, @Nullable final Credential candidateCredential)
                 throws SecurityException {
             if (trusted == null) {
                 throw new SecurityException("This means an error happened");
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ExplicitKeySignatureTrustEngineTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ExplicitKeySignatureTrustEngineTest.java
index be6d11dd6..e7f918555 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ExplicitKeySignatureTrustEngineTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ExplicitKeySignatureTrustEngineTest.java
@@ -195,8 +195,9 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testSuccess() throws SecurityException {
         trustedCredentials.add(signingX509Cred);
         
-        SignableXMLObject signableXO = getValidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getValidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertTrue(engine.validate(signature, criteriaSet), "Signature was valid and signing cred was trusted");
     }
     
@@ -207,8 +208,9 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
      */
     @Test
     public void testUntrustedCredential() throws SecurityException {
-        SignableXMLObject signableXO = getValidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getValidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertFalse(engine.validate(signature, criteriaSet), "Signature was valid, but signing cred was untrusted");
     }
     
@@ -221,8 +223,9 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testInvalidSignature() throws SecurityException {
         trustedCredentials.add(signingX509Cred);
         
-        SignableXMLObject signableXO = getInvalidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getInvalidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertFalse(engine.validate(signature, criteriaSet), "Signature was invalid due to document modification");
         
     }
@@ -236,15 +239,16 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testWhitelistedAlgorithms() throws SecurityException {
         trustedCredentials.add(signingX509Cred);
         
-        HashSet<String> algos = new HashSet<>();
+        final HashSet<String> algos = new HashSet<>();
         algos.add(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
         algos.add(SignatureConstants.ALGO_ID_DIGEST_SHA1);
-        SignatureValidationParameters validationParams = new SignatureValidationParameters();
+        final SignatureValidationParameters validationParams = new SignatureValidationParameters();
         validationParams.setIncludedAlgorithms(algos);
         criteriaSet.add(new SignatureValidationParametersCriterion(validationParams));
         
-        SignableXMLObject signableXO = getValidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getValidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertTrue(engine.validate(signature, criteriaSet), "Signature was valid with whitelisted algorithms");
     }
     
@@ -256,14 +260,15 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testBlacklistedSignatureAlgorithm() throws SecurityException {
         trustedCredentials.add(signingX509Cred);
         
-        HashSet<String> algos = new HashSet<>();
+        final HashSet<String> algos = new HashSet<>();
         algos.add(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
-        SignatureValidationParameters validationParams = new SignatureValidationParameters();
+        final SignatureValidationParameters validationParams = new SignatureValidationParameters();
         validationParams.setExcludedAlgorithms(algos);
         criteriaSet.add(new SignatureValidationParametersCriterion(validationParams));
         
-        SignableXMLObject signableXO = getValidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getValidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertFalse(engine.validate(signature, criteriaSet), "Signature algorithm was blacklisted");
     }
     
@@ -275,14 +280,15 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testBlacklistedDigestAlgorithm() throws SecurityException {
         trustedCredentials.add(signingX509Cred);
         
-        HashSet<String> algos = new HashSet<>();
+        final HashSet<String> algos = new HashSet<>();
         algos.add(SignatureConstants.ALGO_ID_DIGEST_SHA1);
-        SignatureValidationParameters validationParams = new SignatureValidationParameters();
+        final SignatureValidationParameters validationParams = new SignatureValidationParameters();
         validationParams.setExcludedAlgorithms(algos);
         criteriaSet.add(new SignatureValidationParametersCriterion(validationParams));
         
-        SignableXMLObject signableXO = getValidSignedObject();
-        Signature signature = signableXO.getSignature();
+        final SignableXMLObject signableXO = getValidSignedObject();
+        final Signature signature = signableXO.getSignature();
+        assert signature != null;
         Assert.assertFalse(engine.validate(signature, criteriaSet), "Digest algorithm was blacklisted");
     } 
     
@@ -417,8 +423,9 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
         signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
         signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
         signature.setSigningCredential(signingX509Cred);
-        
-        DocumentInternalIDContentReference idContentRef = new DocumentInternalIDContentReference(sxo.getId());
+        final String id = sxo.getId();
+        assert id != null;
+        DocumentInternalIDContentReference idContentRef = new DocumentInternalIDContentReference(id);
         idContentRef.setDigestAlgorithm(SignatureConstants.ALGO_ID_DIGEST_SHA1);
         idContentRef.getTransforms().add(SignatureConstants.TRANSFORM_ENVELOPED_SIGNATURE);
         idContentRef.getTransforms().add(SignatureConstants.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
@@ -438,7 +445,7 @@ public class ExplicitKeySignatureTrustEngineTest extends XMLObjectBaseTestCase {
         sxo.setSignature(signature);
         
         try {
-            XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(sxo).marshall(sxo);
+            XMLObjectProviderRegistrySupport.getMarshallerFactory().ensureMarshaller(sxo).marshall(sxo);
         } catch (MarshallingException e) {
             Assert.fail("Error marshalling object for signing: " + e);
         }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/PKIXSignatureTrustEngineTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/PKIXSignatureTrustEngineTest.java
index 5ecc9e848..364223082 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/PKIXSignatureTrustEngineTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/PKIXSignatureTrustEngineTest.java
@@ -19,6 +19,7 @@ package org.opensaml.xmlsec.signature.support.impl;
 
 import java.io.InputStream;
 import java.security.PrivateKey;
+import java.security.PublicKey;
 import java.security.cert.X509CRL;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
@@ -27,6 +28,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import org.opensaml.core.criterion.EntityIdCriterion;
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -62,6 +66,7 @@ import org.testng.annotations.Test;
 import org.w3c.dom.Element;
 import org.w3c.dom.Text;
 
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**
@@ -445,7 +450,9 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
     public void testRawWrongCredType() throws SecurityException {
         rawCandidateCred = getCredential("foo-1A1-good.crt", "foo-1A1-good.key");
         rawSignature = XMLSigningUtil.signWithURI(rawCandidateCred, rawAlgorithmURI, rawSignedContent);
-        rawCandidateCred = CredentialSupport.getSimpleCredential(rawCandidateCred.getPublicKey(), null);
+        final PublicKey pubKey = rawCandidateCred.getPublicKey();
+        assert pubKey != null;
+        rawCandidateCred = CredentialSupport.getSimpleCredential(pubKey, null);
         engine = getEngine(
                 getCertificates("root1-ca.crt", "inter1A-ca.crt", "inter1A1-ca.crt"),
                 EMPTY_CRLS,
@@ -521,7 +528,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         }
     }
     
-    private Signature getSignature(String entityCertFileName, String entityKeyFileName, String ... chainMembers) {
+    @Nonnull private Signature getSignature(String entityCertFileName, String entityKeyFileName, String ... chainMembers) {
         X509Credential cred = getCredential(entityCertFileName, entityKeyFileName, chainMembers);
         
         SignableXMLObject sxo = null;
@@ -534,7 +541,9 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         //System.out.println(XMLHelper.prettyPrintXML(sxo.getDOM()));
         
         //Unmarshall a new XMLObject tree around the DOM, just to avoid any xmlsec bugs or side effects.
+        assert sxo != null;
         Element signedDOM = sxo.getDOM();
+        assert signedDOM != null;
         if (tamperDocumentPostSigning) {
             Element newChild = signedDOM.getOwnerDocument().createElementNS(SimpleXMLObject.NAMESPACE, 
                     SimpleXMLObject.NAMESPACE_PREFIX + ":" + SimpleXMLObject.LOCAL_NAME);
@@ -545,18 +554,20 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         
         SignableXMLObject verifiableSXO = null;
         try {
-            verifiableSXO = (SignableXMLObject) unmarshallerFactory.getUnmarshaller(signedDOM).unmarshall(signedDOM);
-        } catch (UnmarshallingException e) {
+            verifiableSXO = (SignableXMLObject) unmarshallerFactory.ensureUnmarshaller(signedDOM).unmarshall(signedDOM);
+        } catch (final UnmarshallingException e) {
             Assert.fail("Error unmarshalling new signed object: " + e.getMessage());
         }
         
         //System.out.println(XMLHelper.prettyPrintXML(verifiableSXO.getDOM()));
-        
-        return verifiableSXO.getSignature();
+     
+        assert verifiableSXO != null;
+        return Constraint.isNotNull(verifiableSXO.getSignature(), "Signature was null");
     }
 
     private BasicX509Credential getCredential(String entityCertFileName, String entityKeyFileName, String ... chainMembers) {
         X509Certificate entityCert = getCertificate(entityCertFileName);
+        assert entityCert != null;
         BasicX509Credential cred = new BasicX509Credential(entityCert);
         
         PrivateKey privateKey = getPrivateKey(entityKeyFileName);
@@ -574,7 +585,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         return cred;
     }
     
-    private PKIXSignatureTrustEngine getEngine(Collection<X509Certificate> certs,
+    @Nonnull private PKIXSignatureTrustEngine getEngine(Collection<X509Certificate> certs,
                 Collection<X509CRL> crls, Integer depth, String ... trustedNames) {
         
         PKIXValidationInformation info = getPKIXInfoSet(certs, crls, depth);
@@ -592,12 +603,12 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         return new PKIXSignatureTrustEngine(resolver, XMLSecurityTestingSupport.buildBasicInlineKeyInfoResolver());
     }
     
-    private PKIXValidationInformation getPKIXInfoSet(Collection<X509Certificate> certs,
+    @Nonnull private PKIXValidationInformation getPKIXInfoSet(Collection<X509Certificate> certs,
                 Collection<X509CRL> crls, Integer depth) {
         return new BasicPKIXValidationInformation(certs, crls, depth);
     }
     
-    private Collection<X509Certificate> getCertificates(String ... certNames) {
+    @Nonnull private Collection<X509Certificate> getCertificates(final String ... certNames) {
         Set<X509Certificate> certs = new HashSet<>();
         for (String certName : certNames) {
            certs.add( getCertificate(certName) );
@@ -618,7 +629,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
     }
 
     
-    private X509Certificate getCertificate(String fileName) {
+    @Nullable private X509Certificate getCertificate(String fileName) {
         try {
             InputStream ins = getInputStream(fileName);
             byte[] encoded = new byte[ins.available()];
@@ -630,7 +641,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         return null;
     }
     
-    private Collection<X509CRL> getCRLS(String ... crlNames) {
+    @Nonnull private Collection<X509CRL> getCRLS(String ... crlNames) {
         Set<X509CRL> crls = new HashSet<>();
         for (String crlName : crlNames) {
            crls.add( getCRL(crlName) );
@@ -638,7 +649,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         return crls;
     }
     
-    private X509CRL getCRL(String fileName) {
+    @Nullable private X509CRL getCRL(String fileName) {
         try {
             InputStream ins = getInputStream(fileName);
             byte[] encoded = new byte[ins.available()];
@@ -650,11 +661,11 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         return null;
     }
     
-    private InputStream getInputStream(String fileName) {
+    @Nonnull private InputStream getInputStream(String fileName) {
         return  PKIXSignatureTrustEngineTest.class.getResourceAsStream(DATA_PATH + fileName);
     }
     
-    private SignableXMLObject buildSignedObject(X509Credential signingX509Cred) throws SignatureException {
+    @Nonnull private SignableXMLObject buildSignedObject(X509Credential signingX509Cred) throws SignatureException {
         SignableSimpleXMLObject sxo = (SignableSimpleXMLObject) buildXMLObject(SignableSimpleXMLObject.ELEMENT_NAME);
         sxo.setId("abc123");
         
@@ -667,7 +678,9 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         sig.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
         sig.setSigningCredential(signingX509Cred);
         
-        DocumentInternalIDContentReference idContentRef = new DocumentInternalIDContentReference(sxo.getId());
+        final String id = sxo.getId();
+        assert id != null;
+        DocumentInternalIDContentReference idContentRef = new DocumentInternalIDContentReference(id);
         idContentRef.setDigestAlgorithm(SignatureConstants.ALGO_ID_DIGEST_SHA1);
         idContentRef.getTransforms().add(SignatureConstants.TRANSFORM_ENVELOPED_SIGNATURE);
         idContentRef.getTransforms().add(SignatureConstants.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
@@ -695,7 +708,7 @@ public class PKIXSignatureTrustEngineTest extends XMLObjectBaseTestCase {
         sxo.setSignature(sig);
         
         try {
-            XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(sxo).marshall(sxo);
+            XMLObjectProviderRegistrySupport.getMarshallerFactory().ensureMarshaller(sxo).marshall(sxo);
         } catch (MarshallingException e) {
             Assert.fail("Error marshalling object for signing: " + e);
         }
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/DetachedSignatureTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/DetachedSignatureTest.java
index da450bb45..1e134f117 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/DetachedSignatureTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/DetachedSignatureTest.java
@@ -18,10 +18,14 @@
 package org.opensaml.xmlsec.signature.support.tests;
 
 import java.security.KeyPair;
+import java.util.List;
+
+import javax.annotation.Nonnull;
 
 import org.apache.xml.security.utils.resolver.ResourceResolver;
 import org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP;
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
+import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.XMLObjectBuilder;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.core.xml.io.Marshaller;
@@ -41,12 +45,12 @@ import org.opensaml.xmlsec.signature.support.SignatureValidator;
 import org.opensaml.xmlsec.signature.support.Signer;
 import org.opensaml.xmlsec.signature.support.URIContentReference;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 import org.w3c.dom.Element;
 
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.testing.RepositorySupport;
 import net.shibboleth.shared.xml.SerializeSupport;
 import net.shibboleth.shared.xml.impl.BasicParserPool;
@@ -55,7 +59,7 @@ import net.shibboleth.shared.xml.impl.BasicParserPool;
 public class DetachedSignatureTest extends XMLObjectBaseTestCase {
 
     /** Class logger. */
-    private final Logger log = LoggerFactory.getLogger(EnvelopedSignatureTest.class);
+    @Nonnull private final Logger log = LoggerFactory.getLogger(EnvelopedSignatureTest.class);
 
     /** Key resolver containing proper verification key. */
     private BasicCredential goodCredential;
@@ -104,7 +108,7 @@ public class DetachedSignatureTest extends XMLObjectBaseTestCase {
         SignableSimpleXMLObject sxo = getXMLObjectWithSignature();
         Signature signature = sxo.getSignature();
 
-        Marshaller marshaller = XMLObjectProviderRegistrySupport.getMarshallerFactory().ensureMarshaller(sxo);
+        final Marshaller marshaller = XMLObjectProviderRegistrySupport.getMarshallerFactory().ensureMarshaller(sxo);
         Element signedElement = marshaller.marshall(sxo);
 
         assert signature != null;
@@ -113,9 +117,11 @@ public class DetachedSignatureTest extends XMLObjectBaseTestCase {
             log.debug("Marshalled deatched Signature: \n" + SerializeSupport.nodeToString(signedElement));
         }
 
-        Unmarshaller unmarshaller = XMLObjectProviderRegistrySupport.getUnmarshallerFactory().ensureUnmarshaller(signedElement);
+        final Unmarshaller unmarshaller = XMLObjectProviderRegistrySupport.getUnmarshallerFactory().ensureUnmarshaller(signedElement);
         sxo = (SignableSimpleXMLObject) unmarshaller.unmarshall(signedElement);
-        signature = (Signature) sxo.getOrderedChildren().get(1);
+        final List<XMLObject> children = sxo.getOrderedChildren();
+        assert children != null;
+        signature = (Signature) children.get(1);
 
         SignatureValidator.validate(signature, goodCredential);
 
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/EnvelopedSignatureTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/EnvelopedSignatureTest.java
index a7b9da143..b58bf74b5 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/EnvelopedSignatureTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/EnvelopedSignatureTest.java
@@ -22,6 +22,8 @@ import java.security.GeneralSecurityException;
 import java.security.KeyPair;
 import java.security.PublicKey;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObjectBuilder;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -43,7 +45,6 @@ import org.opensaml.xmlsec.signature.support.SignatureException;
 import org.opensaml.xmlsec.signature.support.SignatureValidator;
 import org.opensaml.xmlsec.signature.support.Signer;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -51,6 +52,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import jakarta.xml.bind.ValidationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.xml.SerializeSupport;
 import net.shibboleth.shared.xml.XMLParserException;
 
@@ -60,7 +62,7 @@ import net.shibboleth.shared.xml.XMLParserException;
 public class EnvelopedSignatureTest extends XMLObjectBaseTestCase {
 
     /** Class logger. */
-    private final Logger log = LoggerFactory.getLogger(EnvelopedSignatureTest.class);
+    @Nonnull private final Logger log = LoggerFactory.getLogger(EnvelopedSignatureTest.class);
 
     /** Credential used to sign and verify. */
     private Credential goodCredential;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/HMACSignatureTest.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/HMACSignatureTest.java
index 8d0b987a2..4521142d7 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/HMACSignatureTest.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/tests/HMACSignatureTest.java
@@ -20,6 +20,7 @@ package org.opensaml.xmlsec.signature.support.tests;
 import java.io.InputStream;
 import java.util.List;
 
+import javax.annotation.Nonnull;
 import javax.crypto.SecretKey;
 
 import org.apache.xml.security.signature.SignedInfo;
@@ -47,7 +48,6 @@ import org.opensaml.xmlsec.signature.support.SignatureException;
 import org.opensaml.xmlsec.signature.support.SignatureValidator;
 import org.opensaml.xmlsec.signature.support.Signer;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -55,6 +55,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import jakarta.xml.bind.ValidationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.shared.xml.SerializeSupport;
@@ -66,7 +67,7 @@ import net.shibboleth.shared.xml.XMLParserException;
 public class HMACSignatureTest extends XMLObjectBaseTestCase {
 
     /** Class logger. */
-    private final Logger log = LoggerFactory.getLogger(HMACSignatureTest.class);
+    @Nonnull private final Logger log = LoggerFactory.getLogger(HMACSignatureTest.class);
 
     /** Credential used to sign and verify. */
     private Credential goodCredential;
diff --git a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/testing/XMLSecurityTestingSupport.java b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/testing/XMLSecurityTestingSupport.java
index f4ffcfe40..f643802ec 100644
--- a/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/testing/XMLSecurityTestingSupport.java
+++ b/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/testing/XMLSecurityTestingSupport.java
@@ -20,6 +20,8 @@ package org.opensaml.xmlsec.testing;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.BasicProviderKeyInfoCredentialResolver;
 import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
@@ -42,12 +44,12 @@ public final class XMLSecurityTestingSupport {
      * 
      * @return a new KeyInfoCredentialResolver instance
      */
-    public static KeyInfoCredentialResolver buildBasicInlineKeyInfoResolver() {
+    @Nonnull public static KeyInfoCredentialResolver buildBasicInlineKeyInfoResolver() {
         return new BasicProviderKeyInfoCredentialResolver(getBasicInlineKeyInfoProviders());
     }
     
-    public static List<KeyInfoProvider> getBasicInlineKeyInfoProviders() {
-        List<KeyInfoProvider> providers = new ArrayList<>();
+    @Nonnull public static List<KeyInfoProvider> getBasicInlineKeyInfoProviders() {
+        final List<KeyInfoProvider> providers = new ArrayList<>();
         providers.add( new RSAKeyValueProvider() );
         providers.add( new DSAKeyValueProvider() );
         providers.add( new ECKeyValueProvider() );

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list