[java-opensaml] branch maint-4 updated: Lock parent version for new release

Brent Putman putmanb at georgetown.edu
Wed Mar 20 20:52:14 UTC 2024


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

putmanb pushed a commit to branch maint-4
in repository java-opensaml.

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

The following commit(s) were added to refs/heads/maint-4 by this push:
     new bc940255a Lock parent version for new release
bc940255a is described below

commit bc940255af327c317be02b527c94600bdda69a05
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Mar 20 16:52:12 2024 -0400

    Lock parent version for new release
---
 .../target/classes/META-INF/MANIFEST.MF            |   12 +
 .../org.opensaml/opensaml-core-api/pom.properties  |    7 +
 .../maven/org.opensaml/opensaml-core-api/pom.xml   |   82 +
 .../target/classes/org/opensaml/core/Version.class |  Bin 0 -> 992 bytes
 .../org/opensaml/core/config/Configuration.class   |  Bin 0 -> 811 bytes
 .../core/config/ConfigurationProperties.class      |  Bin 0 -> 528 bytes
 .../config/ConfigurationPropertiesSource.class     |  Bin 0 -> 313 bytes
 .../core/config/ConfigurationService.class         |  Bin 0 -> 7350 bytes
 .../core/config/InitializationException.class      |  Bin 0 -> 1017 bytes
 .../core/config/InitializationService.class        |  Bin 0 -> 2287 bytes
 .../org/opensaml/core/config/Initializer.class     |  Bin 0 -> 226 bytes
 .../org/opensaml/core/config/package-info.class    |  Bin 0 -> 236 bytes
 ...ctFilesystemConfigurationPropertiesSource.class |  Bin 0 -> 3054 bytes
 .../ClasspathConfigurationPropertiesSource.class   |  Bin 0 -> 2325 bytes
 .../provider/EmptyConfigurationProperties.class    |  Bin 0 -> 960 bytes
 .../config/provider/MapBasedConfiguration.class    |  Bin 0 -> 2687 bytes
 .../core/config/provider/PropertiesAdapter.class   |  Bin 0 -> 1720 bytes
 ...stemPropertyConfigurationPropertiesSource.class |  Bin 0 -> 963 bytes
 ...tyFilesystemConfigurationPropertiesSource.class |  Bin 0 -> 1017 bytes
 .../ThreadLocalConfigurationPropertiesHolder.class |  Bin 0 -> 1272 bytes
 .../ThreadLocalConfigurationPropertiesSource.class |  Bin 0 -> 1012 bytes
 .../core/config/provider/package-info.class        |  Bin 0 -> 245 bytes
 .../core/criterion/EntityIdCriterion.class         |  Bin 0 -> 1855 bytes
 .../core/criterion/SatisfyAnyCriterion.class       |  Bin 0 -> 1545 bytes
 .../org/opensaml/core/criterion/package-info.class |  Bin 0 -> 239 bytes
 .../metrics/LoggerDrivenMetricFilter$Level.class   |  Bin 0 -> 1565 bytes
 .../core/metrics/LoggerDrivenMetricFilter.class    |  Bin 0 -> 4706 bytes
 .../org/opensaml/core/metrics/MetricsSupport.class |  Bin 0 -> 4410 bytes
 .../org/opensaml/core/metrics/package-info.class   |  Bin 0 -> 237 bytes
 .../classes/org/opensaml/core/package-info.class   |  Bin 0 -> 229 bytes
 .../xml/AbstractElementExtensibleXMLObject.class   |  Bin 0 -> 2109 bytes
 ...tractElementExtensibleXMLObjectMarshaller.class |  Bin 0 -> 1019 bytes
 ...actElementExtensibleXMLObjectUnmarshaller.class |  Bin 0 -> 1145 bytes
 .../core/xml/AbstractExtensibleXMLObject.class     |  Bin 0 -> 1197 bytes
 .../AbstractExtensibleXMLObjectMarshaller.class    |  Bin 0 -> 1473 bytes
 .../AbstractExtensibleXMLObjectUnmarshaller.class  |  Bin 0 -> 1662 bytes
 .../org/opensaml/core/xml/AbstractXMLObject.class  |  Bin 0 -> 13772 bytes
 .../core/xml/AbstractXMLObjectBuilder.class        |  Bin 0 -> 3412 bytes
 .../opensaml/core/xml/AbstractXSAnyAdapter.class   |  Bin 0 -> 5223 bytes
 .../core/xml/AttributeExtensibleXMLObject.class    |  Bin 0 -> 344 bytes
 .../org/opensaml/core/xml/BaseBearing.class        |  Bin 0 -> 980 bytes
 .../core/xml/ElementExtensibleXMLObject.class      |  Bin 0 -> 750 bytes
 .../classes/org/opensaml/core/xml/IdBearing.class  |  Bin 0 -> 964 bytes
 .../org/opensaml/core/xml/LangBearing.class        |  Bin 0 -> 980 bytes
 .../classes/org/opensaml/core/xml/Namespace.class  |  Bin 0 -> 2333 bytes
 .../org/opensaml/core/xml/NamespaceManager.class   |  Bin 0 -> 11036 bytes
 .../core/xml/SpaceBearing$XMLSpaceEnum.class       |  Bin 0 -> 1634 bytes
 .../org/opensaml/core/xml/SpaceBearing.class       |  Bin 0 -> 1173 bytes
 .../classes/org/opensaml/core/xml/XMLObject.class  |  Bin 0 -> 2422 bytes
 .../org/opensaml/core/xml/XMLObjectBuilder.class   |  Bin 0 -> 1548 bytes
 .../core/xml/XMLObjectBuilderFactory.class         |  Bin 0 -> 5254 bytes
 .../opensaml/core/xml/XMLRuntimeException.class    |  Bin 0 -> 1083 bytes
 .../org/opensaml/core/xml/XSAnyAdapter.class       |  Bin 0 -> 297 bytes
 .../AbstractXMLObjectProviderInitializer.class     |  Bin 0 -> 3220 bytes
 .../xml/config/GlobalParserPoolInitializer.class   |  Bin 0 -> 2025 bytes
 .../xml/config/XMLConfigurationException.class     |  Bin 0 -> 1036 bytes
 .../opensaml/core/xml/config/XMLConfigurator.class |  Bin 0 -> 13210 bytes
 .../xml/config/XMLObjectProviderInitializer.class  |  Bin 0 -> 1585 bytes
 .../xml/config/XMLObjectProviderRegistry.class     |  Bin 0 -> 5491 bytes
 .../config/XMLObjectProviderRegistrySupport.class  |  Bin 0 -> 3980 bytes
 .../opensaml/core/xml/config/package-info.class    |  Bin 0 -> 240 bytes
 .../core/xml/io/AbstractXMLObjectMarshaller.class  |  Bin 0 -> 14253 bytes
 .../xml/io/AbstractXMLObjectUnmarshaller.class     |  Bin 0 -> 12712 bytes
 .../org/opensaml/core/xml/io/Marshaller.class      |  Bin 0 -> 755 bytes
 .../opensaml/core/xml/io/MarshallerFactory.class   |  Bin 0 -> 4314 bytes
 .../core/xml/io/MarshallingException.class         |  Bin 0 -> 1085 bytes
 .../org/opensaml/core/xml/io/Unmarshaller.class    |  Bin 0 -> 445 bytes
 .../opensaml/core/xml/io/UnmarshallerFactory.class |  Bin 0 -> 4456 bytes
 .../core/xml/io/UnmarshallingException.class       |  Bin 0 -> 1091 bytes
 .../org/opensaml/core/xml/io/package-info.class    |  Bin 0 -> 236 bytes
 .../org/opensaml/core/xml/package-info.class       |  Bin 0 -> 233 bytes
 ...ctConditionalLoadXMLObjectLoadSaveManager.class |  Bin 0 -> 2780 bytes
 .../ConditionalLoadXMLObjectLoadSaveManager.class  |  Bin 0 -> 793 bytes
 .../FilesystemLoadSaveManager$FileIterable.class   |  Bin 0 -> 2899 bytes
 .../FilesystemLoadSaveManager$FileIterator.class   |  Bin 0 -> 4591 bytes
 .../xml/persist/FilesystemLoadSaveManager.class    |  Bin 0 -> 15994 bytes
 .../core/xml/persist/MapLoadSaveManager.class      |  Bin 0 -> 7344 bytes
 .../xml/persist/XMLObjectLoadSaveManager.class     |  Bin 0 -> 1793 bytes
 .../opensaml/core/xml/persist/package-info.class   |  Bin 0 -> 241 bytes
 .../org/opensaml/core/xml/schema/XSAny.class       |  Bin 0 -> 1073 bytes
 .../opensaml/core/xml/schema/XSBase64Binary.class  |  Bin 0 -> 1007 bytes
 .../org/opensaml/core/xml/schema/XSBoolean.class   |  Bin 0 -> 1043 bytes
 .../opensaml/core/xml/schema/XSBooleanValue.class  |  Bin 0 -> 2650 bytes
 .../org/opensaml/core/xml/schema/XSDateTime.class  |  Bin 0 -> 1005 bytes
 .../org/opensaml/core/xml/schema/XSInteger.class   |  Bin 0 -> 994 bytes
 .../org/opensaml/core/xml/schema/XSQName.class     |  Bin 0 -> 1004 bytes
 .../org/opensaml/core/xml/schema/XSString.class    |  Bin 0 -> 989 bytes
 .../org/opensaml/core/xml/schema/XSURI.class       |  Bin 0 -> 974 bytes
 .../opensaml/core/xml/schema/package-info.class    |  Bin 0 -> 240 bytes
 .../org/opensaml/core/xml/util/AttributeMap.class  |  Bin 0 -> 13668 bytes
 .../org/opensaml/core/xml/util/IDIndex.class       |  Bin 0 -> 4275 bytes
 .../xml/util/IndexedXMLObjectChildrenList.class    |  Bin 0 -> 5753 bytes
 .../org/opensaml/core/xml/util/ListView.class      |  Bin 0 -> 5719 bytes
 .../core/xml/util/XMLAttributeSupport.class        |  Bin 0 -> 4927 bytes
 .../core/xml/util/XMLObjectChildrenList.class      |  Bin 0 -> 5608 bytes
 .../opensaml/core/xml/util/XMLObjectSource.class   |  Bin 0 -> 2064 bytes
 .../util/XMLObjectSupport$CloneOutputOption.class  |  Bin 0 -> 1505 bytes
 .../opensaml/core/xml/util/XMLObjectSupport.class  |  Bin 0 -> 16395 bytes
 .../org/opensaml/core/xml/util/package-info.class  |  Bin 0 -> 238 bytes
 .../target/classes/schema/XMLSchema.dtd            |  402 +++
 .../target/classes/schema/XMLSchema.xsd            | 2311 ++++++++++++++
 .../target/classes/schema/datatypes.dtd            |  203 ++
 opensaml-core-api/target/classes/schema/xml.xsd    |   80 +
 .../target/classes/schema/xmltooling-config.xsd    |   51 +
 .../target/maven-archiver/pom.properties           |    3 +
 .../compile/default-compile/createdFiles.lst       |   98 +
 .../compile/default-compile/inputFiles.lst         |   90 +
 .../default-testCompile/createdFiles.lst           |   10 +
 .../testCompile/default-testCompile/inputFiles.lst |    5 +
 .../opensaml-core-api-5.1.0-SNAPSHOT-tests.jar     |  Bin 0 -> 13341 bytes
 .../target/opensaml-core-api-5.1.0-SNAPSHOT.jar    |  Bin 0 -> 160673 bytes
 .../Surefire suite/Surefire test.html              |  125 +
 .../Surefire suite/Surefire test.xml               |   13 +
 .../target/surefire-reports/TEST-TestSuite.xml     |   98 +
 .../target/surefire-reports/TestSuite-output.txt   |   28 +
 .../target/surefire-reports/TestSuite.txt          |    4 +
 .../target/surefire-reports/bullet_point.png       |  Bin 0 -> 356 bytes
 .../target/surefire-reports/collapseall.gif        |  Bin 0 -> 157 bytes
 .../target/surefire-reports/emailable-report.html  |   26 +
 .../target/surefire-reports/failed.png             |  Bin 0 -> 977 bytes
 .../target/surefire-reports/index.html             |  485 +++
 .../target/surefire-reports/jquery-3.6.0.min.js    |    2 +
 ...ensaml.core.config.ConfigurationServiceTest.xml |    8 +
 ....ClasspathConfigurationPropertiesSourceTest.xml |    6 +
 ...FilesystemConfigurationPropertiesSourceTest.xml |    6 +
 ...hreadLocalConfigurationPropertiesSourceTest.xml |    6 +
 ...rg.opensaml.core.metrics.MetricsSupportTest.xml |   12 +
 .../target/surefire-reports/navigator-bullet.png   |  Bin 0 -> 352 bytes
 .../old/Surefire suite/Surefire test.properties    |    1 +
 .../old/Surefire suite/classes.html                |  164 +
 .../old/Surefire suite/groups.html                 |    1 +
 .../surefire-reports/old/Surefire suite/index.html |    6 +
 .../surefire-reports/old/Surefire suite/main.html  |    2 +
 .../old/Surefire suite/methods-alphabetical.html   |   44 +
 .../old/Surefire suite/methods-not-run.html        |    2 +
 .../old/Surefire suite/methods.html                |   44 +
 .../old/Surefire suite/reporter-output.html        |    1 +
 .../old/Surefire suite/testng.xml.html             |    1 +
 .../surefire-reports/old/Surefire suite/toc.html   |   30 +
 .../target/surefire-reports/old/index.html         |    9 +
 .../target/surefire-reports/passed.png             |  Bin 0 -> 1019 bytes
 .../target/surefire-reports/skipped.png            |  Bin 0 -> 967 bytes
 .../target/surefire-reports/testng-reports.css     |  326 ++
 .../target/surefire-reports/testng-reports.js      |  122 +
 .../target/surefire-reports/testng-reports1.css    |  344 +++
 .../target/surefire-reports/testng-reports2.js     |   76 +
 .../target/surefire-reports/testng-results.xml     |  101 +
 .../target/surefire-reports/testng.css             |    9 +
 .../target/test-classes/logback-test.xml           |   24 +
 .../target/test-classes/opensaml-config.properties |    2 +
 .../ConfigurationServiceTest$BasicTestConfig.class |  Bin 0 -> 1039 bytes
 .../ConfigurationServiceTest$TestConfig.class      |  Bin 0 -> 325 bytes
 .../core/config/ConfigurationServiceTest.class     |  Bin 0 -> 1833 bytes
 ...lasspathConfigurationPropertiesSourceTest.class |  Bin 0 -> 1933 bytes
 ...stFilesystemConfigurationPropertiesSource.class |  Bin 0 -> 1173 bytes
 ...lesystemConfigurationPropertiesSourceTest.class |  Bin 0 -> 2907 bytes
 ...eadLocalConfigurationPropertiesSourceTest.class |  Bin 0 -> 2304 bytes
 .../core/metrics/MetricsSupportTest$1.class        |  Bin 0 -> 1018 bytes
 .../core/metrics/MetricsSupportTest$2.class        |  Bin 0 -> 1018 bytes
 .../opensaml/core/metrics/MetricsSupportTest.class |  Bin 0 -> 3223 bytes
 .../target/classes/META-INF/MANIFEST.MF            |   12 +
 .../org.opensaml/opensaml-core-impl/pom.properties |    7 +
 .../maven/org.opensaml/opensaml-core-impl/pom.xml  |  123 +
 .../services/org.opensaml.core.config.Initializer  |    3 +
 .../target/classes/default-config.xml              |   14 +
 .../core/metrics/impl/CoreGaugeSet$1.class         |  Bin 0 -> 1151 bytes
 .../core/metrics/impl/CoreGaugeSet$10.class        |  Bin 0 -> 1102 bytes
 .../core/metrics/impl/CoreGaugeSet$11.class        |  Bin 0 -> 1081 bytes
 .../core/metrics/impl/CoreGaugeSet$12.class        |  Bin 0 -> 1094 bytes
 .../core/metrics/impl/CoreGaugeSet$13.class        |  Bin 0 -> 1158 bytes
 .../core/metrics/impl/CoreGaugeSet$14.class        |  Bin 0 -> 1171 bytes
 .../core/metrics/impl/CoreGaugeSet$15.class        |  Bin 0 -> 1080 bytes
 .../core/metrics/impl/CoreGaugeSet$16.class        |  Bin 0 -> 1093 bytes
 .../core/metrics/impl/CoreGaugeSet$17.class        |  Bin 0 -> 1055 bytes
 .../core/metrics/impl/CoreGaugeSet$2.class         |  Bin 0 -> 1018 bytes
 .../core/metrics/impl/CoreGaugeSet$3.class         |  Bin 0 -> 1021 bytes
 .../core/metrics/impl/CoreGaugeSet$4.class         |  Bin 0 -> 1018 bytes
 .../core/metrics/impl/CoreGaugeSet$5.class         |  Bin 0 -> 1026 bytes
 .../core/metrics/impl/CoreGaugeSet$6.class         |  Bin 0 -> 1020 bytes
 .../core/metrics/impl/CoreGaugeSet$7.class         |  Bin 0 -> 1022 bytes
 .../core/metrics/impl/CoreGaugeSet$8.class         |  Bin 0 -> 1026 bytes
 .../core/metrics/impl/CoreGaugeSet$9.class         |  Bin 0 -> 1023 bytes
 .../opensaml/core/metrics/impl/CoreGaugeSet.class  |  Bin 0 -> 3473 bytes
 .../core/metrics/impl/DisabledCounter.class        |  Bin 0 -> 788 bytes
 .../core/metrics/impl/DisabledHistogram.class      |  Bin 0 -> 845 bytes
 .../opensaml/core/metrics/impl/DisabledMeter.class |  Bin 0 -> 954 bytes
 .../core/metrics/impl/DisabledMetric.class         |  Bin 0 -> 175 bytes
 .../opensaml/core/metrics/impl/DisabledTimer.class |  Bin 0 -> 1721 bytes
 .../core/metrics/impl/FilteredMetricRegistry.class |  Bin 0 -> 3715 bytes
 .../opensaml/core/metrics/impl/HTTPReporter.class  |  Bin 0 -> 11364 bytes
 .../metrics/impl/MetricRegistryInitializer.class   |  Bin 0 -> 1458 bytes
 .../opensaml/core/metrics/impl/package-info.class  |  Bin 0 -> 242 bytes
 .../persist/impl/PassthroughSourceStrategy.class   |  Bin 0 -> 815 bytes
 .../SegmentingIntermediateDirectoryStrategy.class  |  Bin 0 -> 3526 bytes
 .../core/xml/persist/impl/package-info.class       |  Bin 0 -> 246 bytes
 .../core/xml/schema/impl/XSAnyBuilder.class        |  Bin 0 -> 1327 bytes
 .../opensaml/core/xml/schema/impl/XSAnyImpl.class  |  Bin 0 -> 2749 bytes
 .../core/xml/schema/impl/XSAnyMarshaller.class     |  Bin 0 -> 1552 bytes
 .../core/xml/schema/impl/XSAnyUnmarshaller.class   |  Bin 0 -> 2278 bytes
 .../xml/schema/impl/XSBase64BinaryBuilder.class    |  Bin 0 -> 1381 bytes
 .../core/xml/schema/impl/XSBase64BinaryImpl.class  |  Bin 0 -> 1514 bytes
 .../xml/schema/impl/XSBase64BinaryMarshaller.class |  Bin 0 -> 1153 bytes
 .../schema/impl/XSBase64BinaryUnmarshaller.class   |  Bin 0 -> 1079 bytes
 .../core/xml/schema/impl/XSBooleanBuilder.class    |  Bin 0 -> 1351 bytes
 .../core/xml/schema/impl/XSBooleanImpl.class       |  Bin 0 -> 1648 bytes
 .../core/xml/schema/impl/XSBooleanMarshaller.class |  Bin 0 -> 1489 bytes
 .../xml/schema/impl/XSBooleanUnmarshaller.class    |  Bin 0 -> 1099 bytes
 .../core/xml/schema/impl/XSDateTimeBuilder.class   |  Bin 0 -> 1357 bytes
 .../core/xml/schema/impl/XSDateTimeImpl.class      |  Bin 0 -> 1661 bytes
 .../xml/schema/impl/XSDateTimeMarshaller.class     |  Bin 0 -> 1279 bytes
 .../xml/schema/impl/XSDateTimeUnmarshaller.class   |  Bin 0 -> 1057 bytes
 .../core/xml/schema/impl/XSIntegerBuilder.class    |  Bin 0 -> 1351 bytes
 .../core/xml/schema/impl/XSIntegerImpl.class       |  Bin 0 -> 1544 bytes
 .../core/xml/schema/impl/XSIntegerMarshaller.class |  Bin 0 -> 1203 bytes
 .../xml/schema/impl/XSIntegerUnmarshaller.class    |  Bin 0 -> 1124 bytes
 .../core/xml/schema/impl/XSQNameBuilder.class      |  Bin 0 -> 1339 bytes
 .../core/xml/schema/impl/XSQNameImpl.class         |  Bin 0 -> 1575 bytes
 .../core/xml/schema/impl/XSQNameMarshaller.class   |  Bin 0 -> 1306 bytes
 .../core/xml/schema/impl/XSQNameUnmarshaller.class |  Bin 0 -> 2031 bytes
 .../core/xml/schema/impl/XSStringBuilder.class     |  Bin 0 -> 1345 bytes
 .../core/xml/schema/impl/XSStringImpl.class        |  Bin 0 -> 1490 bytes
 .../core/xml/schema/impl/XSStringMarshaller.class  |  Bin 0 -> 1118 bytes
 .../xml/schema/impl/XSStringUnmarshaller.class     |  Bin 0 -> 926 bytes
 .../core/xml/schema/impl/XSURIBuilder.class        |  Bin 0 -> 1327 bytes
 .../opensaml/core/xml/schema/impl/XSURIImpl.class  |  Bin 0 -> 1469 bytes
 .../core/xml/schema/impl/XSURIMarshaller.class     |  Bin 0 -> 1095 bytes
 .../core/xml/schema/impl/XSURIUnmarshaller.class   |  Bin 0 -> 903 bytes
 .../core/xml/schema/impl/package-info.class        |  Bin 0 -> 245 bytes
 .../target/classes/schema-config.xml               |   64 +
 .../target/maven-archiver/pom.properties           |    3 +
 .../compile/default-compile/createdFiles.lst       |   63 +
 .../compile/default-compile/inputFiles.lst         |   46 +
 .../default-testCompile/createdFiles.lst           |   26 +
 .../testCompile/default-testCompile/inputFiles.lst |   26 +
 .../opensaml-core-impl-5.1.0-SNAPSHOT-tests.jar    |  Bin 0 -> 79545 bytes
 .../target/opensaml-core-impl-5.1.0-SNAPSHOT.jar   |  Bin 0 -> 60081 bytes
 .../Surefire suite/Surefire test.html              | 1029 +++++++
 .../Surefire suite/Surefire test.xml               |  163 +
 .../target/surefire-reports/TEST-TestSuite.xml     |  297 ++
 .../target/surefire-reports/TestSuite-output.txt   |   87 +
 .../target/surefire-reports/TestSuite.txt          |    4 +
 .../target/surefire-reports/bullet_point.png       |  Bin 0 -> 356 bytes
 .../target/surefire-reports/collapseall.gif        |  Bin 0 -> 157 bytes
 .../target/surefire-reports/emailable-report.html  |  169 ++
 .../target/surefire-reports/failed.png             |  Bin 0 -> 977 bytes
 .../target/surefire-reports/index.html             | 3145 ++++++++++++++++++++
 .../target/surefire-reports/jquery-3.6.0.min.js    |    2 +
 ...aml.core.xml.config.tests.ConfigurationTest.xml |   12 +
 ....xml.config.tests.InitializationServiceTest.xml |    6 +
 ...nfig.tests.XMLObjectProviderInitializerTest.xml |    6 +
 ....persist.impl.FilesystemLoadSaveManagerTest.xml |   38 +
 ...ore.xml.persist.impl.MapLoadSaveManagerTest.xml |   12 +
 ...SegmentingIntermediateDirectoryStrategyTest.xml |    8 +
 ...aml.core.xml.schema.impl.XSBase64BinaryTest.xml |    8 +
 ...opensaml.core.xml.schema.impl.XSBooleanTest.xml |    8 +
 ...pensaml.core.xml.schema.impl.XSDateTimeTest.xml |   12 +
 ...opensaml.core.xml.schema.impl.XSIntegerTest.xml |    8 +
 ...g.opensaml.core.xml.schema.impl.XSQNameTest.xml |    8 +
 ....opensaml.core.xml.schema.impl.XSStringTest.xml |    8 +
 ...org.opensaml.core.xml.schema.impl.XSURITest.xml |    8 +
 ...ensaml.core.xml.tests.AbstractXMLObjectTest.xml |   10 +
 ...rg.opensaml.core.xml.tests.ElementProxyTest.xml |    6 +
 ...org.opensaml.core.xml.tests.IDAttributeTest.xml |   18 +
 ...org.opensaml.core.xml.tests.MarshallingTest.xml |   16 +
 ...pensaml.core.xml.tests.NamespaceManagerTest.xml |   18 +
 ...ml.core.xml.tests.UnmarshallingSecurityTest.xml |   16 +
 ...g.opensaml.core.xml.tests.UnmarshallingTest.xml |   10 +
 ...saml.core.xml.tests.XMLObjectXSIAttribsTest.xml |   18 +
 ...ensaml.core.xml.util.tests.AttributeMapTest.xml |   12 +
 ...util.tests.IndexedXMLObjectChildrenListTest.xml |   12 +
 ...re.xml.util.tests.XMLObjectChildrenListTest.xml |   14 +
 ...aml.core.xml.util.tests.XMLObjectSourceTest.xml |    8 +
 ...ml.core.xml.util.tests.XMLObjectSupportTest.xml |   14 +
 .../target/surefire-reports/navigator-bullet.png   |  Bin 0 -> 352 bytes
 .../old/Surefire suite/Surefire test.properties    |    1 +
 .../old/Surefire suite/classes.html                | 1042 +++++++
 .../old/Surefire suite/groups.html                 |    1 +
 .../surefire-reports/old/Surefire suite/index.html |    6 +
 .../surefire-reports/old/Surefire suite/main.html  |    2 +
 .../old/Surefire suite/methods-alphabetical.html   |  412 +++
 .../old/Surefire suite/methods-not-run.html        |   20 +
 .../old/Surefire suite/methods.html                |  412 +++
 .../old/Surefire suite/reporter-output.html        |    1 +
 .../old/Surefire suite/testng.xml.html             |    1 +
 .../surefire-reports/old/Surefire suite/toc.html   |   30 +
 .../target/surefire-reports/old/index.html         |    9 +
 .../target/surefire-reports/passed.png             |  Bin 0 -> 1019 bytes
 .../target/surefire-reports/skipped.png            |  Bin 0 -> 967 bytes
 .../target/surefire-reports/testng-reports.css     |  326 ++
 .../target/surefire-reports/testng-reports.js      |  122 +
 .../target/surefire-reports/testng-reports1.css    |  344 +++
 .../target/surefire-reports/testng-reports2.js     |   76 +
 .../target/surefire-reports/testng-results.xml     | 1354 +++++++++
 .../target/surefire-reports/testng.css             |    9 +
 .../target/test-classes/logback-test.xml           |   24 +
 .../org/opensaml/core/xml/IDAttribute.xml          |    2 +
 .../org/opensaml/core/xml/IDAttributeGlobal.xml    |    4 +
 .../core/xml/IDAttributeWithAttributeMap.xml       |   22 +
 .../core/xml/IDAttributeWithChildrenList.xml       |   15 +
 .../org/opensaml/core/xml/SOAPMessage.xml          |    2 +
 .../opensaml/core/xml/SOAPMessageWithContent.xml   |    2 +
 .../org/opensaml/core/xml/SimpleXMLObjectNil.xml   |    2 +
 .../SimpleXMLObjectNoNamespaceSchemaLocation.xml   |    2 +
 .../core/xml/SimpleXMLObjectSchemaLocation.xml     |    2 +
 .../core/xml/SimpleXMLObjectWithAttribute.xml      |    2 +
 .../core/xml/SimpleXMLObjectWithCDATAInContent.xml |    2 +
 .../core/xml/SimpleXMLObjectWithChildren.xml       |    2 +
 .../SimpleXMLObjectWithCommentBetweenChildren.xml  |    6 +
 .../xml/SimpleXMLObjectWithCommentInContent.xml    |    2 +
 .../core/xml/SimpleXMLObjectWithContent.xml        |    2 +
 .../org/opensaml/core/xml/UnknownContent.xml       |   22 +
 .../core/xml/config/IDAttributeConfiguration.xml   |   12 +
 .../core/xml/config/InvalidConfiguration.xml       |    6 +
 .../xml/config/NonexistantClassConfiguration.xml   |   12 +
 .../xml/config/SimpleXMLObjectConfiguration.xml    |   14 +
 .../core/xml/config/tests/ConfigurationTest.class  |  Bin 0 -> 6242 bytes
 .../config/tests/InitializationServiceTest.class   |  Bin 0 -> 1911 bytes
 .../tests/XMLObjectProviderInitializerTest.class   |  Bin 0 -> 1150 bytes
 .../test-classes/org/opensaml/core/xml/keys.jks    |  Bin 0 -> 1361 bytes
 .../impl/FilesystemLoadSaveManagerTest.class       |  Bin 0 -> 15530 bytes
 .../xml/persist/impl/MapLoadSaveManagerTest.class  |  Bin 0 -> 6265 bytes
 ...gmentingIntermediateDirectoryStrategyTest.class |  Bin 0 -> 1751 bytes
 .../core/xml/schema/impl/XSBase64BinaryTest.class  |  Bin 0 -> 4165 bytes
 .../core/xml/schema/impl/XSBooleanTest.class       |  Bin 0 -> 4334 bytes
 .../core/xml/schema/impl/XSDateTimeTest.class      |  Bin 0 -> 5105 bytes
 .../core/xml/schema/impl/XSIntegerTest.class       |  Bin 0 -> 4252 bytes
 .../core/xml/schema/impl/XSQNameTest.class         |  Bin 0 -> 4108 bytes
 .../core/xml/schema/impl/XSStringTest.class        |  Bin 0 -> 4090 bytes
 .../opensaml/core/xml/schema/impl/XSURITest.class  |  Bin 0 -> 4096 bytes
 .../core/xml/schema/impl/xsBase64Binary.xml        |    4 +
 .../opensaml/core/xml/schema/impl/xsBoolean.xml    |    2 +
 .../core/xml/schema/impl/xsDateTime-basic.xml      |    2 +
 .../core/xml/schema/impl/xsDateTime-canonical.xml  |    2 +
 .../xml/schema/impl/xsDateTime-nofractional.xml    |    2 +
 .../opensaml/core/xml/schema/impl/xsInteger.xml    |    4 +
 .../org/opensaml/core/xml/schema/impl/xsQName.xml  |    2 +
 .../org/opensaml/core/xml/schema/impl/xsString.xml |    2 +
 .../org/opensaml/core/xml/schema/impl/xsURI.xml    |    2 +
 .../core/xml/tests/AbstractXMLObjectTest.class     |  Bin 0 -> 3597 bytes
 .../opensaml/core/xml/tests/ElementProxyTest.class |  Bin 0 -> 3120 bytes
 .../opensaml/core/xml/tests/IDAttributeTest.class  |  Bin 0 -> 8728 bytes
 .../opensaml/core/xml/tests/MarshallingTest.class  |  Bin 0 -> 7154 bytes
 .../core/xml/tests/NamespaceManagerTest.class      |  Bin 0 -> 10324 bytes
 .../core/xml/tests/UnmarshallingSecurityTest.class |  Bin 0 -> 4029 bytes
 .../core/xml/tests/UnmarshallingTest.class         |  Bin 0 -> 3825 bytes
 .../core/xml/tests/XMLObjectXSIAttribsTest.class   |  Bin 0 -> 5620 bytes
 .../core/xml/util/tests/AttributeMapTest.class     |  Bin 0 -> 7083 bytes
 .../tests/IndexedXMLObjectChildrenListTest.class   |  Bin 0 -> 6702 bytes
 .../xml/util/tests/XMLObjectChildrenListTest.class |  Bin 0 -> 6581 bytes
 .../core/xml/util/tests/XMLObjectSourceTest.class  |  Bin 0 -> 1561 bytes
 .../core/xml/util/tests/XMLObjectSupportTest.class |  Bin 0 -> 7513 bytes
 opensaml-parent/pom.xml                            |    2 +-
 .../target/classes/META-INF/MANIFEST.MF            |    6 +
 .../org.opensaml/opensaml-spring/pom.properties    |    7 +
 .../maven/org.opensaml/opensaml-spring/pom.xml     |  113 +
 .../SpringConfigurationPropertiesSource.class      |  Bin 0 -> 1231 bytes
 .../spring/config/SpringPropertiesAdapter.class    |  Bin 0 -> 1489 bytes
 .../org/opensaml/spring/config/package-info.class  |  Bin 0 -> 238 bytes
 ...icCredentialFactoryBean$SecretKeyEncoding.class |  Bin 0 -> 1654 bytes
 .../AbstractBasicCredentialFactoryBean.class       |  Bin 0 -> 6390 bytes
 .../credential/AbstractCredentialFactoryBean.class |  Bin 0 -> 2746 bytes
 .../AbstractX509CredentialFactoryBean.class        |  Bin 0 -> 4344 bytes
 .../BasicInlineCredentialFactoryBean.class         |  Bin 0 -> 2670 bytes
 .../BasicResourceCredentialFactoryBean.class       |  Bin 0 -> 4648 bytes
 .../BasicX509CredentialFactoryBean.class           |  Bin 0 -> 8046 bytes
 .../X509InlineCredentialFactoryBean.class          |  Bin 0 -> 5025 bytes
 .../opensaml/spring/credential/package-info.class  |  Bin 0 -> 242 bytes
 ...lientSecurityParametersMergingFactoryBean.class |  Bin 0 -> 8249 bytes
 .../opensaml/spring/httpclient/package-info.class  |  Bin 0 -> 242 bytes
 .../spring/tls/TLSSocketFactoryFactoryBean.class   |  Bin 0 -> 3230 bytes
 .../org/opensaml/spring/tls/package-info.class     |  Bin 0 -> 235 bytes
 ...bstractBasicPKIXValidationInfoFactoryBean.class |  Bin 0 -> 2277 bytes
 .../ChainingSignatureTrustEngineFactoryBean.class  |  Bin 0 -> 2561 bytes
 .../trust/ChainingTrustEngineFactoryBean.class     |  Bin 0 -> 2515 bytes
 .../PKIXInlineValidationInfoFactoryBean.class      |  Bin 0 -> 3890 bytes
 .../PKIXResourceValidationInfoFactoryBean.class    |  Bin 0 -> 4890 bytes
 .../trust/StaticExplicitKeyFactoryBean.class       |  Bin 0 -> 6267 bytes
 .../spring/trust/StaticPKIXFactoryBean.class       |  Bin 0 -> 9569 bytes
 .../org/opensaml/spring/trust/package-info.class   |  Bin 0 -> 237 bytes
 .../target/maven-archiver/pom.properties           |    3 +
 .../compile/default-compile/createdFiles.lst       |   25 +
 .../compile/default-compile/inputFiles.lst         |   23 +
 .../default-testCompile/createdFiles.lst           |    7 +
 .../testCompile/default-testCompile/inputFiles.lst |    5 +
 .../opensaml-spring-5.1.0-SNAPSHOT-tests.jar       |  Bin 0 -> 22770 bytes
 .../target/opensaml-spring-5.1.0-SNAPSHOT.jar      |  Bin 0 -> 42700 bytes
 .../Surefire suite/Surefire test.html              |  199 ++
 .../Surefire suite/Surefire test.xml               |   15 +
 .../target/surefire-reports/TEST-TestSuite.xml     |  138 +
 .../target/surefire-reports/TestSuite-output.txt   |   55 +
 .../target/surefire-reports/TestSuite.txt          |    4 +
 .../target/surefire-reports/bullet_point.png       |  Bin 0 -> 356 bytes
 .../target/surefire-reports/collapseall.gif        |  Bin 0 -> 157 bytes
 .../target/surefire-reports/emailable-report.html  |   48 +
 opensaml-spring/target/surefire-reports/failed.png |  Bin 0 -> 977 bytes
 opensaml-spring/target/surefire-reports/index.html |  428 +++
 .../target/surefire-reports/jquery-3.6.0.min.js    |    2 +
 ...edential.BasicX509CredentialFactoryBeanTest.xml |    6 +
 ...ring.trust.StaticExplicitKeyFactoryBeanTest.xml |   12 +
 ...saml.spring.trust.StaticPKIXFactoryBeanTest.xml |   10 +
 .../target/surefire-reports/navigator-bullet.png   |  Bin 0 -> 352 bytes
 .../old/Surefire suite/Surefire test.properties    |    1 +
 .../old/Surefire suite/classes.html                |   96 +
 .../old/Surefire suite/groups.html                 |    1 +
 .../surefire-reports/old/Surefire suite/index.html |    6 +
 .../surefire-reports/old/Surefire suite/main.html  |    2 +
 .../old/Surefire suite/methods-alphabetical.html   |   30 +
 .../old/Surefire suite/methods-not-run.html        |    3 +
 .../old/Surefire suite/methods.html                |   30 +
 .../old/Surefire suite/reporter-output.html        |    1 +
 .../old/Surefire suite/testng.xml.html             |    1 +
 .../surefire-reports/old/Surefire suite/toc.html   |   30 +
 .../target/surefire-reports/old/index.html         |    9 +
 opensaml-spring/target/surefire-reports/passed.png |  Bin 0 -> 1019 bytes
 .../target/surefire-reports/skipped.png            |  Bin 0 -> 967 bytes
 .../target/surefire-reports/testng-reports.css     |  326 ++
 .../target/surefire-reports/testng-reports.js      |  122 +
 .../target/surefire-reports/testng-reports1.css    |  344 +++
 .../target/surefire-reports/testng-reports2.js     |   76 +
 .../target/surefire-reports/testng-results.xml     |  134 +
 opensaml-spring/target/surefire-reports/testng.css |    9 +
 .../BasicX509CredentialFactoryBeanTest.class       |  Bin 0 -> 2359 bytes
 .../org/opensaml/spring/credential/bean.xml        |   28 +
 .../org/opensaml/spring/credential/cert.pem        |   22 +
 .../org/opensaml/spring/credential/certificate.pem |   52 +
 .../org/opensaml/spring/credential/idp-signing.crt |   22 +
 .../org/opensaml/spring/credential/idp-signing.key |   27 +
 .../spring/credential/idp-signing.key.pass         |   30 +
 .../org/opensaml/spring/credential/publicKey.pem   |    9 +
 .../spring/trust/AbstractSecurityTest.class        |  Bin 0 -> 4518 bytes
 .../opensaml/spring/trust/MockTrustEngine.class    |  Bin 0 -> 1193 bytes
 .../trust/StaticExplicitKeyFactoryBeanTest.class   |  Bin 0 -> 4126 bytes
 ...KIXFactoryBeanTest$MockPKIXTrustEvaluator.class |  Bin 0 -> 1386 bytes
 ...yBeanTest$MockX509CredentialNameEvaluator.class |  Bin 0 -> 1317 bytes
 .../spring/trust/StaticPKIXFactoryBeanTest.class   |  Bin 0 -> 3182 bytes
 .../static-pkix-factory-custom-failsValidation.xml |   34 +
 .../trust/static-pkix-factory-custom-success.xml   |   30 +
 .../spring/trust/static-pkix-factory-defaults.xml  |   24 +
 .../opensaml/spring/trust/staticExplicitNative.xml |   28 +
 .../target/classes/META-INF/MANIFEST.MF            |    6 +
 .../org.opensaml/opensaml-testing/pom.properties   |    7 +
 .../maven/org.opensaml/opensaml-testing/pom.xml    |   97 +
 ...nsaml.core.config.ConfigurationPropertiesSource |    1 +
 .../services/org.opensaml.core.config.Initializer  |    1 +
 .../core/testing/InitializerBaseTestCase.class     |  Bin 0 -> 1164 bytes
 .../core/testing/OpenSAMLInitBaseTestCase.class    |  Bin 0 -> 692 bytes
 .../testing/TestXMLObjectProviderInitializer.class |  Bin 0 -> 790 bytes
 .../core/testing/XMLObjectBaseTestCase.class       |  Bin 0 -> 10848 bytes
 .../testing/XMLObjectProviderBaseTestCase.class    |  Bin 0 -> 5215 bytes
 .../XMLObjectProviderInitializerBaseTestCase.class |  Bin 0 -> 3363 bytes
 .../opensaml/core/xml/mock/SimpleXMLObject.class   |  Bin 0 -> 4181 bytes
 .../core/xml/mock/SimpleXMLObjectBuilder.class     |  Bin 0 -> 1442 bytes
 .../core/xml/mock/SimpleXMLObjectMarshaller.class  |  Bin 0 -> 1780 bytes
 .../xml/mock/SimpleXMLObjectUnmarshaller.class     |  Bin 0 -> 2365 bytes
 .../profile/testing/ActionTestingSupport.class     |  Bin 0 -> 2023 bytes
 .../profile/testing/RequestContextBuilder.class    |  Bin 0 -> 3618 bytes
 .../saml1/testing/SAML1ActionTestingSupport.class  |  Bin 0 -> 6370 bytes
 .../saml2/testing/SAML2ActionTestingSupport.class  |  Bin 0 -> 11031 bytes
 .../security/testing/MockTrustEngine.class         |  Bin 0 -> 1867 bytes
 .../testing/SecurityProviderTestSupport.class      |  Bin 0 -> 1817 bytes
 .../StorageServiceTest$AnnotatedObject.class       |  Bin 0 -> 2275 bytes
 .../storage/testing/StorageServiceTest.class       |  Bin 0 -> 8349 bytes
 .../target/classes/xmltooling-config.xml           |   36 +
 .../target/maven-archiver/pom.properties           |    3 +
 .../compile/default-compile/createdFiles.lst       |   18 +
 .../compile/default-compile/inputFiles.lst         |   17 +
 .../target/opensaml-testing-5.1.0-SNAPSHOT.jar     |  Bin 0 -> 36550 bytes
 467 files changed, 18248 insertions(+), 1 deletion(-)

diff --git a/opensaml-core-api/target/classes/META-INF/MANIFEST.MF b/opensaml-core-api/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..0211804f5
--- /dev/null
+++ b/opensaml-core-api/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Build-Jdk-Spec: 21
+Automatic-Module-Name: org.opensaml.core
+Created-By: Maven Integration for Eclipse
+Main-Class: org.opensaml.core.Version
+Sealed: true
+
+Name: org/opensaml/core/
+Implementation-Vendor: opensaml.org
+Implementation-Version: 5.1.0-SNAPSHOT
+Implementation-Title: opensaml-core-api
+
diff --git a/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.properties b/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.properties
new file mode 100644
index 000000000..d5fe03ed1
--- /dev/null
+++ b/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Fri Mar 01 18:25:41 EST 2024
+artifactId=opensaml-core-api
+groupId=org.opensaml
+m2e.projectLocation=/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api
+m2e.projectName=opensaml-core-api
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.xml b/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.xml
new file mode 100644
index 000000000..2eba7cf2a
--- /dev/null
+++ b/opensaml-core-api/target/classes/META-INF/maven/org.opensaml/opensaml-core-api/pom.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opensaml</groupId>
+        <artifactId>opensaml-parent</artifactId>
+        <version>5.1.0-SNAPSHOT</version>
+    </parent>
+
+    <name>OpenSAML :: Core API</name>
+    <description>Core API</description>
+    <artifactId>opensaml-core-api</artifactId>
+    <packaging>jar</packaging>
+
+    <properties>
+        <automatic.module.name>org.opensaml.core</automatic.module.name>
+    </properties>
+
+    <dependencies>
+        <!-- Compile Dependencies -->
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+
+        <dependency>
+       	    <groupId>com.google.guava</groupId>
+       	    <artifactId>guava</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>io.dropwizard.metrics</groupId>
+            <artifactId>metrics-core</artifactId>
+        </dependency>
+
+        <!-- Provided Dependencies -->
+
+        <!-- Runtime Dependencies -->
+
+        <!-- Test Dependencies -->
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-matchers</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <index>true</index>
+                        <manifestEntries>
+                            <Main-Class>org.opensaml.core.Version</Main-Class>
+                        </manifestEntries>
+                        <manifestSections>
+                            <manifestSection>
+                                <name>org/opensaml/core/</name>
+                                <manifestEntries>
+                                    <Implementation-Title>${project.artifactId}</Implementation-Title>
+                                    <Implementation-Version>${project.version}</Implementation-Version>
+                                    <Implementation-Vendor>opensaml.org</Implementation-Vendor>
+                                </manifestEntries>
+                            </manifestSection>
+                        </manifestSections>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/Version.class b/opensaml-core-api/target/classes/org/opensaml/core/Version.class
new file mode 100644
index 000000000..35c4f2bea
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/Version.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/Configuration.class b/opensaml-core-api/target/classes/org/opensaml/core/config/Configuration.class
new file mode 100644
index 000000000..9428ce094
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/Configuration.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationProperties.class b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationProperties.class
new file mode 100644
index 000000000..00fcaeff7
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationProperties.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationPropertiesSource.class
new file mode 100644
index 000000000..7b94e8787
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationService.class b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationService.class
new file mode 100644
index 000000000..367b5816e
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/ConfigurationService.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationException.class b/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationException.class
new file mode 100644
index 000000000..244722a58
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationException.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationService.class b/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationService.class
new file mode 100644
index 000000000..8d9713958
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/InitializationService.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/Initializer.class b/opensaml-core-api/target/classes/org/opensaml/core/config/Initializer.class
new file mode 100644
index 000000000..b42347b1a
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/Initializer.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/config/package-info.class
new file mode 100644
index 000000000..47a0e767c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/AbstractFilesystemConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/AbstractFilesystemConfigurationPropertiesSource.class
new file mode 100644
index 000000000..3ce9710d6
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/AbstractFilesystemConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSource.class
new file mode 100644
index 000000000..9ecdb8bcd
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/EmptyConfigurationProperties.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/EmptyConfigurationProperties.class
new file mode 100644
index 000000000..343f8d0ad
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/EmptyConfigurationProperties.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/MapBasedConfiguration.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/MapBasedConfiguration.class
new file mode 100644
index 000000000..8032209fe
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/MapBasedConfiguration.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/PropertiesAdapter.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/PropertiesAdapter.class
new file mode 100644
index 000000000..9a7a7d391
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/PropertiesAdapter.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyConfigurationPropertiesSource.class
new file mode 100644
index 000000000..978cdf69b
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyFilesystemConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyFilesystemConfigurationPropertiesSource.class
new file mode 100644
index 000000000..47d225253
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/SystemPropertyFilesystemConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesHolder.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesHolder.class
new file mode 100644
index 000000000..fd88f93c7
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesHolder.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSource.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSource.class
new file mode 100644
index 000000000..9707a698b
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/config/provider/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/package-info.class
new file mode 100644
index 000000000..8dca9676f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/config/provider/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/criterion/EntityIdCriterion.class b/opensaml-core-api/target/classes/org/opensaml/core/criterion/EntityIdCriterion.class
new file mode 100644
index 000000000..577e6c04c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/criterion/EntityIdCriterion.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/criterion/SatisfyAnyCriterion.class b/opensaml-core-api/target/classes/org/opensaml/core/criterion/SatisfyAnyCriterion.class
new file mode 100644
index 000000000..80f3db89a
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/criterion/SatisfyAnyCriterion.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/criterion/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/criterion/package-info.class
new file mode 100644
index 000000000..23f7655c4
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/criterion/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter$Level.class b/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter$Level.class
new file mode 100644
index 000000000..05e7423fa
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter$Level.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter.class b/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter.class
new file mode 100644
index 000000000..577f5af32
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/metrics/LoggerDrivenMetricFilter.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/metrics/MetricsSupport.class b/opensaml-core-api/target/classes/org/opensaml/core/metrics/MetricsSupport.class
new file mode 100644
index 000000000..80ee128be
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/metrics/MetricsSupport.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/metrics/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/metrics/package-info.class
new file mode 100644
index 000000000..84496ecd6
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/metrics/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/package-info.class
new file mode 100644
index 000000000..5ad49c88b
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObject.class
new file mode 100644
index 000000000..561c3a5d9
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectMarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectMarshaller.class
new file mode 100644
index 000000000..e2b25d8b5
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectMarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectUnmarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectUnmarshaller.class
new file mode 100644
index 000000000..e19c150be
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectUnmarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObject.class
new file mode 100644
index 000000000..a11099f51
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectMarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectMarshaller.class
new file mode 100644
index 000000000..035cb39ba
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectMarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectUnmarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectUnmarshaller.class
new file mode 100644
index 000000000..d12c14dce
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractExtensibleXMLObjectUnmarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObject.class
new file mode 100644
index 000000000..7fe60d966
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObjectBuilder.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObjectBuilder.class
new file mode 100644
index 000000000..ca5fbfbec
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXMLObjectBuilder.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXSAnyAdapter.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXSAnyAdapter.class
new file mode 100644
index 000000000..ce017d734
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AbstractXSAnyAdapter.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/AttributeExtensibleXMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/AttributeExtensibleXMLObject.class
new file mode 100644
index 000000000..cb665950c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/AttributeExtensibleXMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/BaseBearing.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/BaseBearing.class
new file mode 100644
index 000000000..f7e803d11
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/BaseBearing.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/ElementExtensibleXMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/ElementExtensibleXMLObject.class
new file mode 100644
index 000000000..f745ba57d
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/ElementExtensibleXMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/IdBearing.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/IdBearing.class
new file mode 100644
index 000000000..28deeb4eb
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/IdBearing.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/LangBearing.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/LangBearing.class
new file mode 100644
index 000000000..d6ac6448e
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/LangBearing.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/Namespace.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/Namespace.class
new file mode 100644
index 000000000..b0338ac77
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/Namespace.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/NamespaceManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/NamespaceManager.class
new file mode 100644
index 000000000..8021209f1
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/NamespaceManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing$XMLSpaceEnum.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing$XMLSpaceEnum.class
new file mode 100644
index 000000000..a951759e8
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing$XMLSpaceEnum.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing.class
new file mode 100644
index 000000000..a5c1fbe6b
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/SpaceBearing.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObject.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObject.class
new file mode 100644
index 000000000..72a8e45ab
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObject.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilder.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilder.class
new file mode 100644
index 000000000..367aa218f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilder.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilderFactory.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilderFactory.class
new file mode 100644
index 000000000..82975f82e
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLObjectBuilderFactory.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLRuntimeException.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLRuntimeException.class
new file mode 100644
index 000000000..bd744d7b0
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/XMLRuntimeException.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/XSAnyAdapter.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/XSAnyAdapter.class
new file mode 100644
index 000000000..21422b9ee
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/XSAnyAdapter.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/AbstractXMLObjectProviderInitializer.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/AbstractXMLObjectProviderInitializer.class
new file mode 100644
index 000000000..21cb4c225
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/AbstractXMLObjectProviderInitializer.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/GlobalParserPoolInitializer.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/GlobalParserPoolInitializer.class
new file mode 100644
index 000000000..b348e6e7f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/GlobalParserPoolInitializer.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurationException.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurationException.class
new file mode 100644
index 000000000..b14185b45
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurationException.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurator.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurator.class
new file mode 100644
index 000000000..d9ded67f6
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLConfigurator.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderInitializer.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderInitializer.class
new file mode 100644
index 000000000..039bf6e9d
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderInitializer.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistry.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistry.class
new file mode 100644
index 000000000..c90849707
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistry.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistrySupport.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistrySupport.class
new file mode 100644
index 000000000..18507d731
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/XMLObjectProviderRegistrySupport.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/config/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/package-info.class
new file mode 100644
index 000000000..e33b9a83f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/config/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectMarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectMarshaller.class
new file mode 100644
index 000000000..cc441bf02
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectMarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectUnmarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectUnmarshaller.class
new file mode 100644
index 000000000..fd5055bcd
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/AbstractXMLObjectUnmarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Marshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Marshaller.class
new file mode 100644
index 000000000..072a1eb5f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Marshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallerFactory.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallerFactory.class
new file mode 100644
index 000000000..68fd1f1aa
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallerFactory.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallingException.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallingException.class
new file mode 100644
index 000000000..23cddc820
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/MarshallingException.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Unmarshaller.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Unmarshaller.class
new file mode 100644
index 000000000..73825ec96
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/Unmarshaller.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallerFactory.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallerFactory.class
new file mode 100644
index 000000000..d2bb7c289
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallerFactory.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallingException.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallingException.class
new file mode 100644
index 000000000..ac8b14713
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/UnmarshallingException.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/io/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/package-info.class
new file mode 100644
index 000000000..c121711c3
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/io/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/package-info.class
new file mode 100644
index 000000000..3c547e686
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/AbstractConditionalLoadXMLObjectLoadSaveManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/AbstractConditionalLoadXMLObjectLoadSaveManager.class
new file mode 100644
index 000000000..125976353
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/AbstractConditionalLoadXMLObjectLoadSaveManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/ConditionalLoadXMLObjectLoadSaveManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/ConditionalLoadXMLObjectLoadSaveManager.class
new file mode 100644
index 000000000..4960dccb9
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/ConditionalLoadXMLObjectLoadSaveManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterable.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterable.class
new file mode 100644
index 000000000..e746b2b28
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterable.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterator.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterator.class
new file mode 100644
index 000000000..4b1602412
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterator.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager.class
new file mode 100644
index 000000000..697d567ae
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/FilesystemLoadSaveManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/MapLoadSaveManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/MapLoadSaveManager.class
new file mode 100644
index 000000000..dd7455e33
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/MapLoadSaveManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.class
new file mode 100644
index 000000000..dabd4e016
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/package-info.class
new file mode 100644
index 000000000..acf258fe9
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/persist/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSAny.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSAny.class
new file mode 100644
index 000000000..c882e896b
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSAny.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBase64Binary.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBase64Binary.class
new file mode 100644
index 000000000..6106bd43f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBase64Binary.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBoolean.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBoolean.class
new file mode 100644
index 000000000..bd66f4cbe
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBoolean.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBooleanValue.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBooleanValue.class
new file mode 100644
index 000000000..5dfa848ba
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSBooleanValue.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSDateTime.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSDateTime.class
new file mode 100644
index 000000000..c0d993dab
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSDateTime.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSInteger.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSInteger.class
new file mode 100644
index 000000000..529fed97e
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSInteger.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSQName.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSQName.class
new file mode 100644
index 000000000..0480b525f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSQName.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSString.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSString.class
new file mode 100644
index 000000000..3c7cadd8f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSString.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSURI.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSURI.class
new file mode 100644
index 000000000..23d25a9e6
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/XSURI.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/package-info.class
new file mode 100644
index 000000000..216d224e2
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/schema/package-info.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/AttributeMap.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/AttributeMap.class
new file mode 100644
index 000000000..e462ea4c1
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/AttributeMap.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IDIndex.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IDIndex.class
new file mode 100644
index 000000000..81d2ae24f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IDIndex.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IndexedXMLObjectChildrenList.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IndexedXMLObjectChildrenList.class
new file mode 100644
index 000000000..f1ad3081f
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/IndexedXMLObjectChildrenList.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/ListView.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/ListView.class
new file mode 100644
index 000000000..f56e9de9c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/ListView.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLAttributeSupport.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLAttributeSupport.class
new file mode 100644
index 000000000..479ea9739
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLAttributeSupport.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectChildrenList.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectChildrenList.class
new file mode 100644
index 000000000..2d0efe50c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectChildrenList.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSource.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSource.class
new file mode 100644
index 000000000..6c9b0fbaf
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSource.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport$CloneOutputOption.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport$CloneOutputOption.class
new file mode 100644
index 000000000..b04ceb69c
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport$CloneOutputOption.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport.class
new file mode 100644
index 000000000..4959d5bf1
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/XMLObjectSupport.class differ
diff --git a/opensaml-core-api/target/classes/org/opensaml/core/xml/util/package-info.class b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/package-info.class
new file mode 100644
index 000000000..44027e2dd
Binary files /dev/null and b/opensaml-core-api/target/classes/org/opensaml/core/xml/util/package-info.class differ
diff --git a/opensaml-core-api/target/classes/schema/XMLSchema.dtd b/opensaml-core-api/target/classes/schema/XMLSchema.dtd
new file mode 100644
index 000000000..753ffe82d
--- /dev/null
+++ b/opensaml-core-api/target/classes/schema/XMLSchema.dtd
@@ -0,0 +1,402 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+     Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+     Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ -->
+<!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
+<!-- prose copy in the structures REC is the definitive version -->    <!--d-->
+<!-- (which shouldn't differ from this one except for this -->         <!--d-->
+<!-- comment and entity expansions, but just in case) -->              <!--d-->
+<!-- With the exception of cases with multiple namespace
+     prefixes for the XML Schema namespace, any XML document which is
+     not valid per this DTD given redefinitions in its internal subset of the
+     'p' and 's' parameter entities below appropriate to its namespace
+     declaration of the XML Schema namespace is almost certainly not
+     a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+     are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'classpath:/schema/datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+                         schema document to establish a different
+                         namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+                         also define %s as the suffix for the appropriate
+                         namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+     Define one of these if your schema takes advantage of the
+     anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+      <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+      <!-- #all or space-separated list drawn from
+                      derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+     which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+                    ((%simpleType; | %complexType;
+                      | %element; | %attribute;
+                      | %attributeGroup; | %group;
+                      | %notation; ),
+                     (%annotation;)*)* )>
+<!ATTLIST %schema;
+   targetNamespace      %URIref;               #IMPLIED
+   version              CDATA                  #IMPLIED
+   %nds;                %URIref;               #FIXED 'http://www.w3.org/2001/XMLSchema'
+   xmlns                CDATA                  #IMPLIED
+   finalDefault         %complexDerivationSet; ''
+   blockDefault         %blockSet;             ''
+   id                   ID                     #IMPLIED
+   elementFormDefault   %formValues;           'unqualified'
+   attributeFormDefault %formValues;           'unqualified'
+   xml:lang             CDATA                  #IMPLIED
+   %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+     because at the Infoset level where schemas operate,
+     xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+ 
+<!-- The id attribute here and below is for use in external references
+     from non-schemas using simple fragment identifiers.
+     It is NOT used for schema-to-schema reference, internal or
+     external. -->
+
+<!-- a type is a named content type specification which allows attribute
+     declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+                         (%simpleContent;|%complexContent;|
+                          %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+          name      %NCName;                        #IMPLIED
+          id        ID                              #IMPLIED
+          abstract  %boolean;                       #IMPLIED
+          final     %complexDerivationSet;          #IMPLIED
+          block     %complexDerivationSet;          #IMPLIED
+          mixed (true|false) 'false'
+          %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+     has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+     and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %complexContent;
+          mixed (true|false) #IMPLIED
+          id    ID           #IMPLIED
+          %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+     one from part2; extension should use the full model  -->
+
+<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %simpleContent;
+          id    ID           #IMPLIED
+          %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the 
+     one defined above; extension should have no particle  -->
+
+<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
+<!ATTLIST %extension;
+          base  %QName;      #REQUIRED
+          id    ID           #IMPLIED
+          %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+                     (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+            name               %NCName;               #IMPLIED
+            id                 ID                     #IMPLIED
+            ref                %QName;                #IMPLIED
+            type               %QName;                #IMPLIED
+            minOccurs          %nonNegativeInteger;   #IMPLIED
+            maxOccurs          CDATA                  #IMPLIED
+            nillable           %boolean;              #IMPLIED
+            substitutionGroup  %QName;                #IMPLIED
+            abstract           %boolean;              #IMPLIED
+            final              %complexDerivationSet; #IMPLIED
+            block              %blockSet;             #IMPLIED
+            default            CDATA                  #IMPLIED
+            fixed              CDATA                  #IMPLIED
+            form               %formValues;           #IMPLIED
+            %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+     name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+     substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group; 
+          name        %NCName;               #IMPLIED
+          ref         %QName;                #IMPLIED
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+          minOccurs   (1)                    #IMPLIED
+          maxOccurs   (1)                    #IMPLIED
+          id          ID                     #IMPLIED
+          %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+     a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+     If order is 'all' THIS group must be alone (or referenced alone) at
+     the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+            namespace       CDATA                  '##any'
+            processContents (skip|lax|strict)      'strict'
+            minOccurs       %nonNegativeInteger;   '1'
+            maxOccurs       CDATA                  '1'
+            id              ID                     #IMPLIED
+            %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+                  ##any      - - any non-conflicting WFXML at all
+
+                  ##other    - - any non-conflicting WFXML from namespace other
+                                  than targetNamespace
+
+                  ##local    - - any unqualified non-conflicting WFXML/attribute
+                  one or     - - any non-conflicting WFXML from
+                  more URI        the listed namespaces
+                  references
+
+                  ##targetNamespace ##local may appear in the above list,
+                    with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+            namespace       CDATA              '##any'
+            processContents (skip|lax|strict)  'strict'
+            id              ID                 #IMPLIED
+            %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+          name      %NCName;      #IMPLIED
+          id        ID            #IMPLIED
+          ref       %QName;       #IMPLIED
+          type      %QName;       #IMPLIED
+          use       (prohibited|optional|required) #IMPLIED
+          default   CDATA         #IMPLIED
+          fixed     CDATA         #IMPLIED
+          form      %formValues;  #IMPLIED
+          %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+     name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+     reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+                       (%attribute; | %attributeGroup;)*,
+                       (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+                 name       %NCName;       #IMPLIED
+                 id         ID             #IMPLIED
+                 ref        %QName;        #IMPLIED
+                 %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name.  ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+          name     %NCName;       #REQUIRED
+	  id       ID             #IMPLIED
+	  %uniqueAttrs;>
+
+<!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+          name     %NCName;       #REQUIRED
+	  id       ID             #IMPLIED
+	  %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+          name     %NCName;       #REQUIRED
+	  refer    %QName;        #REQUIRED
+	  id       ID             #IMPLIED
+	  %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+          xpath %XPathExpr; #REQUIRED
+          id    ID          #IMPLIED
+          %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+          xpath %XPathExpr; #REQUIRED
+          id    ID          #IMPLIED
+          %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+          schemaLocation %URIref; #REQUIRED
+          id             ID       #IMPLIED
+          %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+          namespace      %URIref; #IMPLIED
+          schemaLocation %URIref; #IMPLIED
+          id             ID       #IMPLIED
+          %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+                      %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+          schemaLocation %URIref; #REQUIRED
+          id             ID       #IMPLIED
+          %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+	  name        %NCName;    #REQUIRED
+	  id          ID          #IMPLIED
+	  public      CDATA       #REQUIRED
+	  system      %URIref;    #IMPLIED
+	  %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+     as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+     to work -->
+<!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
+<!ATTLIST %appinfo;
+          source     %URIref;      #IMPLIED
+          id         ID         #IMPLIED
+          %appinfoAttrs;>
+<!ELEMENT %documentation; ANY>   <!-- too restrictive -->
+<!ATTLIST %documentation;
+          source     %URIref;   #IMPLIED
+          id         ID         #IMPLIED
+          xml:lang   CDATA      #IMPLIED
+          %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+           'structures' 'classpath:/schema/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+           'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/opensaml-core-api/target/classes/schema/XMLSchema.xsd b/opensaml-core-api/target/classes/schema/XMLSchema.xsd
new file mode 100644
index 000000000..a6c395edc
--- /dev/null
+++ b/opensaml-core-api/target/classes/schema/XMLSchema.xsd
@@ -0,0 +1,2311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- XML Schema schema for XML Schemas: Part 1: Structures -->
+<!-- Note this schema is NOT the normative structures schema. -->
+<!-- The prose copy in the structures REC is the normative -->
+<!-- version (which shouldn't differ from this one except for -->
+<!-- this comment and entity expansions, but just in case -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty" targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xml:lang="EN">
+    <xs:annotation>
+        <xs:documentation>
+            Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp Part 2 version: Id: datatypes.xsd,v 1.3
+            2004/01/23 18:11:13 ht Exp
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:annotation>
+        <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+            The schema corresponding to this document is normative, with respect to the syntactic constraints it
+            expresses in the XML Schema language. The documentation (within <documentation> elements) below, is not
+            normative, but rather highlights important aspects of the W3C Recommendation of which this is a part
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:annotation>
+        <xs:documentation>
+            The simpleType element and all of its members are defined towards the end of this schema document
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+        <xs:annotation>
+            <xs:documentation>
+                Get access to the xml: attribute groups for xml:lang as declared on 'schema' and 'documentation' below
+            </xs:documentation>
+        </xs:annotation>
+    </xs:import>
+
+    <xs:complexType name="openAttrs">
+        <xs:annotation>
+            <xs:documentation>
+                This type is extended by almost all schema types to allow attributes from other namespaces to be added
+                to user schemas.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:restriction base="xs:anyType">
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="annotated">
+        <xs:annotation>
+            <xs:documentation>
+                This type is extended by all types which allow annotation other than <schema> itself
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="xs:openAttrs">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="id" type="xs:ID"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:group name="schemaTop">
+        <xs:annotation>
+            <xs:documentation>
+                This group is for the elements which occur freely at the top level of schemas. All of their types are
+                based on the "annotated" type by extension.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:choice>
+            <xs:group ref="xs:redefinable"/>
+            <xs:element ref="xs:element"/>
+            <xs:element ref="xs:attribute"/>
+            <xs:element ref="xs:notation"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:group name="redefinable">
+        <xs:annotation>
+            <xs:documentation>
+                This group is for the elements which can self-redefine (see <redefine> below).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:choice>
+            <xs:element ref="xs:simpleType"/>
+            <xs:element ref="xs:complexType"/>
+            <xs:element ref="xs:group"/>
+            <xs:element ref="xs:attributeGroup"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:simpleType name="formChoice">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:NMTOKEN">
+            <xs:enumeration value="qualified"/>
+            <xs:enumeration value="unqualified"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="reducedDerivationControl">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:derivationControl">
+            <xs:enumeration value="extension"/>
+            <xs:enumeration value="restriction"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="derivationSet">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+            <xs:documentation>#all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+        </xs:annotation>
+        <xs:union>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="#all"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType>
+                <xs:list itemType="xs:reducedDerivationControl"/>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:simpleType name="typeDerivationControl">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:derivationControl">
+            <xs:enumeration value="extension"/>
+            <xs:enumeration value="restriction"/>
+            <xs:enumeration value="list"/>
+            <xs:enumeration value="union"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="fullDerivationSet">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+            <xs:documentation>
+                #all or (possibly empty) subset of {extension, restriction, list, union}
+            </xs:documentation>
+        </xs:annotation>
+        <xs:union>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="#all"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType>
+                <xs:list itemType="xs:typeDerivationControl"/>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:element name="schema" id="schema">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:openAttrs">
+                    <xs:sequence>
+                        <xs:choice minOccurs="0" maxOccurs="unbounded">
+                            <xs:element ref="xs:include"/>
+                            <xs:element ref="xs:import"/>
+                            <xs:element ref="xs:redefine"/>
+                            <xs:element ref="xs:annotation"/>
+                        </xs:choice>
+                        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                            <xs:group ref="xs:schemaTop"/>
+                            <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+                        </xs:sequence>
+                    </xs:sequence>
+                    <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+                    <xs:attribute name="version" type="xs:token"/>
+                    <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+                    <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+                    <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+                    <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+                    <xs:attribute name="id" type="xs:ID"/>
+                    <xs:attribute ref="xml:lang"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+
+        <xs:key name="element">
+            <xs:selector xpath="xs:element"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="attribute">
+            <xs:selector xpath="xs:attribute"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="type">
+            <xs:selector xpath="xs:complexType|xs:simpleType"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="group">
+            <xs:selector xpath="xs:group"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="attributeGroup">
+            <xs:selector xpath="xs:attributeGroup"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="notation">
+            <xs:selector xpath="xs:notation"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+        <xs:key name="identityConstraint">
+            <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+            <xs:field xpath="@name"/>
+        </xs:key>
+
+    </xs:element>
+
+    <xs:simpleType name="allNNI">
+        <xs:annotation>
+            <xs:documentation>for maxOccurs</xs:documentation>
+        </xs:annotation>
+        <xs:union memberTypes="xs:nonNegativeInteger">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="unbounded"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:attributeGroup name="occurs">
+        <xs:annotation>
+            <xs:documentation>for all particles</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+        <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+    </xs:attributeGroup>
+
+    <xs:attributeGroup name="defRef">
+        <xs:annotation>
+            <xs:documentation>for element, group and attributeGroup, which both define and reference</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="name" type="xs:NCName"/>
+        <xs:attribute name="ref" type="xs:QName"/>
+    </xs:attributeGroup>
+
+    <xs:group name="typeDefParticle">
+        <xs:annotation>
+            <xs:documentation>'complexType' uses this</xs:documentation>
+        </xs:annotation>
+        <xs:choice>
+            <xs:element name="group" type="xs:groupRef"/>
+            <xs:element ref="xs:all"/>
+            <xs:element ref="xs:choice"/>
+            <xs:element ref="xs:sequence"/>
+        </xs:choice>
+    </xs:group>
+
+
+
+    <xs:group name="nestedParticle">
+        <xs:choice>
+            <xs:element name="element" type="xs:localElement"/>
+            <xs:element name="group" type="xs:groupRef"/>
+            <xs:element ref="xs:choice"/>
+            <xs:element ref="xs:sequence"/>
+            <xs:element ref="xs:any"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:group name="particle">
+        <xs:choice>
+            <xs:element name="element" type="xs:localElement"/>
+            <xs:element name="group" type="xs:groupRef"/>
+            <xs:element ref="xs:all"/>
+            <xs:element ref="xs:choice"/>
+            <xs:element ref="xs:sequence"/>
+            <xs:element ref="xs:any"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:complexType name="attribute">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:sequence>
+                    <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+                </xs:sequence>
+                <xs:attributeGroup ref="xs:defRef"/>
+                <xs:attribute name="type" type="xs:QName"/>
+                <xs:attribute name="use" use="optional" default="optional">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:NMTOKEN">
+                            <xs:enumeration value="prohibited"/>
+                            <xs:enumeration value="optional"/>
+                            <xs:enumeration value="required"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+                <xs:attribute name="default" type="xs:string"/>
+                <xs:attribute name="fixed" type="xs:string"/>
+                <xs:attribute name="form" type="xs:formChoice"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="topLevelAttribute">
+        <xs:complexContent>
+            <xs:restriction base="xs:attribute">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+                </xs:sequence>
+                <xs:attribute name="ref" use="prohibited"/>
+                <xs:attribute name="form" use="prohibited"/>
+                <xs:attribute name="use" use="prohibited"/>
+                <xs:attribute name="name" use="required" type="xs:NCName"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:group name="attrDecls">
+        <xs:sequence>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element name="attribute" type="xs:attribute"/>
+                <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+            </xs:choice>
+            <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+        </xs:sequence>
+    </xs:group>
+
+    <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:group name="complexTypeModel">
+        <xs:choice>
+            <xs:element ref="xs:simpleContent"/>
+            <xs:element ref="xs:complexContent"/>
+            <xs:sequence>
+                <xs:annotation>
+                    <xs:documentation>
+                        This branch is short for <complexContent> <restriction base="xs:anyType"> ...
+                        </restriction> </complexContent>
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+                <xs:group ref="xs:attrDecls"/>
+            </xs:sequence>
+        </xs:choice>
+    </xs:group>
+
+    <xs:complexType name="complexType" abstract="true">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:group ref="xs:complexTypeModel"/>
+                <xs:attribute name="name" type="xs:NCName">
+                    <xs:annotation>
+                        <xs:documentation>Will be restricted to required or forbidden</xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Not allowed if simpleContent child is chosen. May be overriden by setting on complexContent
+                            child.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+                <xs:attribute name="final" type="xs:derivationSet"/>
+                <xs:attribute name="block" type="xs:derivationSet"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="topLevelComplexType">
+        <xs:complexContent>
+            <xs:restriction base="xs:complexType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:complexTypeModel"/>
+                </xs:sequence>
+                <xs:attribute name="name" type="xs:NCName" use="required"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="localComplexType">
+        <xs:complexContent>
+            <xs:restriction base="xs:complexType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:complexTypeModel"/>
+                </xs:sequence>
+                <xs:attribute name="name" use="prohibited"/>
+                <xs:attribute name="abstract" use="prohibited"/>
+                <xs:attribute name="final" use="prohibited"/>
+                <xs:attribute name="block" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="restrictionType">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:sequence>
+                    <xs:choice minOccurs="0">
+                        <xs:group ref="xs:typeDefParticle"/>
+                        <xs:group ref="xs:simpleRestrictionModel"/>
+                    </xs:choice>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:attribute name="base" type="xs:QName" use="required"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="complexRestrictionType">
+        <xs:complexContent>
+            <xs:restriction base="xs:restrictionType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0">
+                        <xs:annotation>
+                            <xs:documentation>
+                                This choice is added simply to make this a valid restriction per the REC
+                            </xs:documentation>
+                        </xs:annotation>
+                        <xs:group ref="xs:typeDefParticle"/>
+                    </xs:choice>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="extensionType">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:sequence>
+                    <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:attribute name="base" type="xs:QName" use="required"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="complexContent" id="complexContent">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:choice>
+                        <xs:element name="restriction" type="xs:complexRestrictionType"/>
+                        <xs:element name="extension" type="xs:extensionType"/>
+                    </xs:choice>
+                    <xs:attribute name="mixed" type="xs:boolean">
+                        <xs:annotation>
+                            <xs:documentation>Overrides any setting on complexType parent.</xs:documentation>
+                        </xs:annotation>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="simpleRestrictionType">
+        <xs:complexContent>
+            <xs:restriction base="xs:restrictionType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0">
+                        <xs:annotation>
+                            <xs:documentation>
+                                This choice is added simply to make this a valid restriction per the REC
+                            </xs:documentation>
+                        </xs:annotation>
+                        <xs:group ref="xs:simpleRestrictionModel"/>
+                    </xs:choice>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="simpleExtensionType">
+        <xs:complexContent>
+            <xs:restriction base="xs:extensionType">
+                <xs:sequence>
+                    <xs:annotation>
+                        <xs:documentation>No typeDefParticle group reference</xs:documentation>
+                    </xs:annotation>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="simpleContent" id="simpleContent">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:choice>
+                        <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+                        <xs:element name="extension" type="xs:simpleExtensionType"/>
+                    </xs:choice>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+        </xs:annotation>
+    </xs:element>
+
+
+    <xs:simpleType name="blockSet">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+            <xs:documentation>
+                #all or (possibly empty) subset of {substitution, extension, restriction}
+            </xs:documentation>
+        </xs:annotation>
+        <xs:union>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="#all"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType>
+                <xs:list>
+                    <xs:simpleType>
+                        <xs:restriction base="xs:derivationControl">
+                            <xs:enumeration value="extension"/>
+                            <xs:enumeration value="restriction"/>
+                            <xs:enumeration value="substitution"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:list>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:complexType name="element" abstract="true">
+        <xs:annotation>
+            <xs:documentation>
+                The element element can be used either at the top level to define an element-type binding globally, or
+                within a content model to either reference a globally-defined element or type or declare an element-type
+                binding locally. The ref form is not allowed at the top level.
+            </xs:documentation>
+        </xs:annotation>
+
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:sequence>
+                    <xs:choice minOccurs="0">
+                        <xs:element name="simpleType" type="xs:localSimpleType"/>
+                        <xs:element name="complexType" type="xs:localComplexType"/>
+                    </xs:choice>
+                    <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attributeGroup ref="xs:defRef"/>
+                <xs:attribute name="type" type="xs:QName"/>
+                <xs:attribute name="substitutionGroup" type="xs:QName"/>
+                <xs:attributeGroup ref="xs:occurs"/>
+                <xs:attribute name="default" type="xs:string"/>
+                <xs:attribute name="fixed" type="xs:string"/>
+                <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+                <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+                <xs:attribute name="final" type="xs:derivationSet"/>
+                <xs:attribute name="block" type="xs:blockSet"/>
+                <xs:attribute name="form" type="xs:formChoice"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="topLevelElement">
+        <xs:complexContent>
+            <xs:restriction base="xs:element">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0">
+                        <xs:element name="simpleType" type="xs:localSimpleType"/>
+                        <xs:element name="complexType" type="xs:localComplexType"/>
+                    </xs:choice>
+                    <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="ref" use="prohibited"/>
+                <xs:attribute name="form" use="prohibited"/>
+                <xs:attribute name="minOccurs" use="prohibited"/>
+                <xs:attribute name="maxOccurs" use="prohibited"/>
+                <xs:attribute name="name" use="required" type="xs:NCName"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="localElement">
+        <xs:complexContent>
+            <xs:restriction base="xs:element">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0">
+                        <xs:element name="simpleType" type="xs:localSimpleType"/>
+                        <xs:element name="complexType" type="xs:localComplexType"/>
+                    </xs:choice>
+                    <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="substitutionGroup" use="prohibited"/>
+                <xs:attribute name="final" use="prohibited"/>
+                <xs:attribute name="abstract" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="element" type="xs:topLevelElement" id="element">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:complexType name="group" abstract="true">
+        <xs:annotation>
+            <xs:documentation>
+                group type for explicit groups, named top-level groups and group references
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+                <xs:attributeGroup ref="xs:defRef"/>
+                <xs:attributeGroup ref="xs:occurs"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="realGroup">
+        <xs:complexContent>
+            <xs:restriction base="xs:group">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0" maxOccurs="1">
+                        <xs:element ref="xs:all"/>
+                        <xs:element ref="xs:choice"/>
+                        <xs:element ref="xs:sequence"/>
+                    </xs:choice>
+                </xs:sequence>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="namedGroup">
+        <xs:complexContent>
+            <xs:restriction base="xs:realGroup">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="1" maxOccurs="1">
+                        <xs:element name="all">
+                            <xs:complexType>
+                                <xs:complexContent>
+                                    <xs:restriction base="xs:all">
+                                        <xs:group ref="xs:allModel"/>
+                                        <xs:attribute name="minOccurs" use="prohibited"/>
+                                        <xs:attribute name="maxOccurs" use="prohibited"/>
+                                        <xs:anyAttribute namespace="##other" processContents="lax"/>
+                                    </xs:restriction>
+                                </xs:complexContent>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+                        <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+                    </xs:choice>
+                </xs:sequence>
+                <xs:attribute name="name" use="required" type="xs:NCName"/>
+                <xs:attribute name="ref" use="prohibited"/>
+                <xs:attribute name="minOccurs" use="prohibited"/>
+                <xs:attribute name="maxOccurs" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="groupRef">
+        <xs:complexContent>
+            <xs:restriction base="xs:realGroup">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="ref" use="required" type="xs:QName"/>
+                <xs:attribute name="name" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="explicitGroup">
+        <xs:annotation>
+            <xs:documentation>group type for the three kinds of group</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:restriction base="xs:group">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+                <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="simpleExplicitGroup">
+        <xs:complexContent>
+            <xs:restriction base="xs:explicitGroup">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="minOccurs" use="prohibited"/>
+                <xs:attribute name="maxOccurs" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:group name="allModel">
+        <xs:sequence>
+            <xs:element ref="xs:annotation" minOccurs="0"/>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation>
+                    <xs:documentation>
+                        This choice with min/max is here to avoid a pblm with the Elt:All/Choice/Seq Particle derivation
+                        constraint
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:element name="element" type="xs:narrowMaxMin"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:group>
+
+
+    <xs:complexType name="narrowMaxMin">
+        <xs:annotation>
+            <xs:documentation>restricted max/min</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:restriction base="xs:localElement">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:choice minOccurs="0">
+                        <xs:element name="simpleType" type="xs:localSimpleType"/>
+                        <xs:element name="complexType" type="xs:localComplexType"/>
+                    </xs:choice>
+                    <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="minOccurs" use="optional" default="1">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:nonNegativeInteger">
+                            <xs:enumeration value="0"/>
+                            <xs:enumeration value="1"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+                <xs:attribute name="maxOccurs" use="optional" default="1">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:allNNI">
+                            <xs:enumeration value="0"/>
+                            <xs:enumeration value="1"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="all">
+        <xs:annotation>
+            <xs:documentation>Only elements allowed inside</xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:restriction base="xs:explicitGroup">
+                <xs:group ref="xs:allModel"/>
+                <xs:attribute name="minOccurs" use="optional" default="1">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:nonNegativeInteger">
+                            <xs:enumeration value="0"/>
+                            <xs:enumeration value="1"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+                <xs:attribute name="maxOccurs" use="optional" default="1">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:allNNI">
+                            <xs:enumeration value="1"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="all" id="all" type="xs:all">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="choice" type="xs:explicitGroup" id="choice">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="group" type="xs:namedGroup" id="group">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:complexType name="wildcard">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+                <xs:attribute name="processContents" use="optional" default="strict">
+                    <xs:simpleType>
+                        <xs:restriction base="xs:NMTOKEN">
+                            <xs:enumeration value="skip"/>
+                            <xs:enumeration value="lax"/>
+                            <xs:enumeration value="strict"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="any" id="any">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:wildcard">
+                    <xs:attributeGroup ref="xs:occurs"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:annotation>
+        <xs:documentation>
+            simple type for the value of the 'namespace' attr of 'any' and 'anyAttribute'
+        </xs:documentation>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+            Value is ##any - - any non-conflicting WFXML/attribute at all
+
+            ##other - - any non-conflicting WFXML/attribute from namespace other than targetNS
+
+            ##local - - any unqualified non-conflicting WFXML/attribute
+
+            one or - - any non-conflicting WFXML/attribute from more URI the listed namespaces references (space
+            separated)
+
+            ##targetNamespace or ##local may appear in the above list, to refer to the targetNamespace of the enclosing
+            schema or an absent targetNamespace respectively
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:simpleType name="namespaceList">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:union>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="##any"/>
+                    <xs:enumeration value="##other"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType>
+                <xs:list>
+                    <xs:simpleType>
+                        <xs:union memberTypes="xs:anyURI">
+                            <xs:simpleType>
+                                <xs:restriction base="xs:token">
+                                    <xs:enumeration value="##targetNamespace"/>
+                                    <xs:enumeration value="##local"/>
+                                </xs:restriction>
+                            </xs:simpleType>
+                        </xs:union>
+                    </xs:simpleType>
+                </xs:list>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:complexType name="attributeGroup" abstract="true">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:group ref="xs:attrDecls"/>
+                <xs:attributeGroup ref="xs:defRef"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="namedAttributeGroup">
+        <xs:complexContent>
+            <xs:restriction base="xs:attributeGroup">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:attrDecls"/>
+                </xs:sequence>
+                <xs:attribute name="name" use="required" type="xs:NCName"/>
+                <xs:attribute name="ref" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="attributeGroupRef">
+        <xs:complexContent>
+            <xs:restriction base="xs:attributeGroup">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="ref" use="required" type="xs:QName"/>
+                <xs:attribute name="name" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="include" id="include">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="redefine" id="redefine">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:openAttrs">
+                    <xs:choice minOccurs="0" maxOccurs="unbounded">
+                        <xs:element ref="xs:annotation"/>
+                        <xs:group ref="xs:redefinable"/>
+                    </xs:choice>
+                    <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+                    <xs:attribute name="id" type="xs:ID"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="import" id="import">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:attribute name="namespace" type="xs:anyURI"/>
+                    <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="selector" id="selector">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:attribute name="xpath" use="required">
+                        <xs:simpleType>
+                            <xs:annotation>
+                                <xs:documentation>A subset of XPath expressions for use in selectors</xs:documentation>
+                                <xs:documentation>A utility type, not for public use</xs:documentation>
+                            </xs:annotation>
+                            <xs:restriction base="xs:token">
+                                <xs:annotation>
+                                    <xs:documentation>
+                                        The following pattern is intended to allow XPath expressions per the following
+                                        EBNF: Selector ::= Path ( '|' Path )* Path ::= ('.//')? Step ( '/' Step )* Step
+                                        ::= '.' | NameTest NameTest ::= QName | '*' | NCName ':' '*' child:: is also
+                                        allowed
+                                    </xs:documentation>
+                                </xs:annotation>
+                                <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+                                </xs:pattern>
+                            </xs:restriction>
+                        </xs:simpleType>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field" id="field">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:attribute name="xpath" use="required">
+                        <xs:simpleType>
+                            <xs:annotation>
+                                <xs:documentation>A subset of XPath expressions for use in fields</xs:documentation>
+                                <xs:documentation>A utility type, not for public use</xs:documentation>
+                            </xs:annotation>
+                            <xs:restriction base="xs:token">
+                                <xs:annotation>
+                                    <xs:documentation>
+                                        The following pattern is intended to allow XPath expressions per the same EBNF
+                                        as for selector, with the following change: Path ::= ('.//')? ( Step '/' )* (
+                                        Step | '@' NameTest )
+                                    </xs:documentation>
+                                </xs:annotation>
+                                <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+                                </xs:pattern>
+                            </xs:restriction>
+                        </xs:simpleType>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="keybase">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:sequence>
+                    <xs:element ref="xs:selector"/>
+                    <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:attribute name="name" type="xs:NCName" use="required"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:group name="identityConstraint">
+        <xs:annotation>
+            <xs:documentation>
+                The three kinds of identity constraints, all with type of or derived from 'keybase'.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:choice>
+            <xs:element ref="xs:unique"/>
+            <xs:element ref="xs:key"/>
+            <xs:element ref="xs:keyref"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:element name="unique" type="xs:keybase" id="unique">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="key" type="xs:keybase" id="key">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="keyref" id="keyref">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:keybase">
+                    <xs:attribute name="refer" type="xs:QName" use="required"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="notation" id="notation">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:attribute name="name" type="xs:NCName" use="required"/>
+                    <xs:attribute name="public" type="xs:public"/>
+                    <xs:attribute name="system" type="xs:anyURI"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:simpleType name="public">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+            <xs:documentation>A public identifier, per ISO 8879</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:token"/>
+    </xs:simpleType>
+
+    <xs:element name="appinfo" id="appinfo">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+        </xs:annotation>
+        <xs:complexType mixed="true">
+            <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                <xs:any processContents="lax"/>
+            </xs:sequence>
+            <xs:attribute name="source" type="xs:anyURI"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="documentation" id="documentation">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+        </xs:annotation>
+        <xs:complexType mixed="true">
+            <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                <xs:any processContents="lax"/>
+            </xs:sequence>
+            <xs:attribute name="source" type="xs:anyURI"/>
+            <xs:attribute ref="xml:lang"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="annotation" id="annotation">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="xs:openAttrs">
+                    <xs:choice minOccurs="0" maxOccurs="unbounded">
+                        <xs:element ref="xs:appinfo"/>
+                        <xs:element ref="xs:documentation"/>
+                    </xs:choice>
+                    <xs:attribute name="id" type="xs:ID"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:annotation>
+        <xs:documentation>notations for use within XML Schema schemas</xs:documentation>
+    </xs:annotation>
+
+    <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+    <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+    <xs:complexType name="anyType" mixed="true">
+        <xs:annotation>
+            <xs:documentation>
+                Not the real urType, but as close an approximation as we can get in the XML representation
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+        </xs:sequence>
+        <xs:anyAttribute processContents="lax"/>
+    </xs:complexType>
+
+    <xs:annotation>
+        <xs:documentation>
+            First the built-in primitive datatypes. These definitions are for information only, the real built-in
+            definitions are magic.
+        </xs:documentation>
+
+        <xs:documentation>
+            For each built-in datatype in this schema (both primitive and derived) can be uniquely addressed via a URI
+            constructed as follows: 1) the base URI is the URI of the XML Schema namespace 2) the fragment identifier is
+            the name of the datatype
+
+            For example, to address the int datatype, the URI is:
+
+            http://www.w3.org/2001/XMLSchema#int
+
+            Additionally, each facet definition element can be uniquely addressed via a URI constructed as follows: 1)
+            the base URI is the URI of the XML Schema namespace 2) the fragment identifier is the name of the facet
+
+            For example, to address the maxInclusive facet, the URI is:
+
+            http://www.w3.org/2001/XMLSchema#maxInclusive
+
+            Additionally, each facet usage in a built-in datatype definition can be uniquely addressed via a URI
+            constructed as follows: 1) the base URI is the URI of the XML Schema namespace 2) the fragment identifier is
+            the name of the datatype, followed by a period (".") followed by the name of the facet
+
+            For example, to address the usage of the maxInclusive facet in the definition of int, the URI is:
+
+            http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:simpleType name="string" id="string">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="preserve" id="string.preserve"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="boolean" id="boolean">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="finite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="float" id="float">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="total"/>
+                <hfp:hasProperty name="bounded" value="true"/>
+                <hfp:hasProperty name="cardinality" value="finite"/>
+                <hfp:hasProperty name="numeric" value="true"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="double" id="double">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="total"/>
+                <hfp:hasProperty name="bounded" value="true"/>
+                <hfp:hasProperty name="cardinality" value="finite"/>
+                <hfp:hasProperty name="numeric" value="true"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="decimal" id="decimal">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="totalDigits"/>
+                <hfp:hasFacet name="fractionDigits"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="total"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="true"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="duration" id="duration">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="dateTime" id="dateTime">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="time" id="time">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="date" id="date">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="gYearMonth" id="gYearMonth">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="gYear" id="gYear">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="gMonthDay" id="gMonthDay">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="gDay" id="gDay">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="gMonth" id="gMonth">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="maxInclusive"/>
+                <hfp:hasFacet name="maxExclusive"/>
+                <hfp:hasFacet name="minInclusive"/>
+                <hfp:hasFacet name="minExclusive"/>
+                <hfp:hasProperty name="ordered" value="partial"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="hexBinary" id="hexBinary">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="base64Binary" id="base64Binary">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="anyURI" id="anyURI">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="QName" id="QName">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="NOTATION" id="NOTATION">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+            <xs:documentation>
+                NOTATION cannot be used directly in a schema; rather a type must be derived from it by specifying at
+                least one enumeration facet whose value is the name of a NOTATION declared in the schema.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:anySimpleType">
+            <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:annotation>
+        <xs:documentation>Now the derived primitive types</xs:documentation>
+    </xs:annotation>
+
+    <xs:simpleType name="normalizedString" id="normalizedString">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+        </xs:annotation>
+        <xs:restriction base="xs:string">
+            <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="token" id="token">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/>
+        </xs:annotation>
+        <xs:restriction base="xs:normalizedString">
+            <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="language" id="language">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+            <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+                <xs:annotation>
+                    <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt">
+                        pattern specifies the content of section 2.12 of XML 1.0e2 and RFC 3066 (Revised version of RFC
+                        1766).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:pattern>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="IDREFS" id="IDREFS">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+        </xs:annotation>
+        <xs:restriction>
+            <xs:simpleType>
+                <xs:list itemType="xs:IDREF"/>
+            </xs:simpleType>
+            <xs:minLength value="1" id="IDREFS.minLength"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="ENTITIES" id="ENTITIES">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+        </xs:annotation>
+        <xs:restriction>
+            <xs:simpleType>
+                <xs:list itemType="xs:ENTITY"/>
+            </xs:simpleType>
+            <xs:minLength value="1" id="ENTITIES.minLength"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+            <xs:pattern value="\c+" id="NMTOKEN.pattern">
+                <xs:annotation>
+                    <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+                        pattern matches production 7 from the XML spec
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:pattern>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasFacet name="length"/>
+                <hfp:hasFacet name="minLength"/>
+                <hfp:hasFacet name="maxLength"/>
+                <hfp:hasFacet name="enumeration"/>
+                <hfp:hasFacet name="whiteSpace"/>
+                <hfp:hasFacet name="pattern"/>
+                <hfp:hasProperty name="ordered" value="false"/>
+                <hfp:hasProperty name="bounded" value="false"/>
+                <hfp:hasProperty name="cardinality" value="countably infinite"/>
+                <hfp:hasProperty name="numeric" value="false"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+        </xs:annotation>
+        <xs:restriction>
+            <xs:simpleType>
+                <xs:list itemType="xs:NMTOKEN"/>
+            </xs:simpleType>
+            <xs:minLength value="1" id="NMTOKENS.minLength"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="Name" id="Name">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+        </xs:annotation>
+        <xs:restriction base="xs:token">
+            <xs:pattern value="\i\c*" id="Name.pattern">
+                <xs:annotation>
+                    <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+                        pattern matches production 5 from the XML spec
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:pattern>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="NCName" id="NCName">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+        </xs:annotation>
+        <xs:restriction base="xs:Name">
+            <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+                <xs:annotation>
+                    <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+                        pattern matches production 4 from the Namespaces in XML spec
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:pattern>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="ID" id="ID">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+        </xs:annotation>
+        <xs:restriction base="xs:NCName"/>
+    </xs:simpleType>
+
+    <xs:simpleType name="IDREF" id="IDREF">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+        </xs:annotation>
+        <xs:restriction base="xs:NCName"/>
+    </xs:simpleType>
+
+    <xs:simpleType name="ENTITY" id="ENTITY">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+        </xs:annotation>
+        <xs:restriction base="xs:NCName"/>
+    </xs:simpleType>
+
+    <xs:simpleType name="integer" id="integer">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+        </xs:annotation>
+        <xs:restriction base="xs:decimal">
+            <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+            <xs:pattern value="[\-+]?[0-9]+"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+        </xs:annotation>
+        <xs:restriction base="xs:integer">
+            <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="negativeInteger" id="negativeInteger">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+        </xs:annotation>
+        <xs:restriction base="xs:nonPositiveInteger">
+            <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="long" id="long">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasProperty name="bounded" value="true"/>
+                <hfp:hasProperty name="cardinality" value="finite"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/>
+        </xs:annotation>
+        <xs:restriction base="xs:integer">
+            <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+            <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="int" id="int">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/>
+        </xs:annotation>
+        <xs:restriction base="xs:long">
+            <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+            <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="short" id="short">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/>
+        </xs:annotation>
+        <xs:restriction base="xs:int">
+            <xs:minInclusive value="-32768" id="short.minInclusive"/>
+            <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="byte" id="byte">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+        </xs:annotation>
+        <xs:restriction base="xs:short">
+            <xs:minInclusive value="-128" id="byte.minInclusive"/>
+            <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+        </xs:annotation>
+        <xs:restriction base="xs:integer">
+            <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="unsignedLong" id="unsignedLong">
+        <xs:annotation>
+            <xs:appinfo>
+                <hfp:hasProperty name="bounded" value="true"/>
+                <hfp:hasProperty name="cardinality" value="finite"/>
+            </xs:appinfo>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+        </xs:annotation>
+        <xs:restriction base="xs:nonNegativeInteger">
+            <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="unsignedInt" id="unsignedInt">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+        </xs:annotation>
+        <xs:restriction base="xs:unsignedLong">
+            <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="unsignedShort" id="unsignedShort">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+        </xs:annotation>
+        <xs:restriction base="xs:unsignedInt">
+            <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="unsignedByte" id="unsignedByte">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+        </xs:annotation>
+        <xs:restriction base="xs:unsignedShort">
+            <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="positiveInteger" id="positiveInteger">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+        </xs:annotation>
+        <xs:restriction base="xs:nonNegativeInteger">
+            <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:simpleType name="derivationControl">
+        <xs:annotation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:restriction base="xs:NMTOKEN">
+            <xs:enumeration value="substitution"/>
+            <xs:enumeration value="extension"/>
+            <xs:enumeration value="restriction"/>
+            <xs:enumeration value="list"/>
+            <xs:enumeration value="union"/>
+        </xs:restriction>
+    </xs:simpleType>
+
+    <xs:group name="simpleDerivation">
+        <xs:choice>
+            <xs:element ref="xs:restriction"/>
+            <xs:element ref="xs:list"/>
+            <xs:element ref="xs:union"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:simpleType name="simpleDerivationSet">
+        <xs:annotation>
+            <xs:documentation>#all or (possibly empty) subset of {restriction, union, list}</xs:documentation>
+            <xs:documentation>A utility type, not for public use</xs:documentation>
+        </xs:annotation>
+        <xs:union>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="#all"/>
+                </xs:restriction>
+            </xs:simpleType>
+            <xs:simpleType>
+                <xs:list>
+                    <xs:simpleType>
+                        <xs:restriction base="xs:derivationControl">
+                            <xs:enumeration value="list"/>
+                            <xs:enumeration value="union"/>
+                            <xs:enumeration value="restriction"/>
+                        </xs:restriction>
+                    </xs:simpleType>
+                </xs:list>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+
+    <xs:complexType name="simpleType" abstract="true">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:group ref="xs:simpleDerivation"/>
+                <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+                <xs:attribute name="name" type="xs:NCName">
+                    <xs:annotation>
+                        <xs:documentation>Can be restricted to required or forbidden</xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="topLevelSimpleType">
+        <xs:complexContent>
+            <xs:restriction base="xs:simpleType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:simpleDerivation"/>
+                </xs:sequence>
+                <xs:attribute name="name" use="required" type="xs:NCName">
+                    <xs:annotation>
+                        <xs:documentation>Required at the top level</xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="localSimpleType">
+        <xs:complexContent>
+            <xs:restriction base="xs:simpleType">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                    <xs:group ref="xs:simpleDerivation"/>
+                </xs:sequence>
+                <xs:attribute name="name" use="prohibited">
+                    <xs:annotation>
+                        <xs:documentation>Forbidden when nested</xs:documentation>
+                    </xs:annotation>
+                </xs:attribute>
+                <xs:attribute name="final" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:group name="facets">
+        <xs:annotation>
+            <xs:documentation>
+                We should use a substitution group for facets, but that's ruled out because it would allow users to add
+                their own, which we're not ready for yet.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:choice>
+            <xs:element ref="xs:minExclusive"/>
+            <xs:element ref="xs:minInclusive"/>
+            <xs:element ref="xs:maxExclusive"/>
+            <xs:element ref="xs:maxInclusive"/>
+            <xs:element ref="xs:totalDigits"/>
+            <xs:element ref="xs:fractionDigits"/>
+            <xs:element ref="xs:length"/>
+            <xs:element ref="xs:minLength"/>
+            <xs:element ref="xs:maxLength"/>
+            <xs:element ref="xs:enumeration"/>
+            <xs:element ref="xs:whiteSpace"/>
+            <xs:element ref="xs:pattern"/>
+        </xs:choice>
+    </xs:group>
+
+    <xs:group name="simpleRestrictionModel">
+        <xs:sequence>
+            <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+            <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+
+    <xs:element name="restriction" id="restriction">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+                    base attribute and simpleType child are mutually exclusive, but one or other is required
+                </xs:documentation>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:group ref="xs:simpleRestrictionModel"/>
+                    <xs:attribute name="base" type="xs:QName" use="optional"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="list" id="list">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list">
+                    itemType attribute and simpleType child are mutually exclusive, but one or other is required
+                </xs:documentation>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:sequence>
+                        <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+                    </xs:sequence>
+                    <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="union" id="union">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union">
+                    memberTypes attribute must be non-empty or there must be at least one simpleType child
+                </xs:documentation>
+            </xs:annotation>
+            <xs:complexContent>
+                <xs:extension base="xs:annotated">
+                    <xs:sequence>
+                        <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                    <xs:attribute name="memberTypes" use="optional">
+                        <xs:simpleType>
+                            <xs:list itemType="xs:QName"/>
+                        </xs:simpleType>
+                    </xs:attribute>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="facet">
+        <xs:complexContent>
+            <xs:extension base="xs:annotated">
+                <xs:attribute name="value" use="required"/>
+                <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="noFixedFacet">
+        <xs:complexContent>
+            <xs:restriction base="xs:facet">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="fixed" use="prohibited"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:complexType name="numFacet">
+        <xs:complexContent>
+            <xs:restriction base="xs:facet">
+                <xs:sequence>
+                    <xs:element ref="xs:annotation" minOccurs="0"/>
+                </xs:sequence>
+                <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+                <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:element name="totalDigits" id="totalDigits">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:restriction base="xs:numFacet">
+                    <xs:sequence>
+                        <xs:element ref="xs:annotation" minOccurs="0"/>
+                    </xs:sequence>
+                    <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+                    <xs:anyAttribute namespace="##other" processContents="lax"/>
+                </xs:restriction>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="length" id="length" type="xs:numFacet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="minLength" id="minLength" type="xs:numFacet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+        </xs:annotation>
+    </xs:element>
+    <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="whiteSpace" id="whiteSpace">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:restriction base="xs:facet">
+                    <xs:sequence>
+                        <xs:element ref="xs:annotation" minOccurs="0"/>
+                    </xs:sequence>
+                    <xs:attribute name="value" use="required">
+                        <xs:simpleType>
+                            <xs:restriction base="xs:NMTOKEN">
+                                <xs:enumeration value="preserve"/>
+                                <xs:enumeration value="replace"/>
+                                <xs:enumeration value="collapse"/>
+                            </xs:restriction>
+                        </xs:simpleType>
+                    </xs:attribute>
+                    <xs:anyAttribute namespace="##other" processContents="lax"/>
+                </xs:restriction>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="pattern" id="pattern">
+        <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:restriction base="xs:noFixedFacet">
+                    <xs:sequence>
+                        <xs:element ref="xs:annotation" minOccurs="0"/>
+                    </xs:sequence>
+                    <xs:attribute name="value" type="xs:string" use="required"/>
+                    <xs:anyAttribute namespace="##other" processContents="lax"/>
+                </xs:restriction>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+
+</xs:schema>
diff --git a/opensaml-core-api/target/classes/schema/datatypes.dtd b/opensaml-core-api/target/classes/schema/datatypes.dtd
new file mode 100644
index 000000000..8e48553be
--- /dev/null
+++ b/opensaml-core-api/target/classes/schema/datatypes.dtd
@@ -0,0 +1,203 @@
+<!--
+        DTD for XML Schemas: Part 2: Datatypes
+        $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $
+        Note this DTD is NOT normative, or even definitive. - - the
+        prose copy in the datatypes REC is the definitive version
+        (which shouldn't differ from this one except for this comment
+        and entity expansions, but just in case)
+  -->
+
+<!--
+        This DTD cannot be used on its own, it is intended
+        only for incorporation in XMLSchema.dtd, q.v.
+  -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+        Customisation entities for the ATTLIST of each element
+        type. Define one of these if your schema takes advantage
+        of the anyAttribute='##other' in the schema for schemas
+  -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+        types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+        #all or space-separated list drawn from derivationChoice
+  -->
+
+<!--
+        Note that the use of 'facet' below is less restrictive
+        than is really intended:  There should in fact be no
+        more than one of each of minInclusive, minExclusive,
+        maxInclusive, maxExclusive, totalDigits, fractionDigits,
+        length, maxLength, minLength within datatype,
+        and the min- and max- variants of Inclusive and Exclusive
+        are mutually exclusive. On the other hand,  pattern and
+        enumeration may repeat.
+  -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+   "%pattern; | %enumeration; | %whiteSpace; | %length; |
+   %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr 
+        "value CDATA #REQUIRED
+        id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+        ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+    name      %NCName; #IMPLIED
+    final     %simpleDerivationSet; #IMPLIED
+    id        ID       #IMPLIED
+    %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+                         (%restriction1; |
+                          ((%simpleType;)?,(%facet;)*)),
+                         (%attrDecls;))>
+<!ATTLIST %restriction;
+    base      %QName;                  #IMPLIED
+    id        ID       #IMPLIED
+    %restrictionAttrs;>
+<!--
+        base and simpleType child are mutually exclusive,
+        one is required.
+
+        restriction is shared between simpleType and
+        simpleContent and complexContent (in XMLSchema.xsd).
+        restriction1 is for the latter cases, when this
+        is restricting a complex type, as is attrDecls.
+  -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+    itemType      %QName;             #IMPLIED
+    id        ID       #IMPLIED
+    %listAttrs;>
+<!--
+        itemType and simpleType child are mutually exclusive,
+        one is required
+  -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+    id            ID       #IMPLIED
+    memberTypes   %QNames;            #IMPLIED
+    %unionAttrs;>
+<!--
+        At least one item in memberTypes or one simpleType
+        child is required
+  -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+        %facetAttr;
+        %fixedAttr;
+        %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+        %facetAttr;
+        %fixedAttr;
+        %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+        %facetAttr;
+        %fixedAttr;
+        %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+        %facetAttr;
+        %fixedAttr;
+        %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+        %facetAttr;
+        %fixedAttr;
+        %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+        %facetAttr;
+        %fixedAttr;
+        %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+        %facetAttr;
+        %fixedAttr;
+        %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+        %facetAttr;
+        %fixedAttr;
+        %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+        %facetAttr;
+        %fixedAttr;
+        %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+        %facetAttr;
+        %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+        %facetAttr;
+        %fixedAttr;
+        %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+        %facetAttr;
+        %patternAttrs;>
diff --git a/opensaml-core-api/target/classes/schema/xml.xsd b/opensaml-core-api/target/classes/schema/xml.xsd
new file mode 100644
index 000000000..425222ff5
--- /dev/null
+++ b/opensaml-core-api/target/classes/schema/xml.xsd
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/XML/1998/namespace" xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        <schema . . .>
+         . . .
+         <import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        <type . . .>
+         . . .
+         <attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change.
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+  <xs:annotation>
+   <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . .</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+  <xs:simpleType>
+   <xs:restriction base="xs:NCName">
+    <xs:enumeration value="default"/>
+    <xs:enumeration value="preserve"/>
+   </xs:restriction>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+  <xs:annotation>
+   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+  <xs:attribute ref="xml:base"/>
+  <xs:attribute ref="xml:lang"/>
+  <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/opensaml-core-api/target/classes/schema/xmltooling-config.xsd b/opensaml-core-api/target/classes/schema/xmltooling-config.xsd
new file mode 100644
index 000000000..6a7189d42
--- /dev/null
+++ b/opensaml-core-api/target/classes/schema/xmltooling-config.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xt="http://www.opensaml.org/xmltooling-config" targetNamespace="http://www.opensaml.org/xmltooling-config">
+
+    <element name="XMLTooling" type="xt:XMLToolingType"/>
+    <complexType name="XMLToolingType">
+        <sequence>
+            <element ref="xt:ObjectProviders" minOccurs="0"/>
+            <element ref="xt:IDAttributes" minOccurs="0"/>
+        </sequence>
+    </complexType>
+
+    <element name="ObjectProviders" type="xt:ObjectProvidersType"/>
+    <complexType name="ObjectProvidersType">
+        <sequence>
+            <element ref="xt:ObjectProvider" maxOccurs="unbounded"/>
+        </sequence>
+    </complexType>
+
+    <element name="ObjectProvider" type="xt:ObjectProviderType"/>
+    <complexType name="ObjectProviderType">
+        <sequence>
+            <element ref="xt:BuilderClass"/>
+            <element ref="xt:MarshallingClass"/>
+            <element ref="xt:UnmarshallingClass"/>
+            <any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+        </sequence>
+
+        <attribute name="qualifiedName" type="QName" use="required"/>
+        <anyAttribute namespace="##other" processContents="lax"/>
+    </complexType>
+
+    <element name="BuilderClass" type="xt:ClassType"/>
+    <element name="MarshallingClass" type="xt:ClassType"/>
+    <element name="UnmarshallingClass" type="xt:ClassType"/>
+    <complexType name="ClassType">
+        <sequence>
+            <any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+        </sequence>
+
+        <attribute name="className" type="string" use="required"/>
+        <anyAttribute namespace="##other" processContents="lax"/>
+    </complexType>
+
+    <element name="IDAttributes" type="xt:IDAttributesType"/>
+    <complexType name="IDAttributesType">
+        <sequence>
+            <element ref="xt:IDAttribute" maxOccurs="unbounded"/>
+        </sequence>
+    </complexType>
+    <element name="IDAttribute" type="QName"/>
+</schema>
diff --git a/opensaml-core-api/target/maven-archiver/pom.properties b/opensaml-core-api/target/maven-archiver/pom.properties
new file mode 100644
index 000000000..e6363558a
--- /dev/null
+++ b/opensaml-core-api/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=opensaml-core-api
+groupId=org.opensaml
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 000000000..268104118
--- /dev/null
+++ b/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,98 @@
+org/opensaml/core/xml/util/IDIndex.class
+org/opensaml/core/xml/schema/XSBase64Binary.class
+org/opensaml/core/xml/AbstractXMLObject.class
+org/opensaml/core/xml/schema/XSInteger.class
+org/opensaml/core/xml/config/XMLConfigurator.class
+org/opensaml/core/Version.class
+org/opensaml/core/xml/io/Unmarshaller.class
+org/opensaml/core/xml/ElementExtensibleXMLObject.class
+org/opensaml/core/xml/io/UnmarshallingException.class
+org/opensaml/core/xml/io/AbstractXMLObjectMarshaller.class
+org/opensaml/core/xml/Namespace.class
+org/opensaml/core/xml/io/Marshaller.class
+org/opensaml/core/xml/schema/package-info.class
+org/opensaml/core/xml/util/XMLObjectSupport$1.class
+org/opensaml/core/xml/BaseBearing.class
+org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSource.class
+org/opensaml/core/config/InitializationException.class
+org/opensaml/core/xml/XMLObjectBuilderFactory.class
+org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.class
+org/opensaml/core/metrics/MetricsSupport.class
+org/opensaml/core/xml/XMLRuntimeException.class
+org/opensaml/core/config/provider/MapBasedConfiguration.class
+org/opensaml/core/xml/persist/AbstractConditionalLoadXMLObjectLoadSaveManager.class
+org/opensaml/core/xml/persist/MapLoadSaveManager.class
+org/opensaml/core/metrics/package-info.class
+org/opensaml/core/xml/io/MarshallingException.class
+org/opensaml/core/criterion/SatisfyAnyCriterion.class
+org/opensaml/core/xml/io/AbstractXMLObjectUnmarshaller.class
+org/opensaml/core/xml/AbstractExtensibleXMLObject.class
+org/opensaml/core/xml/LangBearing.class
+org/opensaml/core/package-info.class
+org/opensaml/core/xml/AttributeExtensibleXMLObject.class
+org/opensaml/core/xml/config/XMLObjectProviderRegistrySupport.class
+org/opensaml/core/xml/AbstractElementExtensibleXMLObject.class
+org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterable.class
+org/opensaml/core/config/provider/SystemPropertyConfigurationPropertiesSource.class
+org/opensaml/core/xml/package-info.class
+org/opensaml/core/xml/io/UnmarshallerFactory.class
+org/opensaml/core/config/provider/PropertiesAdapter.class
+org/opensaml/core/xml/util/AttributeMap.class
+org/opensaml/core/xml/persist/FilesystemLoadSaveManager$FileIterator.class
+org/opensaml/core/xml/schema/XSDateTime.class
+org/opensaml/core/xml/XMLObject.class
+org/opensaml/core/xml/config/GlobalParserPoolInitializer.class
+org/opensaml/core/config/Initializer.class
+org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesHolder.class
+org/opensaml/core/xml/util/package-info.class
+org/opensaml/core/config/package-info.class
+org/opensaml/core/criterion/EntityIdCriterion.class
+org/opensaml/core/xml/util/ListView.class
+org/opensaml/core/metrics/LoggerDrivenMetricFilter$Level.class
+org/opensaml/core/config/ConfigurationService.class
+org/opensaml/core/xml/AbstractExtensibleXMLObjectUnmarshaller.class
+org/opensaml/core/config/provider/AbstractFilesystemConfigurationPropertiesSource.class
+org/opensaml/core/xml/AbstractElementExtensibleXMLObjectMarshaller.class
+org/opensaml/core/xml/schema/XSQName.class
+org/opensaml/core/config/provider/EmptyConfigurationProperties.class
+org/opensaml/core/xml/config/XMLObjectProviderInitializer.class
+org/opensaml/core/xml/schema/XSBoolean.class
+org/opensaml/core/xml/persist/ConditionalLoadXMLObjectLoadSaveManager.class
+org/opensaml/core/xml/NamespaceManager.class
+org/opensaml/core/xml/util/IndexedXMLObjectChildrenList.class
+org/opensaml/core/xml/AbstractExtensibleXMLObjectMarshaller.class
+org/opensaml/core/metrics/LoggerDrivenMetricFilter.class
+org/opensaml/core/xml/AbstractElementExtensibleXMLObjectUnmarshaller.class
+org/opensaml/core/xml/XMLObjectBuilder.class
+org/opensaml/core/config/provider/package-info.class
+org/opensaml/core/xml/util/XMLObjectChildrenList.class
+org/opensaml/core/xml/config/XMLObjectProviderRegistry.class
+org/opensaml/core/xml/IdBearing.class
+org/opensaml/core/xml/util/XMLAttributeSupport.class
+org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSource.class
+org/opensaml/core/xml/io/MarshallerFactory.class
+org/opensaml/core/xml/util/XMLObjectSupport.class
+org/opensaml/core/xml/persist/FilesystemLoadSaveManager.class
+org/opensaml/core/xml/schema/XSURI.class
+org/opensaml/core/xml/util/XMLObjectSupport$CloneOutputOption.class
+org/opensaml/core/xml/config/XMLConfigurationException.class
+org/opensaml/core/config/ConfigurationProperties.class
+org/opensaml/core/xml/AbstractXSAnyAdapter.class
+org/opensaml/core/config/ConfigurationPropertiesSource.class
+org/opensaml/core/criterion/package-info.class
+org/opensaml/core/config/InitializationService.class
+org/opensaml/core/xml/util/XMLObjectSource.class
+org/opensaml/core/xml/schema/XSString.class
+org/opensaml/core/xml/SpaceBearing$XMLSpaceEnum.class
+org/opensaml/core/xml/config/package-info.class
+org/opensaml/core/xml/persist/package-info.class
+org/opensaml/core/xml/XSAnyAdapter.class
+org/opensaml/core/xml/SpaceBearing.class
+org/opensaml/core/config/provider/SystemPropertyFilesystemConfigurationPropertiesSource.class
+org/opensaml/core/config/Configuration.class
+org/opensaml/core/xml/schema/XSAny.class
+org/opensaml/core/xml/config/AbstractXMLObjectProviderInitializer.class
+org/opensaml/core/xml/AbstractXMLObjectBuilder.class
+org/opensaml/core/metrics/LoggerDrivenMetricFilter$1.class
+org/opensaml/core/xml/io/package-info.class
+org/opensaml/core/xml/schema/XSBooleanValue.class
diff --git a/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 000000000..3b2ccbf45
--- /dev/null
+++ b/opensaml-core-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,90 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/XMLObjectSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSDateTime.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXSAnyAdapter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/Version.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/EmptyConfigurationProperties.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/XMLObjectProviderInitializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/AbstractXMLObjectMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/ConfigurationProperties.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/XSAnyAdapter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/XMLObjectProviderRegistrySupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/MapLoadSaveManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/InitializationException.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractExtensibleXMLObjectMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/IdBearing.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSURI.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/PropertiesAdapter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/AttributeMap.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/Unmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSAny.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXMLObjectBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/XMLObjectBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/IndexedXMLObjectChildrenList.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/InitializationService.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/SpaceBearing.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/Configuration.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/SystemPropertyFilesystemConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/XMLObjectSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/IDIndex.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/ElementExtensibleXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/BaseBearing.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/LangBearing.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/MarshallingException.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/AbstractFilesystemConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSBooleanValue.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/XMLObjectBuilderFactory.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/XMLRuntimeException.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/SystemPropertyConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesHolder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/AbstractXMLObjectProviderInitializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/MarshallerFactory.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSInteger.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/criterion/SatisfyAnyCriterion.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/criterion/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSBoolean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/ConditionalLoadXMLObjectLoadSaveManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/Marshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSQName.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/metrics/LoggerDrivenMetricFilter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/NamespaceManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/AbstractXMLObjectUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/ConfigurationService.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/criterion/EntityIdCriterion.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/MapBasedConfiguration.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractExtensibleXMLObjectUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/UnmarshallingException.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AttributeExtensibleXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/ConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/metrics/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSString.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/Initializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/XMLConfigurationException.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/io/UnmarshallerFactory.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/AbstractConditionalLoadXMLObjectLoadSaveManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/GlobalParserPoolInitializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/XMLObjectProviderRegistry.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/XMLAttributeSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractElementExtensibleXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/persist/FilesystemLoadSaveManager.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/Namespace.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractElementExtensibleXMLObjectMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/XMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/schema/XSBase64Binary.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/util/XMLObjectChildrenList.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractExtensibleXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/metrics/MetricsSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/main/java/org/opensaml/core/xml/config/XMLConfigurator.java
diff --git a/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 000000000..bf606508b
--- /dev/null
+++ b/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1,10 @@
+org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSourceTest.class
+org/opensaml/core/metrics/MetricsSupportTest$2.class
+org/opensaml/core/config/ConfigurationServiceTest$BasicTestConfig.class
+org/opensaml/core/metrics/MetricsSupportTest$1.class
+org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest.class
+org/opensaml/core/config/ConfigurationServiceTest$TestConfig.class
+org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSourceTest.class
+org/opensaml/core/config/ConfigurationServiceTest.class
+org/opensaml/core/metrics/MetricsSupportTest.class
+org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest$TestFilesystemConfigurationPropertiesSource.class
diff --git a/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 000000000..fb616c81a
--- /dev/null
+++ b/opensaml-core-api/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,5 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/java/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSourceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/java/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/java/org/opensaml/core/config/ConfigurationServiceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/java/org/opensaml/core/metrics/MetricsSupportTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/java/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSourceTest.java
diff --git a/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT-tests.jar b/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT-tests.jar
new file mode 100644
index 000000000..ad25ab683
Binary files /dev/null and b/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT-tests.jar differ
diff --git a/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar b/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar
new file mode 100644
index 000000000..f57b647ca
Binary files /dev/null and b/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar differ
diff --git a/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.html b/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.html
new file mode 100644
index 000000000..92ac41597
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.html	
@@ -0,0 +1,125 @@
+<html>
+<head>
+<title>TestNG:  Surefire test</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+
+<style type="text/css">
+.log { display: none;} 
+.stack-trace { display: none;} 
+</style>
+<script type="text/javascript">
+<!--
+function flip(e) {
+  current = e.style.display;
+  if (current == 'block') {
+    e.style.display = 'none';
+    return 0;
+  }
+  else {
+    e.style.display = 'block';
+    return 1;
+  }
+}
+
+function toggleBox(szDivId, elem, msg1, msg2)
+{
+  var res = -1;  if (document.getElementById) {
+    res = flip(document.getElementById(szDivId));
+  }
+  else if (document.all) {
+    // this is the way old msie versions work
+    res = flip(document.all[szDivId]);
+  }
+  if(elem) {
+    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
+  }
+
+}
+
+function toggleAllBoxes() {
+  if (document.getElementsByTagName) {
+    d = document.getElementsByTagName('div');
+    for (i = 0; i < d.length; i++) {
+      if (d[i].className == 'log') {
+        flip(d[i]);
+      }
+    }
+  }
+}
+
+// -->
+</script>
+
+</head>
+<body>
+<h2 align='center'>Surefire test</h2><table border='1' align="center">
+<tr>
+<td>Tests passed/Failed/Skipped:</td><td>9/0/0</td>
+</tr><tr>
+<td>Started on:</td><td>Fri Feb 09 16:00:57 EST 2024</td>
+</tr>
+<tr><td>Total time:</td><td>0 seconds (53 ms)</td>
+</tr><tr>
+<td>Included groups:</td><td></td>
+</tr><tr>
+<td>Excluded groups:</td><td></td>
+</tr>
+</table><p/>
+<small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table width='100%' border='1' class='invocation-passed'>
+<tr><td colspan='4' align='center'><b>PASSED TESTS</b></td></tr>
+<tr><td><b>Test method</b></td>
+<td><b>Attribute(s)</b></td>
+<td width="30%"><b>Exception</b></td>
+<td width="10%"><b>Time (seconds)</b></td>
+<td><b>Instance</b></td>
+</tr>
+<tr>
+<td title='org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest.testSource()'><b>testSource</b><br>Test class: org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a</td></tr>
+<tr>
+<td title='org.opensaml.core.config.ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsInterface()'><b>testBasicRegistrationAndRetrievalAsInterface</b><br>Test class: org.opensaml.core.config.ConfigurationServiceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a</td></tr>
+<tr>
+<td title='org.opensaml.core.metrics.MetricsSupportTest.testRemoveSameInstance()'><b>testRemoveSameInstance</b><br>Test class: org.opensaml.core.metrics.MetricsSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a</td></tr>
+<tr>
+<td title='org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest.testSource()'><b>testSource</b><br>Test class: org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813</td></tr>
+<tr>
+<td title='org.opensaml.core.metrics.MetricsSupportTest.testRegister()'><b>testRegister</b><br>Test class: org.opensaml.core.metrics.MetricsSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a</td></tr>
+<tr>
+<td title='org.opensaml.core.metrics.MetricsSupportTest.testRemoveDifferingInstance()'><b>testRemoveDifferingInstance</b><br>Test class: org.opensaml.core.metrics.MetricsSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a</td></tr>
+<tr>
+<td title='org.opensaml.core.metrics.MetricsSupportTest.testIsInstanceRegisteredUnderName()'><b>testIsInstanceRegisteredUnderName</b><br>Test class: org.opensaml.core.metrics.MetricsSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a</td></tr>
+<tr>
+<td title='org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest.testSource()'><b>testSource</b><br>Test class: org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b</td></tr>
+<tr>
+<td title='org.opensaml.core.config.ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsClass()'><b>testBasicRegistrationAndRetrievalAsClass</b><br>Test class: org.opensaml.core.config.ConfigurationServiceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a</td></tr>
+</table><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.xml b/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.xml
new file mode 100644
index 000000000..fe7591315
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/Surefire suite/Surefire test.xml	
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
+<testsuite ignored="0" hostname="BrentPumansMini" failures="0" tests="9" name="Surefire test" time="0.053" errors="0" timestamp="2024-02-09T16:00:57 EST">
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testIsInstanceRegisteredUnderName" time="0.004"/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRegister" time="0.0"/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRemoveDifferingInstance" time="0.0"/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRemoveSameInstance" time="0.0"/>
+  <testcase classname="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest" name="testSource" time="0.001"/>
+  <testcase classname="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest" name="testSource" time="0.001"/>
+  <testcase classname="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest" name="testSource" time="0.0"/>
+  <testcase classname="org.opensaml.core.config.ConfigurationServiceTest" name="testBasicRegistrationAndRetrievalAsClass" time="0.002"/>
+  <testcase classname="org.opensaml.core.config.ConfigurationServiceTest" name="testBasicRegistrationAndRetrievalAsInterface" time="0.0"/>
+</testsuite> <!-- Surefire test -->
diff --git a/opensaml-core-api/target/surefire-reports/TEST-TestSuite.xml b/opensaml-core-api/target/surefire-reports/TEST-TestSuite.xml
new file mode 100644
index 000000000..26b4866f0
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/TEST-TestSuite.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="TestSuite" time="0.513" tests="9" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="java.specification.version" value="17"/>
+    <property name="sun.jnu.encoding" value="UTF-8"/>
+    <property name="java.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/classes:/Users/putmanb/Dev/Java/maven-repo/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/Users/putmanb/Dev/Java/maven-repo/com/google/guava/guava/33.0.0-jre/guava-33.0.0-jre.jar:/Users/putmanb/Dev/Java/maven-repo/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar:/Users/putma [...]
+    <property name="java.vm.vendor" value="Oracle Corporation"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="java.vendor.url" value="https://java.oracle.com/"/>
+    <property name="user.timezone" value="America/New_York"/>
+    <property name="os.name" value="Mac OS X"/>
+    <property name="java.vm.specification.version" value="17"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="user.country" value="US"/>
+    <property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/lib"/>
+    <property name="sun.java.command" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/surefire/surefirebooter-20240209160056991_3.jar /Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/surefire 2024-02-09T16-00-56_938-jvmRun1 surefire-20240209160056991_1tmp surefire_0-20240209160056991_2tmp"/>
+    <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="jdk.debug" value="release"/>
+    <property name="surefire.test.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/classes:/Users/putmanb/Dev/Java/maven-repo/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/Users/putmanb/Dev/Java/maven-repo/com/google/guava/guava/33.0.0-jre/guava-33.0.0-jre.jar:/Users/putmanb/Dev/Java/maven-repo/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar:/Us [...]
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="/Users/putmanb"/>
+    <property name="user.language" value="en"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.version.date" value="2023-07-18"/>
+    <property name="java.home" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home"/>
+    <property name="file.separator" value="/"/>
+    <property name="basedir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api"/>
+    <property name="java.vm.compressedOopsMode" value="Zero based"/>
+    <property name="line.separator" value="
"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="surefire.real.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/surefire/surefirebooter-20240209160056991_3.jar"/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.runtime.version" value="17.0.8+9-LTS-211"/>
+    <property name="user.name" value="putmanb"/>
+    <property name="path.separator" value=":"/>
+    <property name="os.version" value="11.7.6"/>
+    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
+    <property name="file.encoding" value="UTF-8"/>
+    <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
+    <property name="localRepository" value="/Users/putmanb/Dev/Java/maven-repo"/>
+    <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/>
+    <property name="java.io.tmpdir" value="/var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/"/>
+    <property name="java.version" value="17.0.8"/>
+    <property name="user.dir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api"/>
+    <property name="os.arch" value="x86_64"/>
+    <property name="no-check-m2" value="true"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="native.encoding" value="UTF-8"/>
+    <property name="java.library.path" value="/Users/putmanb/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
+    <property name="java.vm.info" value="mixed mode, sharing"/>
+    <property name="java.vendor" value="Oracle Corporation"/>
+    <property name="java.vm.version" value="17.0.8+9-LTS-211"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeBig"/>
+    <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.class.version" value="61.0"/>
+  </properties>
+  <testcase name="testIsInstanceRegisteredUnderName" classname="org.opensaml.core.metrics.MetricsSupportTest" time="0.004">
+    <system-out><![CDATA[16:00:57,199 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.13
+16:00:57,200 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - No custom configurators were discovered as a service.
+16:00:57,200 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:00:57,201 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:00:57,206 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
+16:00:57,206 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 5 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:00:57,216 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/test-classes/logback-test.xml]
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 12
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 16
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 21
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,299 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
+16:00:57,299 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
+16:00:57,318 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml.core.xml.persist level set to DEBUG
+16:00:57,318 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml level set to WARN
+16:00:57,319 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
+16:00:57,319 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - ROOT level set to WARN
+16:00:57,319 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor at 79b06cab - End of configuration.
+16:00:57,319 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator at 3eb7fc54 - Registering current configuration as safe fallback point
+16:00:57,320 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 107 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
+
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/resources/opensaml-config.properties
+/var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/opensaml-config.properties4683179433102693813
+]]></system-out>
+  </testcase>
+  <testcase name="testRegister" classname="org.opensaml.core.metrics.MetricsSupportTest" time="0.001"/>
+  <testcase name="testRemoveDifferingInstance" classname="org.opensaml.core.metrics.MetricsSupportTest" time="0.001"/>
+  <testcase name="testRemoveSameInstance" classname="org.opensaml.core.metrics.MetricsSupportTest" time="0.0"/>
+  <testcase name="testSource" classname="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest" time="0.001"/>
+  <testcase name="testSource" classname="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest" time="0.001"/>
+  <testcase name="testSource" classname="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest" time="0.001"/>
+  <testcase name="testBasicRegistrationAndRetrievalAsClass" classname="org.opensaml.core.config.ConfigurationServiceTest" time="0.002"/>
+  <testcase name="testBasicRegistrationAndRetrievalAsInterface" classname="org.opensaml.core.config.ConfigurationServiceTest" time="0.0"/>
+</testsuite>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/TestSuite-output.txt b/opensaml-core-api/target/surefire-reports/TestSuite-output.txt
new file mode 100644
index 000000000..e0a3c5697
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/TestSuite-output.txt
@@ -0,0 +1,28 @@
+16:00:57,199 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.13
+16:00:57,200 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - No custom configurators were discovered as a service.
+16:00:57,200 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:00:57,201 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:00:57,206 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
+16:00:57,206 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 5 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:00:57,213 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:00:57,216 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/test-classes/logback-test.xml]
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 12
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 16
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 21
+16:00:57,263 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:00:57,299 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
+16:00:57,299 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
+16:00:57,318 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml.core.xml.persist level set to DEBUG
+16:00:57,318 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml level set to WARN
+16:00:57,319 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
+16:00:57,319 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - ROOT level set to WARN
+16:00:57,319 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor at 79b06cab - End of configuration.
+16:00:57,319 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator at 3eb7fc54 - Registering current configuration as safe fallback point
+16:00:57,320 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 4690b489 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 107 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
+
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/src/test/resources/opensaml-config.properties
+/var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/opensaml-config.properties4683179433102693813
diff --git a/opensaml-core-api/target/surefire-reports/TestSuite.txt b/opensaml-core-api/target/surefire-reports/TestSuite.txt
new file mode 100644
index 000000000..c9d068ba1
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/TestSuite.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: TestSuite
+-------------------------------------------------------------------------------
+Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.513 s -- in TestSuite
diff --git a/opensaml-core-api/target/surefire-reports/bullet_point.png b/opensaml-core-api/target/surefire-reports/bullet_point.png
new file mode 100644
index 000000000..176e6d5b3
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/bullet_point.png differ
diff --git a/opensaml-core-api/target/surefire-reports/collapseall.gif b/opensaml-core-api/target/surefire-reports/collapseall.gif
new file mode 100644
index 000000000..a2d80a904
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/collapseall.gif differ
diff --git a/opensaml-core-api/target/surefire-reports/emailable-report.html b/opensaml-core-api/target/surefire-reports/emailable-report.html
new file mode 100644
index 000000000..5c2cde989
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/emailable-report.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="https://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<title>TestNG Report</title>
+<style type="text/css">table {margin-bottom:10px;border-collapse:collapse;empty-cells:show}th,td {border:1px solid #009;padding:.25em .5em}th {vertical-align:bottom}td {vertical-align:top}table a {font-weight:bold}.stripe td {background-color: #E6EBF9}.num {text-align:right}.passedodd td {background-color: #3F3}.passedeven td {background-color: #0A0}.skippedodd td {background-color: #DDD}.skippedeven td {background-color: #CCC}.failedodd td,.attn {background-color: #F33}.failedeven td,.s [...]
+</head>
+<body>
+<table>
+<tr><th>Test</th><th># Passed</th><th># Skipped</th><th># Retried</th><th># Failed</th><th>Time (ms)</th><th>Included Groups</th><th>Excluded Groups</th></tr>
+<tr><th colspan="8">Surefire suite</th></tr>
+<tr><td><a href="#t0">Surefire test</a></td><td class="num">9</td><td class="num">0</td><td class="num">0</td><td class="num">0</td><td class="num">53</td><td></td><td></td></tr>
+</table>
+<table id='summary'><thead><tr><th>Class</th><th>Method</th><th>Start</th><th>Time (ms)</th></tr></thead><tbody><tr><th colspan="4">Surefire suite</th></tr></tbody><tbody id="t0"><tr><th colspan="4">Surefire test — passed</th></tr><tr class="passedeven"><td rowspan="2">org.opensaml.core.config.ConfigurationServiceTest</td><td><a href="#m0">testBasicRegistrationAndRetrievalAsClass</a></td><td rowspan="1">1707512457529</td><td rowspan="1">2</td></tr><tr class="passedeven"><td><a href [...]
+</table>
+<h2>Surefire test</h2><h3 id="m0">org.opensaml.core.config.ConfigurationServiceTest#testBasicRegistrationAndRetrievalAsClass</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m1">org.opensaml.core.config.ConfigurationServiceTest#testBasicRegistrationAndRetrievalAsInterface</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m2">org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest#testSource</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m3">org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest#testSource</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m4">org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest#testSource</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m5">org.opensaml.core.metrics.MetricsSupportTest#testIsInstanceRegisteredUnderName</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m6">org.opensaml.core.metrics.MetricsSupportTest#testRegister</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m7">org.opensaml.core.metrics.MetricsSupportTest#testRemoveDifferingInstance</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m8">org.opensaml.core.metrics.MetricsSupportTest#testRemoveSameInstance</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+</body>
+</html>
diff --git a/opensaml-core-api/target/surefire-reports/failed.png b/opensaml-core-api/target/surefire-reports/failed.png
new file mode 100644
index 000000000..c117be59a
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/failed.png differ
diff --git a/opensaml-core-api/target/surefire-reports/index.html b/opensaml-core-api/target/surefire-reports/index.html
new file mode 100644
index 000000000..ff4bb95de
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/index.html
@@ -0,0 +1,485 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+  <meta charset='utf-8'>
+  <title>TestNG reports</title>
+
+    <link type="text/css" href="testng-reports1.css" rel="stylesheet" id="ultra" />
+    <link type="text/css" href="testng-reports.css" rel="stylesheet" id="retro" disabled="false"/>
+    <script type="text/javascript" src="jquery-3.6.0.min.js"></script>
+    <script type="text/javascript" src="testng-reports.js"></script>
+    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
+    <script type='text/javascript'>
+      google.load('visualization', '1', {packages:['table']});
+      google.setOnLoadCallback(drawTable);
+      var suiteTableInitFunctions = new Array();
+      var suiteTableData = new Array();
+    </script>
+    <!--
+      <script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.16.custom.min.js"></script>
+     -->
+  </head>
+
+  <body>    <div class="top-banner-root">
+      <span class="top-banner-title-font">Test results</span>
+      <button id="button" class="button">Switch Retro Theme</button> <!-- button -->
+      <br/>
+      <span class="top-banner-font-1">1 suite</span>
+    </div> <!-- top-banner-root -->
+    <div class="navigator-root">
+      <div class="navigator-suite-header">
+        <span>All suites</span>
+        <a href="#" title="Collapse/expand all the suites" class="collapse-all-link">
+          <img src="collapseall.gif" class="collapse-all-icon">
+          </img> <!-- collapse-all-icon -->
+        </a> <!-- collapse-all-link -->
+      </div> <!-- navigator-suite-header -->
+      <div class="suite">
+        <div class="rounded-window">
+          <div class="suite-header light-rounded-window-top">
+            <a href="#" panel-name="suite-Surefire_suite" class="navigator-link">
+              <span class="suite-name border-passed">Surefire suite</span>
+            </a> <!-- navigator-link -->
+          </div> <!-- suite-header light-rounded-window-top -->
+          <div class="navigator-suite-content">
+            <div class="suite-section-title">
+              <span>Info</span>
+            </div> <!-- suite-section-title -->
+            <div class="suite-section-content">
+              <ul>
+                <li>
+                  <a href="#" panel-name="test-xml-Surefire_suite" class="navigator-link ">
+                    <span>[unset file name]</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="testlist-Surefire_suite" class="navigator-link ">
+                    <span class="test-stats">1 test</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="group-Surefire_suite" class="navigator-link ">
+                    <span>0 groups</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="times-Surefire_suite" class="navigator-link ">
+                    <span>Times</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="reporter-Surefire_suite" class="navigator-link ">
+                    <span>Reporter output</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="ignored-methods-Surefire_suite" class="navigator-link ">
+                    <span>Ignored methods</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="chronological-Surefire_suite" class="navigator-link ">
+                    <span>Chronological view</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+              </ul>
+            </div> <!-- suite-section-content -->
+            <div class="result-section">
+              <div class="suite-section-title">
+                <span>Results</span>
+              </div> <!-- suite-section-title -->
+              <div class="suite-section-content">
+                <ul>
+                  <li>
+                    <span class="method-stats">9 methods,   9 passed</span>
+                  </li>
+                  <li>
+                    <span class="method-list-title passed">Passed methods</span>
+                    <span class="show-or-hide-methods passed">
+                      <a href="#" panel-name="suite-Surefire_suite" class="hide-methods passed suite-Surefire_suite"> (hide)</a> <!-- hide-methods passed suite-Surefire_suite -->
+                      <a href="#" panel-name="suite-Surefire_suite" class="show-methods passed suite-Surefire_suite"> (show)</a> <!-- show-methods passed suite-Surefire_suite -->
+                    </span>
+                    <div class="method-list-content passed suite-Surefire_suite">
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.config.ConfigurationServiceTest" class="method navigator-link" hash-for-method="testBasicRegistrationAndRetrievalAsClass">testBasicRegistrationAndRetrievalAsClass</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.config.ConfigurationServiceTest" class="method navigator-link" hash-for-method="testBasicRegistrationAndRetrievalAsInterface">testBasicRegistrationAndRetrievalAsInterface</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.metrics.MetricsSupportTest" class="method navigator-link" hash-for-method="testIsInstanceRegisteredUnderName">testIsInstanceRegisteredUnderName</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.metrics.MetricsSupportTest" class="method navigator-link" hash-for-method="testRegister">testRegister</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.metrics.MetricsSupportTest" class="method navigator-link" hash-for-method="testRemoveDifferingInstance">testRemoveDifferingInstance</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.metrics.MetricsSupportTest" class="method navigator-link" hash-for-method="testRemoveSameInstance">testRemoveSameInstance</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest" class="method navigator-link" hash-for-method="testSource">testSource</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest" class="method navigator-link" hash-for-method="testSource">testSource</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest" class="method navigator-link" hash-for-method="testSource">testSource</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                    </div> <!-- method-list-content passed suite-Surefire_suite -->
+                  </li>
+                </ul>
+              </div> <!-- suite-section-content -->
+            </div> <!-- result-section -->
+          </div> <!-- navigator-suite-content -->
+        </div> <!-- rounded-window -->
+      </div> <!-- suite -->
+    </div> <!-- navigator-root -->
+    <div class="wrapper">
+      <div class="main-panel-root">
+        <div panel-name="suite-Surefire_suite" class="panel Surefire_suite">
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSource">
+                  </a> <!-- testSource -->
+                  <span class="method-name">testSource</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.config.ConfigurationServiceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testBasicRegistrationAndRetrievalAsClass">
+                  </a> <!-- testBasicRegistrationAndRetrievalAsClass -->
+                  <span class="method-name">testBasicRegistrationAndRetrievalAsClass</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testBasicRegistrationAndRetrievalAsInterface">
+                  </a> <!-- testBasicRegistrationAndRetrievalAsInterface -->
+                  <span class="method-name">testBasicRegistrationAndRetrievalAsInterface</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.metrics.MetricsSupportTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testIsInstanceRegisteredUnderName">
+                  </a> <!-- testIsInstanceRegisteredUnderName -->
+                  <span class="method-name">testIsInstanceRegisteredUnderName</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testRegister">
+                  </a> <!-- testRegister -->
+                  <span class="method-name">testRegister</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testRemoveDifferingInstance">
+                  </a> <!-- testRemoveDifferingInstance -->
+                  <span class="method-name">testRemoveDifferingInstance</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testRemoveSameInstance">
+                  </a> <!-- testRemoveSameInstance -->
+                  <span class="method-name">testRemoveSameInstance</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSource">
+                  </a> <!-- testSource -->
+                  <span class="method-name">testSource</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSource">
+                  </a> <!-- testSource -->
+                  <span class="method-name">testSource</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+        </div> <!-- panel Surefire_suite -->
+        <div panel-name="test-xml-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Surefire suite" verbose="0">
+  <test thread-count="5" name="Surefire test" verbose="0">
+    <classes>
+      <class name="org.opensaml.core.metrics.MetricsSupportTest"/>
+      <class name="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest"/>
+      <class name="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest"/>
+      <class name="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest"/>
+      <class name="org.opensaml.core.config.ConfigurationServiceTest"/>
+    </classes>
+  </test> <!-- Surefire test -->
+</suite> <!-- Surefire suite -->
+            </pre>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="testlist-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Tests for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <ul>
+              <li>
+                <span class="test-name">Surefire test (5 classes)</span>
+              </li>
+            </ul>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="group-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Groups for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="times-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Times for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="times-div">
+              <script type="text/javascript">
+suiteTableInitFunctions.push('tableData_Surefire_suite');
+function tableData_Surefire_suite() {
+var data = new google.visualization.DataTable();
+data.addColumn('number', 'Number');
+data.addColumn('string', 'Method');
+data.addColumn('string', 'Class');
+data.addColumn('number', 'Time (ms)');
+data.addRows(9);
+data.setCell(0, 0, 0)
+data.setCell(0, 1, 'testIsInstanceRegisteredUnderName')
+data.setCell(0, 2, 'org.opensaml.core.metrics.MetricsSupportTest')
+data.setCell(0, 3, 4);
+data.setCell(1, 0, 1)
+data.setCell(1, 1, 'testBasicRegistrationAndRetrievalAsClass')
+data.setCell(1, 2, 'org.opensaml.core.config.ConfigurationServiceTest')
+data.setCell(1, 3, 2);
+data.setCell(2, 0, 2)
+data.setCell(2, 1, 'testSource')
+data.setCell(2, 2, 'org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest')
+data.setCell(2, 3, 1);
+data.setCell(3, 0, 3)
+data.setCell(3, 1, 'testSource')
+data.setCell(3, 2, 'org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest')
+data.setCell(3, 3, 1);
+data.setCell(4, 0, 4)
+data.setCell(4, 1, 'testSource')
+data.setCell(4, 2, 'org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest')
+data.setCell(4, 3, 0);
+data.setCell(5, 0, 5)
+data.setCell(5, 1, 'testBasicRegistrationAndRetrievalAsInterface')
+data.setCell(5, 2, 'org.opensaml.core.config.ConfigurationServiceTest')
+data.setCell(5, 3, 0);
+data.setCell(6, 0, 6)
+data.setCell(6, 1, 'testRemoveSameInstance')
+data.setCell(6, 2, 'org.opensaml.core.metrics.MetricsSupportTest')
+data.setCell(6, 3, 0);
+data.setCell(7, 0, 7)
+data.setCell(7, 1, 'testRegister')
+data.setCell(7, 2, 'org.opensaml.core.metrics.MetricsSupportTest')
+data.setCell(7, 3, 0);
+data.setCell(8, 0, 8)
+data.setCell(8, 1, 'testRemoveDifferingInstance')
+data.setCell(8, 2, 'org.opensaml.core.metrics.MetricsSupportTest')
+data.setCell(8, 3, 0);
+window.suiteTableData['Surefire_suite']= { tableData: data, tableDiv: 'times-div-Surefire_suite'}
+return data;
+}
+              </script>
+              <span class="suite-total-time">Total running time: 8 ms</span>
+              <div id="times-div-Surefire_suite">
+              </div> <!-- times-div-Surefire_suite -->
+            </div> <!-- times-div -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="reporter-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Reporter output for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="ignored-methods-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">0 ignored methods</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="chronological-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Methods in chronological order</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.metrics.MetricsSupportTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">setUpGauges</span>
+                <span class="method-start">0 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">12 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testIsInstanceRegisteredUnderName</span>
+                <span class="method-start">13 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testRegister</span>
+                <span class="method-start">19 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">19 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">20 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testRemoveDifferingInstance</span>
+                <span class="method-start">20 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">21 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testRemoveSameInstance</span>
+                <span class="method-start">21 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">23 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testSource</span>
+                <span class="method-start">23 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">24 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">25 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testSource</span>
+                <span class="method-start">34 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">36 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">36 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testSource</span>
+                <span class="method-start">37 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">38 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.config.ConfigurationServiceTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testBasicRegistrationAndRetrievalAsClass</span>
+                <span class="method-start">38 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testBasicRegistrationAndRetrievalAsInterface</span>
+                <span class="method-start">40 ms</span>
+              </div> <!-- test-method -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+      </div> <!-- main-panel-root -->
+    </div> <!-- wrapper -->
+  </body>
+<script type="text/javascript" src="testng-reports2.js"></script>
+</html>
diff --git a/opensaml-core-api/target/surefire-reports/jquery-3.6.0.min.js b/opensaml-core-api/target/surefire-reports/jquery-3.6.0.min.js
new file mode 100644
index 000000000..c4c6022f2
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/jquery-3.6.0.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l= [...]
diff --git a/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.ConfigurationServiceTest.xml b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.ConfigurationServiceTest.xml
new file mode 100644
index 000000000..a33d9d1c5
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.ConfigurationServiceTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.config.ConfigurationServiceTest" time="0.002" errors="0" timestamp="2024-02-09T16:00:57 EST" skipped="0">
+  <testcase classname="org.opensaml.core.config.ConfigurationServiceTest" name="testBasicRegistrationAndRetrievalAsInterface" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.config.ConfigurationServiceTest" name="testBasicRegistrationAndRetrievalAsClass" time="0.002"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.config.ConfigurationServiceTest -->
diff --git a/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest.xml b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest.xml
new file mode 100644
index 000000000..85b1dadec
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest" time="0.001" errors="0" timestamp="2024-02-09T16:00:57 EST" skipped="0">
+  <testcase classname="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest" name="testSource" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest -->
diff --git a/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest.xml b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest.xml
new file mode 100644
index 000000000..fd8ba6b2a
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest" time="0.010" errors="0" timestamp="2024-02-09T16:00:57 EST" skipped="0">
+  <testcase classname="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest" name="testSource" time="0.010"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest -->
diff --git a/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest.xml b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest.xml
new file mode 100644
index 000000000..d3751d90d
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest" time="0.002" errors="0" timestamp="2024-02-09T16:00:57 EST" skipped="0">
+  <testcase classname="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest" name="testSource" time="0.002"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest -->
diff --git a/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.metrics.MetricsSupportTest.xml b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.metrics.MetricsSupportTest.xml
new file mode 100644
index 000000000..318d7d8d3
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/junitreports/TEST-org.opensaml.core.metrics.MetricsSupportTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.metrics.MetricsSupportTest" time="0.005" errors="0" timestamp="2024-02-09T16:00:57 EST" skipped="0">
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRemoveSameInstance" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRegister" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testRemoveDifferingInstance" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.metrics.MetricsSupportTest" name="testIsInstanceRegisteredUnderName" time="0.004"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.metrics.MetricsSupportTest -->
diff --git a/opensaml-core-api/target/surefire-reports/navigator-bullet.png b/opensaml-core-api/target/surefire-reports/navigator-bullet.png
new file mode 100644
index 000000000..36d90d395
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/navigator-bullet.png differ
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/Surefire test.properties b/opensaml-core-api/target/surefire-reports/old/Surefire suite/Surefire test.properties
new file mode 100644
index 000000000..d7c8865f0
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/Surefire test.properties	
@@ -0,0 +1 @@
+[SuiteResult context=Surefire test]
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/classes.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/classes.html
new file mode 100644
index 000000000..26e498d36
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/classes.html	
@@ -0,0 +1,164 @@
+<table border='1'>
+<tr>
+<th>Class name</th>
+<th>Method name</th>
+<th>Groups</th>
+</tr><tr>
+<td>org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testSource</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testSource</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.config.ConfigurationServiceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testBasicRegistrationAndRetrievalAsClass</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testBasicRegistrationAndRetrievalAsInterface</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.metrics.MetricsSupportTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testIsInstanceRegisteredUnderName</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testRemoveDifferingInstance</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testRegister</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testRemoveSameInstance</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUpGauges</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testSource</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+</table>
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/groups.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/groups.html
new file mode 100644
index 000000000..199cb3f11
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/groups.html	
@@ -0,0 +1 @@
+<h2>Groups used for this test run</h2>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/index.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/index.html
new file mode 100644
index 000000000..9f73abdbe
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/index.html	
@@ -0,0 +1,6 @@
+<html><head><title>Results for Surefire suite</title></head>
+<frameset cols="26%,74%">
+<frame src="toc.html" name="navFrame">
+<frame src="main.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/main.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/main.html
new file mode 100644
index 000000000..fddc3cab2
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/main.html	
@@ -0,0 +1,2 @@
+<html><head><title>Results for Surefire suite</title></head>
+<body>Select a result on the left-hand pane.</body></html>
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-alphabetical.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-alphabetical.html
new file mode 100644
index 000000000..18e5d2cd7
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-alphabetical.html	
@@ -0,0 +1,44 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ThreadLocalConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>3</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ClasspathConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-18</td> <td> </td><td> </td><td title=">>MetricsSupportTest.setUpGauges()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUpGauges</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>1</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ThreadLocalConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>15</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ClasspathConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>13</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="9e91ee">  <td>24/02/09 16:00:57</td>   <td>15</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsClass()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]">testBasicRegistrationAndRetrievalAsClass</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="9e91ee">  <td>24/02/09 16:00:57</td>   <td>17</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsInterface()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]">testBasicRegistrationAndRetrievalAsInterface</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-10</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testIsInstanceRegisteredUnderName()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testIsInstanceRegisteredUnderName</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRegister()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRegister</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-3</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRemoveDifferingInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRemoveDifferingInstance</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRemoveSameInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRemoveSameInstance</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ClasspathConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ThreadLocalConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>11</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-not-run.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-not-run.html
new file mode 100644
index 000000000..54b14cb85
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods-not-run.html	
@@ -0,0 +1,2 @@
+<h2>Methods that were not run</h2><table>
+</table>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods.html
new file mode 100644
index 000000000..e1b780940
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/methods.html	
@@ -0,0 +1,44 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ThreadLocalConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>1</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ThreadLocalConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>3</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>15</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ClasspathConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ClasspathConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="9e91ee">  <td>24/02/09 16:00:57</td>   <td>17</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsInterface()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]">testBasicRegistrationAndRetrievalAsInterface</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="da9e97">  <td>24/02/09 16:00:57</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ThreadLocalConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>13</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemConfigurationPropertiesSourceTest.tearDown()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]"><<tearDown</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRegister()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRegister</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="9e91ee">  <td>24/02/09 16:00:57</td>   <td>15</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationServiceTest.testBasicRegistrationAndRetrievalAsClass()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]">testBasicRegistrationAndRetrievalAsClass</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="79866c">  <td>24/02/09 16:00:57</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ClasspathConfigurationPropertiesSourceTest.setUp()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MetricsSupportTest.setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUp</td> 
+<td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRemoveSameInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRemoveSameInstance</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-18</td> <td> </td><td> </td><td title=">>MetricsSupportTest.setUpGauges()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">>>setUpGauges</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-3</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testRemoveDifferingInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testRemoveDifferingInstance</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="f46c85">  <td>24/02/09 16:00:57</td>   <td>-10</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MetricsSupportTest.testIsInstanceRegisteredUnderName()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]">testIsInstanceRegisteredUnderName</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+<tr bgcolor="bcb08c">  <td>24/02/09 16:00:57</td>   <td>11</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemConfigurationPropertiesSourceTest.testSource()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]">testSource</td> 
+  <td>main at 1813666644</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/reporter-output.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/reporter-output.html
new file mode 100644
index 000000000..063bc2e96
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/reporter-output.html	
@@ -0,0 +1 @@
+<h2>Reporter output</h2><table></table>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/testng.xml.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/testng.xml.html
new file mode 100644
index 000000000..2b502cc2e
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/testng.xml.html	
@@ -0,0 +1 @@
+<html><head><title>testng.xml for Surefire suite</title></head><body><tt><?xml version="1.0" encoding="UTF-8"?><br/><!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"><br/><suite name="Surefire suite" verbose="0"><br/>  <test thread-count="5" name="Surefire test" verbose="0"><br/>    <classes><br/>      <class name="org.open [...]
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/Surefire suite/toc.html b/opensaml-core-api/target/surefire-reports/old/Surefire suite/toc.html
new file mode 100644
index 000000000..87a501026
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/Surefire suite/toc.html	
@@ -0,0 +1,30 @@
+<html>
+<head>
+<title>Results for Surefire suite</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<h3><p align="center">Results for<br/><em>Surefire suite</em></p></h3>
+<table border='1' width='100%'>
+<tr valign='top'>
+<td>1 test</td>
+<td><a target='mainFrame' href='classes.html'>5 classes</a></td>
+<td>9 methods:<br/>
+  <a target='mainFrame' href='methods.html'>chronological</a><br/>
+  <a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
+  <a target='mainFrame' href='methods-not-run.html'>not run (0)</a></td>
+</tr>
+<tr>
+<td><a target='mainFrame' href='groups.html'>0 group</a></td>
+<td><a target='mainFrame' href='reporter-output.html'>reporter output</a></td>
+<td><a target='mainFrame' href='testng.xml.html'>testng.xml</a></td>
+</tr></table>
+<table width='100%' class='test-passed'>
+<tr><td>
+<table style='width: 100%'><tr><td valign='top'>Surefire test (9/0/0)</td><td valign='top' align='right'>
+  <a href='Surefire test.html' target='mainFrame'>Results</a>
+</td></tr></table>
+</td></tr><p/>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/old/index.html b/opensaml-core-api/target/surefire-reports/old/index.html
new file mode 100644
index 000000000..ff70f484a
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/old/index.html
@@ -0,0 +1,9 @@
+<html>
+<head><title></title><link href="./testng.css" rel="stylesheet" type="text/css" />
+<link href="./my-testng.css" rel="stylesheet" type="text/css" />
+</head><body>
+<h2><p align='center'>Test results</p></h2>
+<table border='1' width='100%' class='main-page'><tr><th>Suite</th><th>Passed</th><th>Failed</th><th>Skipped</th><th>testng.xml</th></tr>
+<tr align='center' class='invocation-passed'><td><em>Total</em></td><td><em>9</em></td><td><em>0</em></td><td><em>0</em></td><td> </td></tr>
+<tr align='center' class='invocation-passed'><td><a href='Surefire suite/index.html'>Surefire suite</a></td>
+<td>9</td><td>0</td><td>0</td><td><a href='Surefire suite/testng.xml.html'>Link</a></td></tr></table></body></html>
diff --git a/opensaml-core-api/target/surefire-reports/passed.png b/opensaml-core-api/target/surefire-reports/passed.png
new file mode 100644
index 000000000..45e85bbfd
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/passed.png differ
diff --git a/opensaml-core-api/target/surefire-reports/skipped.png b/opensaml-core-api/target/surefire-reports/skipped.png
new file mode 100644
index 000000000..c36a32439
Binary files /dev/null and b/opensaml-core-api/target/surefire-reports/skipped.png differ
diff --git a/opensaml-core-api/target/surefire-reports/testng-reports.css b/opensaml-core-api/target/surefire-reports/testng-reports.css
new file mode 100644
index 000000000..d7b75c404
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng-reports.css
@@ -0,0 +1,326 @@
+body {
+    margin: 0 0 5px 5px;
+}
+
+ul {
+    margin: 0;
+}
+
+li {
+    list-style-type: none;
+}
+
+a {
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+.navigator-selected {
+    background: #ffa500;
+}
+
+.wrapper {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 400px;
+    right: 0;
+    overflow: auto;
+}
+
+.navigator-root {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 0;
+    width: 400px;
+    overflow-y: auto;
+}
+
+.suite {
+    margin: 0 10px 10px 0;
+    background-color: #fff8dc;
+}
+
+.suite-name {
+    padding-left: 10px;
+    font-size: 25px;
+    font-family: Times, sans-serif;
+}
+
+.main-panel-header {
+    padding: 5px;
+    background-color: #9FB4D9; /*afeeee*/;
+    font-family: monospace;
+    font-size: 18px;
+}
+
+.main-panel-content {
+    padding: 5px;
+    margin-bottom: 10px;
+    background-color: #DEE8FC; /*d0ffff*/;
+}
+
+.rounded-window {
+    border-radius: 10px;
+    border-style: solid;
+    border-width: 1px;
+}
+
+.rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 1px;
+    overflow: auto;
+}
+
+.light-rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+}
+
+.rounded-window-bottom {
+    border-style: solid;
+    border-width: 0 1px 1px 1px;
+    border-bottom-right-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    overflow: auto;
+}
+
+.method-name {
+    font-size: 12px;
+    font-family: monospace;
+}
+
+.method-content {
+    border-style: solid;
+    border-width: 0 0 1px 0;
+    margin-bottom: 10px;
+    padding-bottom: 5px;
+    width: 80%;
+}
+
+.parameters {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.stack-trace {
+    white-space: pre;
+    font-family: monospace;
+    font-size: 12px;
+    font-weight: bold;
+    margin-top: 0;
+    margin-left: 20px;
+}
+
+.testng-xml {
+    font-family: monospace;
+}
+
+.method-list-content {
+    margin-left: 10px;
+}
+
+.navigator-suite-content {
+    margin-left: 10px;
+    font: 12px 'Lucida Grande';
+}
+
+.suite-section-title {
+    margin-top: 10px;
+    width: 80%;
+    border-style: solid;
+    border-width: 1px 0 0 0;
+    font-family: Times, sans-serif;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.suite-section-content {
+    list-style-image: url(bullet_point.png);
+}
+
+.top-banner-root {
+    position: absolute;
+    top: 0;
+    height: 45px;
+    left: 0;
+    right: 0;
+    padding: 5px;
+    margin: 0 0 5px 0;
+    background-color: #0066ff;
+    font-family: Times, sans-serif;
+    color: #fff;
+    text-align: center;
+}
+.button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#0066ff;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#0066ff ;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline:none;
+
+}
+
+.top-banner-title-font {
+    font-size: 25px;
+}
+
+.test-name {
+    font-family: 'Lucida Grande', sans-serif;
+    font-size: 16px;
+}
+
+.suite-icon {
+    padding: 5px;
+    float: right;
+    height: 20px;
+}
+
+.test-group {
+    font: 20px 'Lucida Grande';
+    margin: 5px 5px 10px 5px;
+    border-width: 0 0 1px 0;
+    border-style: solid;
+    padding: 5px;
+}
+
+.test-group-name {
+    font-weight: bold;
+}
+
+.method-in-group {
+    font-size: 16px;
+    margin-left: 80px;
+}
+
+table.google-visualization-table-table {
+    width: 100%;
+}
+
+.reporter-method-name {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.reporter-method-output-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.ignored-class-div {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.ignored-methods-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.border-failed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #f00;
+}
+
+.border-skipped {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #edc600;
+}
+
+.border-passed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #19f52d;
+}
+
+.times-div {
+    text-align: center;
+    padding: 5px;
+}
+
+.suite-total-time {
+    font: 16px 'Lucida Grande';
+}
+
+.configuration-suite {
+    margin-left: 20px;
+}
+
+.configuration-test {
+    margin-left: 40px;
+}
+
+.configuration-class {
+    margin-left: 60px;
+}
+
+.configuration-method {
+    margin-left: 80px;
+}
+
+.test-method {
+    margin-left: 100px;
+}
+
+.chronological-class {
+    background-color: skyblue;
+    border-style: solid;
+    border-width: 0 0 1px 1px;
+}
+
+.method-start {
+    float: right;
+}
+
+.chronological-class-name {
+    padding: 0 0 0 5px;
+    color: #008;
+}
+
+.after, .before, .test-method {
+    font-family: monospace;
+    font-size: 14px;
+}
+
+.navigator-suite-header {
+    font-size: 22px;
+    margin: 0 10px 5px 0;
+    background-color: #deb887;
+    text-align: center;
+}
+
+.collapse-all-icon {
+    padding: 5px;
+    float: right;
+}
+/*retro Theme*/
diff --git a/opensaml-core-api/target/surefire-reports/testng-reports.js b/opensaml-core-api/target/surefire-reports/testng-reports.js
new file mode 100644
index 000000000..c1a84a35d
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng-reports.js
@@ -0,0 +1,122 @@
+$(document).ready(function() {
+    $('a.navigator-link').on("click", function() {
+        // Extract the panel for this link
+        var panel = getPanelName($(this));
+
+        // Mark this link as currently selected
+        $('.navigator-link').parent().removeClass('navigator-selected');
+        $(this).parent().addClass('navigator-selected');
+
+        showPanel(panel);
+    });
+
+    installMethodHandlers('failed');
+    installMethodHandlers('skipped');
+    installMethodHandlers('passed', true); // hide passed methods by default
+
+    $('a.method').on("click", function() {
+        showMethod($(this));
+        return false;
+    });
+
+    // Hide all the panels and display the first one (do this last
+    // to make sure the click() will invoke the listeners)
+    $('.panel').hide();
+    $('.navigator-link').first().trigger("click");
+
+    // Collapse/expand the suites
+    $('a.collapse-all-link').on("click", function() {
+        var contents = $('.navigator-suite-content');
+        if (contents.css('display') == 'none') {
+            contents.show();
+        } else {
+            contents.hide();
+        }
+    });
+});
+
+// The handlers that take care of showing/hiding the methods
+function installMethodHandlers(name, hide) {
+    function getContent(t) {
+    return $('.method-list-content.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getHideLink(t, name) {
+        var s = 'a.hide-methods.' + name + "." + t.attr('panel-name');
+        return $(s);
+    }
+
+    function getShowLink(t, name) {
+        return $('a.show-methods.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getMethodPanelClassSel(element, name) {
+        var panelName = getPanelName(element);
+    var sel = '.' + panelName + "-class-" + name;
+        return $(sel);
+    }
+
+    $('a.hide-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.hide();
+        getHideLink($(this), name).hide();
+        getShowLink($(this), name).show();
+    getMethodPanelClassSel($(this), name).hide();
+    });
+
+    $('a.show-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.show();
+        getHideLink($(this), name).show();
+        getShowLink($(this), name).hide();
+    showPanel(getPanelName($(this)));
+    getMethodPanelClassSel($(this), name).show();
+    });
+
+    if (hide) {
+        $('a.hide-methods.' + name).trigger("click");
+    } else {
+        $('a.show-methods.' + name).trigger("click");
+    }
+}
+
+function getHashForMethod(element) {
+    return element.attr('hash-for-method');
+}
+
+function getPanelName(element) {
+    return element.attr('panel-name');
+}
+
+function showPanel(panelName) {
+    $('.panel').hide();
+    var panel = $('.panel[panel-name="' + panelName + '"]');
+    panel.show();
+}
+
+function showMethod(element) {
+    var hashTag = getHashForMethod(element);
+    var panelName = getPanelName(element);
+    showPanel(panelName);
+    var current = document.location.href;
+    var base = current.substring(0, current.indexOf('#'))
+    document.location.href = base + '#' + hashTag;
+    var newPosition = $(document).scrollTop() - 65;
+    $(document).scrollTop(newPosition);
+}
+
+function drawTable() {
+    for (var i = 0; i < suiteTableInitFunctions.length; i++) {
+        window[suiteTableInitFunctions[i]]();
+    }
+
+    for (var k in window.suiteTableData) {
+        var v = window.suiteTableData[k];
+        var div = v.tableDiv;
+        var data = v.tableData
+        var table = new google.visualization.Table(document.getElementById(div));
+        table.draw(data, {
+            showRowNumber : false
+        });
+    }
+}
diff --git a/opensaml-core-api/target/surefire-reports/testng-reports1.css b/opensaml-core-api/target/surefire-reports/testng-reports1.css
new file mode 100644
index 000000000..570323ffb
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng-reports1.css
@@ -0,0 +1,344 @@
+body {
+    background-color: whitesmoke;
+    margin: 0 0 5px 5px;
+}
+ul {
+     margin-top: 10px;
+     margin-left:-10px;
+}
+ li {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding:5px 5px;
+ }
+ a {
+     text-decoration: none;
+     color: black;
+     font-size: 14px;
+ }
+
+ a:hover {
+    color:black ;
+    text-decoration: underline;
+ }
+
+ .navigator-selected {
+     /* #ffa500; Mouse hover color after click Orange.*/
+     background:#027368
+ }
+
+ .wrapper {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 400px;
+     right: 0;
+     margin-right:9px;
+     overflow: auto;/*imortant*/
+ }
+
+ .navigator-root {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 0;
+     width: 400px;
+     overflow-y: auto;/*important*/
+ }
+
+ .suite {
+     margin: -5px 10px 10px 5px;
+     background-color: whitesmoke ;/*Colour of the left bside box*/
+ }
+
+ .suite-name {
+     font-size: 24px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/
+     color: white;
+ }
+
+ .main-panel-header {
+     padding: 5px;
+     background-color: #027368; /*afeeee*/;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color:white;
+     font-size: 18px;
+ }
+
+ .main-panel-content {
+     padding: 5px;
+     margin-bottom: 10px;
+     background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/
+ }
+
+ .rounded-window {
+     border-style: dotted;
+     border-width: 1px;/*Border of left Side box*/
+     background-color: whitesmoke;
+     border-radius: 10px;
+ }
+
+ .rounded-window-top {
+     border-top-right-radius: 10px 10px;
+     border-top-left-radius: 10px 10px;
+     border-style: solid;
+     border-width: 1px;
+     overflow: auto;/*Top of RightSide box*/
+ }
+
+ .light-rounded-window-top {
+     background-color: #027368;
+     padding-left:120px;
+     border-radius: 10px;
+
+ }
+
+ .rounded-window-bottom {
+     border-bottom-right-radius: 10px 10px;
+     border-bottom-left-radius: 10px 10px;
+     overflow: auto;/*Bottom of rightSide box*/
+ }
+
+ .method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-weight: bold;
+ }
+
+ .method-content {
+     border-style: solid;
+     border-width: 0 0 1px 0;
+     margin-bottom: 10px;
+     padding-bottom: 5px;
+     width: 100%;
+ }
+
+ .parameters {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .stack-trace {
+     white-space: pre;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 12px;
+     font-weight: bold;
+     margin-top: 0;
+     margin-left: 20px; /*Error Stack Trace Message*/
+ }
+
+ .testng-xml {
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .method-list-content {
+     margin-left: 10px;
+ }
+
+ .navigator-suite-content {
+     margin-left: 10px;
+     font: 12px 'Lucida Grande';
+ }
+
+ .suite-section-title {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     font-weight:bold;
+     background-color: #8C8887;
+     margin-left: -10px;
+     margin-top:10px;
+     padding:6px;
+ }
+
+ .suite-section-content {
+     list-style-image: url(bullet_point.png);
+     background-color: whitesmoke;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     overflow: hidden;
+ }
+
+ .top-banner-root {
+     position: absolute;
+     top: 0;
+     height: 45px;
+     left: 0;
+     right: 0;
+     padding: 5px;
+     margin: 0 0 5px 0;
+     background-color: #027368;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 18px;
+     color: #fff;
+     text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/
+ }
+
+ .top-banner-title-font {
+     font-size: 25px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding: 3px;
+     float: right;
+ }
+
+ .test-name {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 16px;
+ }
+
+ .suite-icon {
+     padding: 5px;
+     float: right;
+     height: 20px;
+ }
+
+ .test-group {
+     font: 20px 'Lucida Grande';
+     margin: 5px 5px 10px 5px;
+     border-width: 0 0 1px 0;
+     border-style: solid;
+     padding: 5px;
+ }
+
+ .test-group-name {
+     font-weight: bold;
+ }
+
+ .method-in-group {
+     font-size: 16px;
+     margin-left: 80px;
+ }
+
+ table.google-visualization-table-table {
+     width: 100%;
+ }
+
+ .reporter-method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .reporter-method-output-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .ignored-class-div {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .ignored-methods-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .border-failed {
+    border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F20505;
+ }
+
+ .border-skipped {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F2BE22;
+ }
+
+ .border-passed {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #038C73;
+ }
+
+ .times-div {
+     text-align: center;
+     padding: 5px;
+ }
+
+ .suite-total-time {
+     font: 16px 'Lucida Grande';
+ }
+
+ .configuration-suite {
+     margin-left: 20px;
+ }
+
+ .configuration-test {
+     margin-left: 40px;
+ }
+
+ .configuration-class {
+     margin-left: 60px;
+ }
+
+ .configuration-method {
+     margin-left: 80px;
+ }
+
+ .test-method {
+     margin-left: 100px;
+ }
+
+ .chronological-class {
+     background-color: #CCD0D1;
+     border-width: 0 0 1px 1px;/*Chronological*/
+ }
+
+ .method-start {
+     float: right;
+ }
+
+ .chronological-class-name {
+     padding: 0 0 0 5px;
+     margin-top:5px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color: #008;
+ }
+
+ .after, .before, .test-method {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     margin-top:5px;
+ }
+
+ .navigator-suite-header {
+     font-size: 18px;
+     margin: 0px 10px 10px 5px;
+     padding: 5px;
+     border-radius: 10px;
+     background-color: #027368;
+     color: white;
+     font-weight:bold;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     text-align: center; /*All Suites on top of left box*//*Status: -Completed*/
+ }
+
+ .collapse-all-icon {
+     padding: 3px;
+     float: right;
+ }
+ .button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#027368;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#027368;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline: none;
+}
+/*Author: - Akhil Gullapalli*/
\ No newline at end of file
diff --git a/opensaml-core-api/target/surefire-reports/testng-reports2.js b/opensaml-core-api/target/surefire-reports/testng-reports2.js
new file mode 100644
index 000000000..5342859fa
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng-reports2.js
@@ -0,0 +1,76 @@
+window.onload = function () {
+  let cookies = document.cookie;
+  let cookieValue = cookies.split('=');
+  if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') {
+    document.getElementById('retro').setAttribute('disabled', 'false');
+  } else if (cookieValue[1] === 'Switch Ultra Theme' ||
+      localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('retro').setAttribute('disabled', 'false');
+
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    if (cookieValue[1] === 'Switch Ultra Theme' ||
+        localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('retro').setAttribute('disabled', 'false');
+
+      document.getElementById('button').innerText = "Switch Ultra Theme";
+      document.getElementById('retro').removeAttribute('disabled');
+      document.getElementById('ultra').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+
+    } else if (select === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('ultra').removeAttribute('disabled');
+      document.getElementById('retro').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+    }
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+  }
+}
+document.getElementById('button').onclick = function () {
+  let select = document.getElementById('button').innerText;
+  if (select === 'Switch Retro Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('retro').removeAttribute('disabled');
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+
+  } else if (select === 'Switch Ultra Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('ultra').removeAttribute('disabled');
+    document.getElementById('retro').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+  }
+}
+//Function to mouse hovering affect.
+document.getElementById('button').onmouseover = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "180px";
+  document.getElementById('button').style.height = "45px";
+  document.getElementById('button').style.marginTop = "1px";
+
+}
+//Function to mouse out affect
+document.getElementById('button').onmouseout = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "150px";
+  document.getElementById('button').style.height = "30px";
+  document.getElementById('button').style.marginTop = "8px";
+
+}
+
+//This is the file where we handle the switching of the Themes.
+/*Author:- Akhil Gullapalli*/
diff --git a/opensaml-core-api/target/surefire-reports/testng-results.xml b/opensaml-core-api/target/surefire-reports/testng-results.xml
new file mode 100644
index 000000000..60baab55c
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng-results.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testng-results ignored="0" total="9" passed="9" failed="0" skipped="0">
+  <reporter-output>
+  </reporter-output>
+  <suite started-at="2024-02-09T16:00:57 EST" name="Surefire suite" finished-at="2024-02-09T16:00:57 EST" duration-ms="53">
+    <groups>
+    </groups>
+    <test started-at="2024-02-09T16:00:57 EST" name="Surefire test" finished-at="2024-02-09T16:00:57 EST" duration-ms="53">
+      <class name="org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest">
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testSource()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]" started-at="2024-02-09T16:00:57 EST" name="testSource" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSource -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest at 21e360a]" started-at="2024-02-09T16:00:57 EST" name="tearDown" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.config.provider.ClasspathConfigurationPropertiesSourceTest -->
+      <class name="org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest">
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="9" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testSource()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]" started-at="2024-02-09T16:00:57 EST" name="testSource" finished-at="2024-02-09T16:00:57 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSource -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest at 7bd4937b]" started-at="2024-02-09T16:00:57 EST" name="tearDown" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.config.provider.FilesystemConfigurationPropertiesSourceTest -->
+      <class name="org.opensaml.core.config.ConfigurationServiceTest">
+        <test-method signature="testBasicRegistrationAndRetrievalAsClass()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]" started-at="2024-02-09T16:00:57 EST" name="testBasicRegistrationAndRetrievalAsClass" finished-at="2024-02-09T16:00:57 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testBasicRegistrationAndRetrievalAsClass -->
+        <test-method signature="testBasicRegistrationAndRetrievalAsInterface()[pri:0, instance:org.opensaml.core.config.ConfigurationServiceTest at 5ba3f27a]" started-at="2024-02-09T16:00:57 EST" name="testBasicRegistrationAndRetrievalAsInterface" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testBasicRegistrationAndRetrievalAsInterface -->
+      </class> <!-- org.opensaml.core.config.ConfigurationServiceTest -->
+      <class name="org.opensaml.core.metrics.MetricsSupportTest">
+        <test-method is-config="true" signature="setUpGauges()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="setUpGauges" finished-at="2024-02-09T16:00:57 EST" duration-ms="6" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUpGauges -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testIsInstanceRegisteredUnderName()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="testIsInstanceRegisteredUnderName" finished-at="2024-02-09T16:00:57 EST" duration-ms="4" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testIsInstanceRegisteredUnderName -->
+        <test-method signature="testRegister()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="testRegister" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testRegister -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testRemoveDifferingInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="testRemoveDifferingInstance" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testRemoveDifferingInstance -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testRemoveSameInstance()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="testRemoveSameInstance" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testRemoveSameInstance -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.metrics.MetricsSupportTest at 1af2d44a]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.metrics.MetricsSupportTest -->
+      <class name="org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest">
+        <test-method signature="testSource()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]" started-at="2024-02-09T16:00:57 EST" name="testSource" finished-at="2024-02-09T16:00:57 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSource -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]" started-at="2024-02-09T16:00:57 EST" name="setUp" finished-at="2024-02-09T16:00:57 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest at 7c24b813]" started-at="2024-02-09T16:00:57 EST" name="tearDown" finished-at="2024-02-09T16:00:57 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSourceTest -->
+    </test> <!-- Surefire test -->
+  </suite> <!-- Surefire suite -->
+</testng-results>
diff --git a/opensaml-core-api/target/surefire-reports/testng.css b/opensaml-core-api/target/surefire-reports/testng.css
new file mode 100644
index 000000000..5124ba863
--- /dev/null
+++ b/opensaml-core-api/target/surefire-reports/testng.css
@@ -0,0 +1,9 @@
+.invocation-failed,  .test-failed  { background-color: #DD0000; }
+.invocation-percent, .test-percent { background-color: #006600; }
+.invocation-passed,  .test-passed  { background-color: #00AA00; }
+.invocation-skipped, .test-skipped { background-color: #CCCC00; }
+
+.main-page {
+  font-size: x-large;
+}
+
diff --git a/opensaml-core-api/target/test-classes/logback-test.xml b/opensaml-core-api/target/test-classes/logback-test.xml
new file mode 100644
index 000000000..e31c2f38e
--- /dev/null
+++ b/opensaml-core-api/target/test-classes/logback-test.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%-5level %logger{0} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <logger name="org.opensaml.core.xml.persist">
+        <level value="DEBUG"/>
+    </logger>
+    
+    <logger name="org.opensaml">
+        <level value="WARN"/>
+    </logger>
+    
+    <root>
+        <appender-ref ref="STDOUT"/>
+        <level value="WARN"/>
+    </root>
+    
+</configuration>
diff --git a/opensaml-core-api/target/test-classes/opensaml-config.properties b/opensaml-core-api/target/test-classes/opensaml-config.properties
new file mode 100644
index 000000000..ff6e6547b
--- /dev/null
+++ b/opensaml-core-api/target/test-classes/opensaml-config.properties
@@ -0,0 +1,2 @@
+opensaml.config.partitionName=myapp
+opensaml.initializer.foo.flag=true
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$BasicTestConfig.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$BasicTestConfig.class
new file mode 100644
index 000000000..7250854fe
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$BasicTestConfig.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$TestConfig.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$TestConfig.class
new file mode 100644
index 000000000..b441a5d29
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest$TestConfig.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest.class
new file mode 100644
index 000000000..92904c327
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/ConfigurationServiceTest.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSourceTest.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSourceTest.class
new file mode 100644
index 000000000..0a0bdd2e9
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ClasspathConfigurationPropertiesSourceTest.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest$TestFilesystemConfigurationPropertiesSource.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest$TestFilesystemConfigurationPropertiesSource.class
new file mode 100644
index 000000000..549a39eeb
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest$TestFilesystemConfigurationPropertiesSource.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest.class
new file mode 100644
index 000000000..9c18e929e
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/FilesystemConfigurationPropertiesSourceTest.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSourceTest.class b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSourceTest.class
new file mode 100644
index 000000000..71102b390
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/config/provider/ThreadLocalConfigurationPropertiesSourceTest.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$1.class b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$1.class
new file mode 100644
index 000000000..0240cdf04
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$1.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$2.class b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$2.class
new file mode 100644
index 000000000..b73d400fd
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest$2.class differ
diff --git a/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest.class b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest.class
new file mode 100644
index 000000000..88814e403
Binary files /dev/null and b/opensaml-core-api/target/test-classes/org/opensaml/core/metrics/MetricsSupportTest.class differ
diff --git a/opensaml-core-impl/target/classes/META-INF/MANIFEST.MF b/opensaml-core-impl/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..631a9090b
--- /dev/null
+++ b/opensaml-core-impl/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Build-Jdk-Spec: 21
+Automatic-Module-Name: org.opensaml.core.impl
+Created-By: Maven Integration for Eclipse
+Main-Class: org.opensaml.core.Version
+Sealed: true
+
+Name: org/opensaml/core/
+Implementation-Vendor: opensaml.org
+Implementation-Version: 5.1.0-SNAPSHOT
+Implementation-Title: opensaml-core-impl
+
diff --git a/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.properties b/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.properties
new file mode 100644
index 000000000..3d1db44d9
--- /dev/null
+++ b/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Fri Mar 01 18:25:44 EST 2024
+artifactId=opensaml-core-impl
+groupId=org.opensaml
+m2e.projectLocation=/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl
+m2e.projectName=opensaml-core-impl
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.xml b/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.xml
new file mode 100644
index 000000000..4ff5b59f9
--- /dev/null
+++ b/opensaml-core-impl/target/classes/META-INF/maven/org.opensaml/opensaml-core-impl/pom.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opensaml</groupId>
+        <artifactId>opensaml-parent</artifactId>
+        <version>5.1.0-SNAPSHOT</version>
+    </parent>
+
+    <name>OpenSAML :: Core Implementation</name>
+    <description>Core Implementation</description>
+    <artifactId>opensaml-core-impl</artifactId>
+    <packaging>jar</packaging>
+
+    <properties>
+        <automatic.module.name>org.opensaml.core.impl</automatic.module.name>
+    </properties>
+
+    <dependencies>
+        <!-- Compile Dependencies -->
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-core-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking</artifactId>
+        </dependency>       
+
+        <dependency>
+            <groupId>io.dropwizard.metrics</groupId>
+            <artifactId>metrics-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard.metrics</groupId>
+            <artifactId>metrics-json</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+        </dependency>    
+
+        <dependency>
+            <groupId>${httpclient.groupId}</groupId>
+            <artifactId>${httpclient.artifactId}</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${httpclient.httpcore.groupId}</groupId>
+            <artifactId>${httpclient.httpcore.artifactId}</artifactId>
+        </dependency>
+
+        <!-- Provided Dependencies -->
+
+        <!-- Runtime Dependencies -->
+
+        <!-- Test Dependencies -->
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-testing</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-matchers</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <index>true</index>
+                        <manifestEntries>
+                            <Main-Class>org.opensaml.core.Version</Main-Class>
+                        </manifestEntries>
+                        <manifestSections>
+                            <manifestSection>
+                                <name>org/opensaml/core/</name>
+                                <manifestEntries>
+                                    <Implementation-Title>${project.artifactId}</Implementation-Title>
+                                    <Implementation-Version>${project.version}</Implementation-Version>
+                                    <Implementation-Vendor>opensaml.org</Implementation-Vendor>
+                                </manifestEntries>
+                            </manifestSection>
+                        </manifestSections>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/opensaml-core-impl/target/classes/META-INF/services/org.opensaml.core.config.Initializer b/opensaml-core-impl/target/classes/META-INF/services/org.opensaml.core.config.Initializer
new file mode 100644
index 000000000..de385dc8f
--- /dev/null
+++ b/opensaml-core-impl/target/classes/META-INF/services/org.opensaml.core.config.Initializer
@@ -0,0 +1,3 @@
+org.opensaml.core.xml.config.XMLObjectProviderInitializer
+org.opensaml.core.xml.config.GlobalParserPoolInitializer
+org.opensaml.core.metrics.impl.MetricRegistryInitializer
\ No newline at end of file
diff --git a/opensaml-core-impl/target/classes/default-config.xml b/opensaml-core-impl/target/classes/default-config.xml
new file mode 100644
index 000000000..f04f4aa75
--- /dev/null
+++ b/opensaml-core-impl/target/classes/default-config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMLTooling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:saml1p="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xt="http://www.opensaml.org/xmltooling-config" xmlns="http://www.opensaml.org/xmltooling-config">
+    
+    <ObjectProviders>
+    
+        <!-- Default Provider -->
+        <ObjectProvider qualifiedName="xt:DEFAULT">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSAnyBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
+        </ObjectProvider>
+        
+    </ObjectProviders>
+</XMLTooling>
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$1.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$1.class
new file mode 100644
index 000000000..ee1cbf77a
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$1.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$10.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$10.class
new file mode 100644
index 000000000..d24cb5670
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$10.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$11.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$11.class
new file mode 100644
index 000000000..1f7f9b9f9
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$11.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$12.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$12.class
new file mode 100644
index 000000000..905542322
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$12.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$13.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$13.class
new file mode 100644
index 000000000..e0c93829e
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$13.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$14.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$14.class
new file mode 100644
index 000000000..75d1641a0
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$14.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$15.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$15.class
new file mode 100644
index 000000000..188f15529
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$15.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$16.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$16.class
new file mode 100644
index 000000000..e37bc9fff
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$16.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$17.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$17.class
new file mode 100644
index 000000000..b13ba93c1
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$17.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$2.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$2.class
new file mode 100644
index 000000000..2c7d79d51
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$2.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$3.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$3.class
new file mode 100644
index 000000000..149eff88d
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$3.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$4.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$4.class
new file mode 100644
index 000000000..b8b0f87c4
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$4.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$5.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$5.class
new file mode 100644
index 000000000..76978aa9f
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$5.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$6.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$6.class
new file mode 100644
index 000000000..10a14e3a8
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$6.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$7.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$7.class
new file mode 100644
index 000000000..c6ef9df86
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$7.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$8.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$8.class
new file mode 100644
index 000000000..985c13f6a
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$8.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$9.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$9.class
new file mode 100644
index 000000000..be564d84b
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet$9.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet.class
new file mode 100644
index 000000000..582cb94c6
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/CoreGaugeSet.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledCounter.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledCounter.class
new file mode 100644
index 000000000..da2ad083d
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledCounter.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledHistogram.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledHistogram.class
new file mode 100644
index 000000000..70c4fddef
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledHistogram.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMeter.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMeter.class
new file mode 100644
index 000000000..296b4bb59
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMeter.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMetric.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMetric.class
new file mode 100644
index 000000000..567c0d750
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledMetric.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledTimer.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledTimer.class
new file mode 100644
index 000000000..2cb1fdb22
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/DisabledTimer.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/FilteredMetricRegistry.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/FilteredMetricRegistry.class
new file mode 100644
index 000000000..22b82a4d8
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/FilteredMetricRegistry.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/HTTPReporter.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/HTTPReporter.class
new file mode 100644
index 000000000..a6fa84914
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/HTTPReporter.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/MetricRegistryInitializer.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/MetricRegistryInitializer.class
new file mode 100644
index 000000000..1db1e9bcf
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/MetricRegistryInitializer.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/package-info.class b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/package-info.class
new file mode 100644
index 000000000..b79b75ef4
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/metrics/impl/package-info.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/PassthroughSourceStrategy.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/PassthroughSourceStrategy.class
new file mode 100644
index 000000000..21327c6a4
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/PassthroughSourceStrategy.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategy.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategy.class
new file mode 100644
index 000000000..cee6624a2
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategy.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/package-info.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/package-info.class
new file mode 100644
index 000000000..80d9b381d
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/persist/impl/package-info.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyBuilder.class
new file mode 100644
index 000000000..540946e73
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyImpl.class
new file mode 100644
index 000000000..e8ef2b01d
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyMarshaller.class
new file mode 100644
index 000000000..9c7410b67
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyUnmarshaller.class
new file mode 100644
index 000000000..6bee6ff65
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSAnyUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryBuilder.class
new file mode 100644
index 000000000..d94978ee1
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryImpl.class
new file mode 100644
index 000000000..80cb6da80
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.class
new file mode 100644
index 000000000..925c8ffdc
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.class
new file mode 100644
index 000000000..a96753c5b
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanBuilder.class
new file mode 100644
index 000000000..ef250ee81
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanImpl.class
new file mode 100644
index 000000000..1270f7ee6
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.class
new file mode 100644
index 000000000..654694d17
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.class
new file mode 100644
index 000000000..435821f87
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeBuilder.class
new file mode 100644
index 000000000..0497c44d7
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeImpl.class
new file mode 100644
index 000000000..bd278aee8
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.class
new file mode 100644
index 000000000..e55aaa66f
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.class
new file mode 100644
index 000000000..6b76727da
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerBuilder.class
new file mode 100644
index 000000000..1596b98bd
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerImpl.class
new file mode 100644
index 000000000..a04d4ebc3
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.class
new file mode 100644
index 000000000..b6d203f5c
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.class
new file mode 100644
index 000000000..11f9be4c5
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameBuilder.class
new file mode 100644
index 000000000..a5c183bf3
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameImpl.class
new file mode 100644
index 000000000..216f2d9b4
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.class
new file mode 100644
index 000000000..4f3b4e646
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.class
new file mode 100644
index 000000000..5ca37528e
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringBuilder.class
new file mode 100644
index 000000000..917ed23ab
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringImpl.class
new file mode 100644
index 000000000..4c5ac70ce
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringMarshaller.class
new file mode 100644
index 000000000..af1c4f0e3
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.class
new file mode 100644
index 000000000..38ceb57ef
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIBuilder.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIBuilder.class
new file mode 100644
index 000000000..b4f9c1f01
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIBuilder.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIImpl.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIImpl.class
new file mode 100644
index 000000000..2158e9936
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIImpl.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIMarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIMarshaller.class
new file mode 100644
index 000000000..a16d279a2
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIMarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.class
new file mode 100644
index 000000000..d8fc1b779
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.class differ
diff --git a/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/package-info.class b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/package-info.class
new file mode 100644
index 000000000..eabf88fbe
Binary files /dev/null and b/opensaml-core-impl/target/classes/org/opensaml/core/xml/schema/impl/package-info.class differ
diff --git a/opensaml-core-impl/target/classes/schema-config.xml b/opensaml-core-impl/target/classes/schema-config.xml
new file mode 100644
index 000000000..1c281029b
--- /dev/null
+++ b/opensaml-core-impl/target/classes/schema-config.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMLTooling xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opensaml.org/xmltooling-config">
+    
+    <ObjectProviders>
+
+        <!-- XML Schema Any -->
+        <ObjectProvider qualifiedName="xs:anyType">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSAnyBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
+        </ObjectProvider>
+    
+        <!-- XML Schema String -->
+        <ObjectProvider qualifiedName="xs:string">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSStringBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSStringUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- XML Schema dateTime -->
+        <ObjectProvider qualifiedName="xs:dateTime">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSDateTimeBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSDateTimeMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSDateTimeUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- XML Schema QName -->
+        <ObjectProvider qualifiedName="xs:QName">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSQNameBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSQNameMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSQNameUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- XML Schema base64Binary -->
+        <ObjectProvider qualifiedName="xs:base64Binary">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSBase64BinaryBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSBase64BinaryMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSBase64BinaryUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- XML Schema integer -->
+        <ObjectProvider qualifiedName="xs:integer">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSIntegerBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSIntegerMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSIntegerUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- XML Schema anyURI -->
+        <ObjectProvider qualifiedName="xs:anyURI">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSURIBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSURIUnmarshaller"/>
+        </ObjectProvider>
+
+        <!-- XML Schema boolean -->
+        <ObjectProvider qualifiedName="xs:boolean">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSBooleanBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSBooleanMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSBooleanUnmarshaller"/>
+        </ObjectProvider>
+                
+    </ObjectProviders>
+
+</XMLTooling>
diff --git a/opensaml-core-impl/target/maven-archiver/pom.properties b/opensaml-core-impl/target/maven-archiver/pom.properties
new file mode 100644
index 000000000..c4b224085
--- /dev/null
+++ b/opensaml-core-impl/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=opensaml-core-impl
+groupId=org.opensaml
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 000000000..b87b483a2
--- /dev/null
+++ b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,63 @@
+org/opensaml/core/xml/schema/impl/XSAnyBuilder.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$7.class
+org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.class
+org/opensaml/core/metrics/impl/CoreGaugeSet.class
+org/opensaml/core/xml/schema/impl/XSAnyImpl.class
+org/opensaml/core/xml/schema/impl/XSBase64BinaryImpl.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$16.class
+org/opensaml/core/metrics/impl/DisabledCounter.class
+org/opensaml/core/xml/schema/impl/XSStringImpl.class
+org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.class
+org/opensaml/core/metrics/impl/DisabledHistogram.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$4.class
+org/opensaml/core/xml/schema/impl/XSURIImpl.class
+org/opensaml/core/xml/schema/impl/XSStringMarshaller.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$13.class
+org/opensaml/core/xml/schema/impl/XSBooleanBuilder.class
+org/opensaml/core/xml/schema/impl/XSDateTimeImpl.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$17.class
+org/opensaml/core/metrics/impl/DisabledMetric.class
+org/opensaml/core/metrics/impl/HTTPReporter.class
+org/opensaml/core/xml/persist/impl/PassthroughSourceStrategy.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$6.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$10.class
+org/opensaml/core/xml/persist/impl/package-info.class
+org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSBase64BinaryBuilder.class
+org/opensaml/core/metrics/impl/FilteredMetricRegistry.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$3.class
+org/opensaml/core/xml/schema/impl/XSURIBuilder.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$14.class
+org/opensaml/core/xml/schema/impl/XSDateTimeBuilder.class
+org/opensaml/core/metrics/impl/DisabledMeter.class
+org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSIntegerImpl.class
+org/opensaml/core/xml/schema/impl/package-info.class
+org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSURIMarshaller.class
+org/opensaml/core/metrics/impl/MetricRegistryInitializer.class
+org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.class
+org/opensaml/core/xml/schema/impl/XSQNameImpl.class
+org/opensaml/core/xml/schema/impl/XSAnyMarshaller.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$2.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$11.class
+org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategy.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$9.class
+org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$1.class
+org/opensaml/core/xml/schema/impl/XSAnyUnmarshaller.class
+org/opensaml/core/metrics/impl/DisabledTimer.class
+org/opensaml/core/metrics/impl/package-info.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$12.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$15.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$8.class
+org/opensaml/core/xml/schema/impl/XSQNameMarshaller.class
+org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.class
+org/opensaml/core/xml/schema/impl/XSQNameBuilder.class
+org/opensaml/core/xml/schema/impl/XSIntegerBuilder.class
+org/opensaml/core/metrics/impl/CoreGaugeSet$5.class
+org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.class
+org/opensaml/core/xml/schema/impl/XSBooleanImpl.class
+org/opensaml/core/xml/schema/impl/XSStringBuilder.class
diff --git a/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 000000000..42f4edf75
--- /dev/null
+++ b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,46 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSURIMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/DisabledTimer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSAnyMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/MetricRegistryInitializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/DisabledMetric.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/DisabledHistogram.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategy.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSURIBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSAnyImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSStringMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/persist/impl/PassthroughSourceStrategy.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSURIImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSAnyUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSStringImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSAnyBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/FilteredMetricRegistry.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSURIUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/CoreGaugeSet.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSDateTimeMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSBooleanImpl.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSQNameBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/DisabledMeter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSStringBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/DisabledCounter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/HTTPReporter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSStringUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/main/java/org/opensaml/core/xml/schema/impl/XSIntegerMarshaller.java
diff --git a/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 000000000..4266b667c
--- /dev/null
+++ b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1,26 @@
+org/opensaml/core/xml/config/tests/ConfigurationTest.class
+org/opensaml/core/xml/schema/impl/XSIntegerTest.class
+org/opensaml/core/xml/tests/NamespaceManagerTest.class
+org/opensaml/core/xml/tests/ElementProxyTest.class
+org/opensaml/core/xml/tests/XMLObjectXSIAttribsTest.class
+org/opensaml/core/xml/persist/impl/MapLoadSaveManagerTest.class
+org/opensaml/core/xml/util/tests/IndexedXMLObjectChildrenListTest.class
+org/opensaml/core/xml/tests/AbstractXMLObjectTest.class
+org/opensaml/core/xml/tests/IDAttributeTest.class
+org/opensaml/core/xml/schema/impl/XSStringTest.class
+org/opensaml/core/xml/schema/impl/XSBooleanTest.class
+org/opensaml/core/xml/util/tests/XMLObjectSourceTest.class
+org/opensaml/core/xml/util/tests/XMLObjectSupportTest.class
+org/opensaml/core/xml/tests/UnmarshallingTest.class
+org/opensaml/core/xml/persist/impl/FilesystemLoadSaveManagerTest.class
+org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategyTest.class
+org/opensaml/core/xml/schema/impl/XSURITest.class
+org/opensaml/core/xml/schema/impl/XSDateTimeTest.class
+org/opensaml/core/xml/config/tests/XMLObjectProviderInitializerTest.class
+org/opensaml/core/xml/tests/UnmarshallingSecurityTest.class
+org/opensaml/core/xml/schema/impl/XSQNameTest.class
+org/opensaml/core/xml/config/tests/InitializationServiceTest.class
+org/opensaml/core/xml/schema/impl/XSBase64BinaryTest.class
+org/opensaml/core/xml/util/tests/XMLObjectChildrenListTest.class
+org/opensaml/core/xml/util/tests/AttributeMapTest.class
+org/opensaml/core/xml/tests/MarshallingTest.class
diff --git a/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 000000000..4f5659955
--- /dev/null
+++ b/opensaml-core-impl/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,26 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/IDAttributeTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/util/tests/AttributeMapTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSIntegerTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSDateTimeTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSStringTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/config/tests/InitializationServiceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSQNameTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSBooleanTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/util/tests/XMLObjectChildrenListTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/persist/impl/FilesystemLoadSaveManagerTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/UnmarshallingTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/util/tests/IndexedXMLObjectChildrenListTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/UnmarshallingSecurityTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/config/tests/ConfigurationTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/util/tests/XMLObjectSourceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/NamespaceManagerTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSURITest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/MarshallingTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/XMLObjectXSIAttribsTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategyTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/schema/impl/XSBase64BinaryTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/AbstractXMLObjectTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/config/tests/XMLObjectProviderInitializerTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/tests/ElementProxyTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/persist/impl/MapLoadSaveManagerTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/src/test/java/org/opensaml/core/xml/util/tests/XMLObjectSupportTest.java
diff --git a/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT-tests.jar b/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT-tests.jar
new file mode 100644
index 000000000..f43b58c57
Binary files /dev/null and b/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT-tests.jar differ
diff --git a/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT.jar b/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT.jar
new file mode 100644
index 000000000..60753b16f
Binary files /dev/null and b/opensaml-core-impl/target/opensaml-core-impl-5.1.0-SNAPSHOT.jar differ
diff --git a/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.html b/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.html
new file mode 100644
index 000000000..6efaa8401
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.html	
@@ -0,0 +1,1029 @@
+<html>
+<head>
+<title>TestNG:  Surefire test</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+
+<style type="text/css">
+.log { display: none;} 
+.stack-trace { display: none;} 
+</style>
+<script type="text/javascript">
+<!--
+function flip(e) {
+  current = e.style.display;
+  if (current == 'block') {
+    e.style.display = 'none';
+    return 0;
+  }
+  else {
+    e.style.display = 'block';
+    return 1;
+  }
+}
+
+function toggleBox(szDivId, elem, msg1, msg2)
+{
+  var res = -1;  if (document.getElementById) {
+    res = flip(document.getElementById(szDivId));
+  }
+  else if (document.all) {
+    // this is the way old msie versions work
+    res = flip(document.all[szDivId]);
+  }
+  if(elem) {
+    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
+  }
+
+}
+
+function toggleAllBoxes() {
+  if (document.getElementsByTagName) {
+    d = document.getElementsByTagName('div');
+    for (i = 0; i < d.length; i++) {
+      if (d[i].className == 'log') {
+        flip(d[i]);
+      }
+    }
+  }
+}
+
+// -->
+</script>
+
+</head>
+<body>
+<h2 align='center'>Surefire test</h2><table border='1' align="center">
+<tr>
+<td>Tests passed/Failed/Skipped:</td><td>105/0/0</td>
+</tr><tr>
+<td>Started on:</td><td>Fri Feb 09 16:01:10 EST 2024</td>
+</tr>
+<tr><td>Total time:</td><td>3 seconds (3411 ms)</td>
+</tr><tr>
+<td>Included groups:</td><td></td>
+</tr><tr>
+<td>Excluded groups:</td><td></td>
+</tr>
+</table><p/>
+<small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table width='100%' border='1' class='invocation-passed'>
+<tr><td colspan='4' align='center'><b>PASSED TESTS</b></td></tr>
+<tr><td><b>Test method</b></td>
+<td><b>Attribute(s)</b></td>
+<td width="30%"><b>Exception</b></td>
+<td width="10%"><b>Time (seconds)</b></td>
+<td><b>Instance</b></td>
+</tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testUnmarshallNoNil()'><b>testUnmarshallNoNil</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testObjectType()'><b>testObjectType</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSIntegerTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSIntegerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateAttribute()'><b>testDOMAndXMLObjectSourceDropOnMutateAttribute</b><br>Test class: org.opensaml.core.xml.tests.AbstractXMLObjectTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorPathTrimming()'><b>ctorPathTrimming</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.checkCheckModifyTimeTracking()'><b>checkCheckModifyTimeTracking</b><br>Test class: org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</td>
+<td></td>
+<td>1</td>
+<td>org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsNull()'><b>targetKeyIsNull</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsNull(FilesystemLoadSaveManagerTest.java:305)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace1455177644", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace1455177644'><pre>net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsNull(FilesystemLoadSaveManagerTest.java:305)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSourceTest.testBadCtorParams()'><b>testBadCtorParams</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSourceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSupportTest.testXMLObjectCloneWithUnrootedDOM()'><b>testXMLObjectCloneWithUnrootedDOM</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory()'><b>ctorBaseDirPathExistsButNotADirectory</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>net.shibboleth.shared.logic.ConstraintViolationException: Existing base directory path was not a directory
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:250)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:125)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory(FilesystemLoadSaveManagerTest.java:345)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace814111376", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace814111376'><pre>net.shibboleth.shared.logic.ConstraintViolationException: Existing base directory path was not a directory
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:250)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:125)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory(FilesystemLoadSaveManagerTest.java:345)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSQNameTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSQNameTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSIntegerTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSIntegerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile()'><b>targetExistsButIsNotAFile</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>java.io.IOException: Path exists based on specified key, but is not a file: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/abc
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:431)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile(FilesystemLoadSaveManagerTest.java:295)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace131037934", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace131037934'><pre>java.io.IOException: Path exists based on specified key, but is not a file: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/abc
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:431)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile(FilesystemLoadSaveManagerTest.java:295)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateChildElements()'><b>testDOMAndXMLObjectSourceDropOnMutateChildElements</b><br>Test class: org.opensaml.core.xml.tests.AbstractXMLObjectTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSDateTimeTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSDateTimeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSStringTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSStringTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSStringTest at 909217e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure()'><b>testUnmarshallingWithCDATAInElementContentInsecure</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td><div><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal CDATA node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:143)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure(UnmarshallingSecurityTest.java:110)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace1962398162", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace1962398162'><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal CDATA node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:143)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure(UnmarshallingSecurityTest.java:110)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testQualifiedAttributes()'><b>testQualifiedAttributes</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.saveLoadUpdateRemove()'><b>saveLoadUpdateRemove</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest<br>Parameters: true</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testSimpleUnmarshall()'><b>testSimpleUnmarshall</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure()'><b>testUnmarshallingWithCommentBetweenChildElementsInsecure</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td><div><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure(UnmarshallingSecurityTest.java:142)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace891894789", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace891894789'><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure(UnmarshallingSecurityTest.java:142)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorCreateDirectory()'><b>ctorCreateDirectory</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure()'><b>testUnmarshallingWithCommentInElementContentInsecure</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td><div><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure(UnmarshallingSecurityTest.java:78)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace766696861", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace766696861'><pre>org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure(UnmarshallingSecurityTest.java:78)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testMarshallSchemaLocation()'><b>testMarshallSchemaLocation</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSBase64BinaryTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testListOpChangePropagation()'><b>testListOpChangePropagation</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSQNameTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSQNameTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentDefaults()'><b>testUnmarshallingWithCDATAInElementContentDefaults</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.testRemove()'><b>testRemove</b><br>Test class: org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.testAdd()'><b>testAdd</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testMarshallNoNamespaceSchemaLocation()'><b>testMarshallNoNamespaceSchemaLocation</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.saveLoadUpdateRemove()'><b>saveLoadUpdateRemove</b><br>Test class: org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSupportTest.testXMLObjectCloneInputMarshalling()'><b>testXMLObjectCloneInputMarshalling</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateContent()'><b>testDOMAndXMLObjectSourceDropOnMutateContent</b><br>Test class: org.opensaml.core.xml.tests.AbstractXMLObjectTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.ConfigurationTest.testIDAttributeRegistration()'><b>testIDAttributeRegistration</b><br>Test class: org.opensaml.core.xml.config.tests.ConfigurationTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testQNameAttributeValue()'><b>testQNameAttributeValue</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingExistingEmptyDocument()'><b>testMarshallingExistingEmptyDocument</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsDefaults()'><b>testUnmarshallingWithCommentBetweenChildElementsDefaults</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSBooleanTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSBooleanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testObjectName()'><b>testObjectName</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.testSet()'><b>testSet</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingTest.testUnmarshallingWithChildElements()'><b>testUnmarshallingWithChildElements</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testGlobalIDRegistration()'><b>testGlobalIDRegistration</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testNSDeclaration()'><b>testNSDeclaration</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsEmpty()'><b>targetKeyIsEmpty</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsEmpty(FilesystemLoadSaveManagerTest.java:310)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace379430898", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace379430898'><pre>net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsEmpty(FilesystemLoadSaveManagerTest.java:310)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testChangePropagationInList()'><b>testChangePropagationInList</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSStringTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSStringTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSStringTest at 909217e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.iterator()'><b>iterator</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.AttributeMapTest.testAttributeMapQualifiedAttributes()'><b>testAttributeMapQualifiedAttributes</b><br>Test class: org.opensaml.core.xml.util.tests.AttributeMapTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.InitializationServiceTest.testProviderInit()'><b>testProviderInit</b><br>Test class: org.opensaml.core.xml.config.tests.InitializationServiceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingWithElementContent()'><b>testMarshallingWithElementContent</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.ElementProxyTest.testUnmarshallUnknownContent()'><b>testUnmarshallUnknownContent</b><br>Test class: org.opensaml.core.xml.tests.ElementProxyTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.emptyMap()'><b>emptyMap</b><br>Test class: org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.AttributeMapTest.testQNameAttributeValueAsQName()'><b>testQNameAttributeValueAsQName</b><br>Test class: org.opensaml.core.xml.util.tests.AttributeMapTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.testSet()'><b>testSet</b><br>Test class: org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.sourceTooShort()'><b>sourceTooShort</b><br>Test class: org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest</td>
+<td><div><pre>org.opensaml.core.xml.XMLRuntimeException: Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategy.apply(SegmentingIntermediateDirectoryStrategy.java:84)
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.sourceTooShort(SegmentingIntermediateDirectoryStrategyTest.java:49)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace1778877569", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace1778877569'><pre>org.opensaml.core.xml.XMLRuntimeException: Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategy.apply(SegmentingIntermediateDirectoryStrategy.java:84)
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.sourceTooShort(SegmentingIntermediateDirectoryStrategyTest.java:49)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSupportTest.testBuildXMLObject()'><b>testBuildXMLObject</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testMarshallNil()'><b>testMarshallNil</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.testIterator()'><b>testIterator</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.buildTargetFileFromKeyWithIntermediateDirs()'><b>buildTargetFileFromKeyWithIntermediateDirs</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSDateTimeTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSDateTimeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSDateTimeTest.testUnmarshallNoFractional()'><b>testUnmarshallNoFractional</b><br>Test class: org.opensaml.core.xml.schema.impl.XSDateTimeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.saveLoadUpdateRemove()'><b>saveLoadUpdateRemove</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest<br>Parameters: false</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.iterator()'><b>iterator</b><br>Test class: org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.testClear()'><b>testClear</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSupportTest.testXMLObjectCloneWithDropDOM()'><b>testXMLObjectCloneWithDropDOM</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testUnmarshallSchemaLocation()'><b>testUnmarshallSchemaLocation</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testNonVisibleNamespacePrefixes()'><b>testNonVisibleNamespacePrefixes</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.AttributeMapTest.testClear()'><b>testClear</b><br>Test class: org.opensaml.core.xml.util.tests.AttributeMapTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorEmptyPathString()'><b>ctorEmptyPathString</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>net.shibboleth.shared.logic.ConstraintViolationException: Base directory string instance was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorEmptyPathString(FilesystemLoadSaveManagerTest.java:333)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace611502040", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace611502040'><pre>net.shibboleth.shared.logic.ConstraintViolationException: Base directory string instance was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorEmptyPathString(FilesystemLoadSaveManagerTest.java:333)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest.testProviderInit()'><b>testProviderInit</b><br>Test class: org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testComplexUnmarshallInList()'><b>testComplexUnmarshallInList</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingWithChildElements()'><b>testMarshallingWithChildElements</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.testRemove()'><b>testRemove</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testUnmarshallNoNamespaceSchemaLocation()'><b>testUnmarshallNoNamespaceSchemaLocation</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSBooleanTest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSBooleanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSURITest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSURITest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.ConfigurationTest.testInvalidConfiguration()'><b>testInvalidConfiguration</b><br>Test class: org.opensaml.core.xml.config.tests.ConfigurationTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.emptyDir()'><b>emptyDir</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingTest.testUnmarshallingWithAttributes()'><b>testUnmarshallingWithAttributes</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingWithAttributes()'><b>testMarshallingWithAttributes</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.testAdd()'><b>testAdd</b><br>Test class: org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingReplaceDocumentRoot()'><b>testMarshallingReplaceDocumentRoot</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.MarshallingTest.testMarshallingXMLFragment()'><b>testMarshallingXMLFragment</b><br>Test class: org.opensaml.core.xml.tests.MarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.MarshallingTest at d737b89</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.ConfigurationTest.testObjectProviderConfiguration()'><b>testObjectProviderConfiguration</b><br>Test class: org.opensaml.core.xml.config.tests.ConfigurationTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.testUnmarshallNil()'><b>testUnmarshallNil</b><br>Test class: org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.basic()'><b>basic</b><br>Test class: org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.AttributeMapTest.testQNameAttributeValueAsString()'><b>testQNameAttributeValueAsString</b><br>Test class: org.opensaml.core.xml.util.tests.AttributeMapTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSDateTimeTest.testUnmarshallCanonical()'><b>testUnmarshallCanonical</b><br>Test class: org.opensaml.core.xml.schema.impl.XSDateTimeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.testSublist()'><b>testSublist</b><br>Test class: org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentDefaults()'><b>testUnmarshallingWithCommentInElementContentDefaults</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.UnmarshallingTest.testUnmarshallingWithElementContent()'><b>testUnmarshallingWithElementContent</b><br>Test class: org.opensaml.core.xml.tests.UnmarshallingTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs()'><b>saveLoadUpdateRemoveWithIntermediateDirs</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest<br>Parameters: true</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.NamespaceManagerTest.testQNameElementContent()'><b>testQNameElementContent</b><br>Test class: org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.config.tests.ConfigurationTest.testIDAttributeConfiguration()'><b>testIDAttributeConfiguration</b><br>Test class: org.opensaml.core.xml.config.tests.ConfigurationTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSURITest.testUnmarshall()'><b>testUnmarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSURITest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSourceTest.testGetterAndHashCodeAndEquals()'><b>testGetterAndHashCodeAndEquals</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSourceTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testAttributeMap()'><b>testAttributeMap</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.util.tests.XMLObjectSupportTest.testXMLObjectCloneWithRootInNewDocument()'><b>testXMLObjectCloneWithRootInNewDocument</b><br>Test class: org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.buildTargetFileFromKey()'><b>buildTargetFileFromKey</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.schema.impl.XSBase64BinaryTest.testMarshall()'><b>testMarshall</b><br>Test class: org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs()'><b>saveLoadUpdateRemoveWithIntermediateDirs</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest<br>Parameters: false</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.tests.IDAttributeTest.testAttributeMapOps()'><b>testAttributeMapOps</b><br>Test class: org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorRelativeDir()'><b>ctorRelativeDir</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td><div><pre>net.shibboleth.shared.logic.ConstraintViolationException: Base directory specified was not an absolute path
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:248)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorRelativeDir(FilesystemLoadSaveManagerTest.java:338)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace594195094", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace594195094'><pre>net.shibboleth.shared.logic.ConstraintViolationException: Base directory specified was not an absolute path
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:248)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorRelativeDir(FilesystemLoadSaveManagerTest.java:338)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+<tr>
+<td title='org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.checkCheckModifyTimeTracking()'><b>checkCheckModifyTimeTracking</b><br>Test class: org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td></td>
+<td>2</td>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936</td></tr>
+</table><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.xml b/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.xml
new file mode 100644
index 000000000..136834edc
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/Surefire suite/Surefire test.xml	
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
+<testsuite ignored="18" hostname="BrentPumansMini" failures="0" tests="105" name="Surefire test" time="3.411" errors="0" timestamp="2024-02-09T16:01:14 EST">
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testAttributeMapQualifiedAttributes" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testClear" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testQNameAttributeValueAsQName" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testQNameAttributeValueAsString" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testBuildXMLObject" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneInputMarshalling" time="0.018"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithDropDOM" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithRootInNewDocument" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithUnrootedDOM" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testAdd" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testRemove" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testSet" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testSublist" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testAdd" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testClear" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testIterator" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testRemove" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testSet" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" name="testBadCtorParams" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" name="testGetterAndHashCodeAndEquals" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.config.tests.InitializationServiceTest" name="testProviderInit" time="0.027"/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testIDAttributeConfiguration" time="0.006"/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testIDAttributeRegistration" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testInvalidConfiguration" time="0.008"/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testObjectProviderConfiguration" time="0.008"/>
+  <testcase classname="org.opensaml.core.testing.XMLObjectProviderInitializerBaseTestCase" name="testProviderInit" time="0.01"/>
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateAttribute" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateChildElements" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateContent" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithAttributes" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithChildElements" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithElementContent" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testAttributeMap" time="0.002"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testAttributeMapOps" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testChangePropagationInList" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testComplexUnmarshallInList" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testGlobalIDRegistration" time="0.002"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testListOpChangePropagation" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testSimpleUnmarshall" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCDATAInElementContentDefaults" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCDATAInElementContentInsecure" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentBetweenChildElementsDefaults" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentBetweenChildElementsInsecure" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentInElementContentDefaults" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentInElementContentInsecure" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingExistingEmptyDocument" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingReplaceDocumentRoot" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithAttributes" time="0.018"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithChildElements" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithElementContent" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingXMLFragment" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testNSDeclaration" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testNonVisibleNamespacePrefixes" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testObjectName" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testObjectType" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQNameAttributeValue" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQNameElementContent" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQualifiedAttributes" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallNil" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallNoNamespaceSchemaLocation" time="0.002"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallSchemaLocation" time="0.002"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNil" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNoNamespaceSchemaLocation" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNoNil" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallSchemaLocation" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.tests.ElementProxyTest" name="testUnmarshallUnknownContent" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSQNameTest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSQNameTest" name="testUnmarshall" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" name="testUnmarshall" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" name="testUnmarshall" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSURITest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSURITest" name="testUnmarshall" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" name="testUnmarshall" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testMarshall" time="0.004"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshall" time="0.002"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshallCanonical" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshallNoFractional" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSStringTest" name="testMarshall" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSStringTest" name="testUnmarshall" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="buildTargetFileFromKey" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="buildTargetFileFromKeyWithIntermediateDirs" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="checkCheckModifyTimeTracking" time="2.013"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorBaseDirPathExistsButNotADirectory" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorCreateDirectory" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorEmptyPathString" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorPathTrimming" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorRelativeDir" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="emptyDir" time="0.003"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="iterator" time="0.005"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.024"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.025"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemoveWithIntermediateDirs" time="0.029"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemoveWithIntermediateDirs" time="0.025"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetExistsButIsNotAFile" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetKeyIsEmpty" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetKeyIsNull" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" name="basic" time="0.004"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" name="sourceTooShort" time="0.001"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="checkCheckModifyTimeTracking" time="1.002"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="emptyMap" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="iterator" time="0.0"/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.001"/>
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+  <testcase classname="org.opensaml.core.testing.OpenSAMLInitBaseTestCase" name="@BeforeSuite initOpenSAML" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite initOpenSAML -->
+</testsuite> <!-- Surefire test -->
diff --git a/opensaml-core-impl/target/surefire-reports/TEST-TestSuite.xml b/opensaml-core-impl/target/surefire-reports/TEST-TestSuite.xml
new file mode 100644
index 000000000..f58710608
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/TEST-TestSuite.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="TestSuite" time="4.623" tests="105" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="java.specification.version" value="17"/>
+    <property name="sun.jnu.encoding" value="UTF-8"/>
+    <property name="java.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Java/maven-repo/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-security-api/target/opensaml-security-api [...]
+    <property name="java.vm.vendor" value="Oracle Corporation"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="java.vendor.url" value="https://java.oracle.com/"/>
+    <property name="user.timezone" value="America/New_York"/>
+    <property name="os.name" value="Mac OS X"/>
+    <property name="java.vm.specification.version" value="17"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="user.country" value="US"/>
+    <property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/lib"/>
+    <property name="sun.java.command" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/surefire/surefirebooter-20240209160109516_33.jar /Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/surefire 2024-02-09T16-00-56_938-jvmRun1 surefire-20240209160109516_31tmp surefire_6-20240209160109516_32tmp"/>
+    <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="jdk.debug" value="release"/>
+    <property name="surefire.test.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Java/maven-repo/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-security-api/target/opensaml-sec [...]
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="/Users/putmanb"/>
+    <property name="user.language" value="en"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.version.date" value="2023-07-18"/>
+    <property name="java.home" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home"/>
+    <property name="file.separator" value="/"/>
+    <property name="basedir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl"/>
+    <property name="java.vm.compressedOopsMode" value="Zero based"/>
+    <property name="line.separator" value="
"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="surefire.real.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/surefire/surefirebooter-20240209160109516_33.jar"/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.runtime.version" value="17.0.8+9-LTS-211"/>
+    <property name="user.name" value="putmanb"/>
+    <property name="path.separator" value=":"/>
+    <property name="os.version" value="11.7.6"/>
+    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
+    <property name="file.encoding" value="UTF-8"/>
+    <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
+    <property name="localRepository" value="/Users/putmanb/Dev/Java/maven-repo"/>
+    <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/>
+    <property name="java.io.tmpdir" value="/var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/"/>
+    <property name="java.version" value="17.0.8"/>
+    <property name="user.dir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl"/>
+    <property name="os.arch" value="x86_64"/>
+    <property name="no-check-m2" value="true"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="native.encoding" value="UTF-8"/>
+    <property name="java.library.path" value="/Users/putmanb/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
+    <property name="java.vm.info" value="mixed mode, sharing"/>
+    <property name="java.vendor" value="Oracle Corporation"/>
+    <property name="java.vm.version" value="17.0.8+9-LTS-211"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeBig"/>
+    <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.class.version" value="61.0"/>
+  </properties>
+  <testcase name="testAttributeMapQualifiedAttributes" classname="org.opensaml.core.xml.util.tests.AttributeMapTest" time="0.004">
+    <system-out><![CDATA[16:01:09,744 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.13
+16:01:09,746 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - No custom configurators were discovered as a service.
+16:01:09,746 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:01:09,747 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:01:09,756 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
+16:01:09,756 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
+16:01:09,764 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 10 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
+16:01:09,764 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:01:09,765 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:01:09,768 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/test-classes/logback-test.xml]
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 12
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 16
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 21
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,868 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
+16:01:09,868 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
+16:01:09,885 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml.core.xml.persist level set to DEBUG
+16:01:09,885 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml level set to WARN
+16:01:09,886 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
+16:01:09,886 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - ROOT level set to WARN
+16:01:09,886 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor at 21de60b4 - End of configuration.
+16:01:09,886 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator at c267ef4 - Registering current configuration as safe fallback point
+16:01:09,886 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 121 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
+
+]]></system-out>
+  </testcase>
+  <testcase name="testClear" classname="org.opensaml.core.xml.util.tests.AttributeMapTest" time="0.0"/>
+  <testcase name="testQNameAttributeValueAsQName" classname="org.opensaml.core.xml.util.tests.AttributeMapTest" time="0.001"/>
+  <testcase name="testQNameAttributeValueAsString" classname="org.opensaml.core.xml.util.tests.AttributeMapTest" time="0.0"/>
+  <testcase name="testBuildXMLObject" classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.002"/>
+  <testcase name="testXMLObjectCloneInputMarshalling" classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.018"/>
+  <testcase name="testXMLObjectCloneWithDropDOM" classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.001"/>
+  <testcase name="testXMLObjectCloneWithRootInNewDocument" classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.001"/>
+  <testcase name="testXMLObjectCloneWithUnrootedDOM" classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.0"/>
+  <testcase name="testAdd" classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testRemove" classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" time="0.001"/>
+  <testcase name="testSet" classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testSublist" classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" time="0.001"/>
+  <testcase name="testAdd" classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testClear" classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testIterator" classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.001"/>
+  <testcase name="testRemove" classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testSet" classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.0"/>
+  <testcase name="testBadCtorParams" classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" time="0.0"/>
+  <testcase name="testGetterAndHashCodeAndEquals" classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" time="0.001"/>
+  <testcase name="testProviderInit" classname="org.opensaml.core.xml.config.tests.InitializationServiceTest" time="0.026"/>
+  <testcase name="testIDAttributeConfiguration" classname="org.opensaml.core.xml.config.tests.ConfigurationTest" time="0.006"/>
+  <testcase name="testIDAttributeRegistration" classname="org.opensaml.core.xml.config.tests.ConfigurationTest" time="0.0"/>
+  <testcase name="testInvalidConfiguration" classname="org.opensaml.core.xml.config.tests.ConfigurationTest" time="0.009">
+    <system-out><![CDATA[ERROR BasicParserPool - XML Parsing Error
+ERROR XMLConfigurator - Invalid configuration file: Unable to parse inputstream, it contained invalid XML
+]]></system-out>
+  </testcase>
+  <testcase name="testObjectProviderConfiguration" classname="org.opensaml.core.xml.config.tests.ConfigurationTest" time="0.009">
+    <system-out><![CDATA[ERROR XMLConfigurator - Cannot create instance of foo: foo
+ERROR XMLConfigurator - Error initializing object provier [xt:ObjectProvider: null]: Cannot create instance of foo
+]]></system-out>
+  </testcase>
+  <testcase name="testProviderInit" classname="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest" time="0.01"/>
+  <testcase name="testDOMAndXMLObjectSourceDropOnMutateAttribute" classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" time="0.001"/>
+  <testcase name="testDOMAndXMLObjectSourceDropOnMutateChildElements" classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" time="0.0"/>
+  <testcase name="testDOMAndXMLObjectSourceDropOnMutateContent" classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" time="0.0"/>
+  <testcase name="testUnmarshallingWithAttributes" classname="org.opensaml.core.xml.tests.UnmarshallingTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithChildElements" classname="org.opensaml.core.xml.tests.UnmarshallingTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithElementContent" classname="org.opensaml.core.xml.tests.UnmarshallingTest" time="0.001"/>
+  <testcase name="testAttributeMap" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.001"/>
+  <testcase name="testAttributeMapOps" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.002"/>
+  <testcase name="testChangePropagationInList" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.001"/>
+  <testcase name="testComplexUnmarshallInList" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.001"/>
+  <testcase name="testGlobalIDRegistration" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.002"/>
+  <testcase name="testListOpChangePropagation" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.001"/>
+  <testcase name="testSimpleUnmarshall" classname="org.opensaml.core.xml.tests.IDAttributeTest" time="0.0"/>
+  <testcase name="testUnmarshallingWithCDATAInElementContentDefaults" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithCDATAInElementContentInsecure" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithCommentBetweenChildElementsDefaults" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithCommentBetweenChildElementsInsecure" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithCommentInElementContentDefaults" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.001"/>
+  <testcase name="testUnmarshallingWithCommentInElementContentInsecure" classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.0"/>
+  <testcase name="testMarshallingExistingEmptyDocument" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.0"/>
+  <testcase name="testMarshallingReplaceDocumentRoot" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.0"/>
+  <testcase name="testMarshallingWithAttributes" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.017"/>
+  <testcase name="testMarshallingWithChildElements" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.003"/>
+  <testcase name="testMarshallingWithElementContent" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.004"/>
+  <testcase name="testMarshallingXMLFragment" classname="org.opensaml.core.xml.tests.MarshallingTest" time="0.004"/>
+  <testcase name="testNSDeclaration" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testNonVisibleNamespacePrefixes" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.001"/>
+  <testcase name="testObjectName" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testObjectType" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testQNameAttributeValue" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testQNameElementContent" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testQualifiedAttributes" classname="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.0"/>
+  <testcase name="testMarshallNil" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.003"/>
+  <testcase name="testMarshallNoNamespaceSchemaLocation" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.003"/>
+  <testcase name="testMarshallSchemaLocation" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.002"/>
+  <testcase name="testUnmarshallNil" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.001"/>
+  <testcase name="testUnmarshallNoNamespaceSchemaLocation" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.0"/>
+  <testcase name="testUnmarshallNoNil" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.0"/>
+  <testcase name="testUnmarshallSchemaLocation" classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.001"/>
+  <testcase name="testUnmarshallUnknownContent" classname="org.opensaml.core.xml.tests.ElementProxyTest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSQNameTest" time="0.003"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSQNameTest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" time="0.003"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" time="0.003"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSURITest" time="0.003"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSURITest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" time="0.003"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" time="0.0"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" time="0.004"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" time="0.002"/>
+  <testcase name="testUnmarshallCanonical" classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" time="0.001"/>
+  <testcase name="testUnmarshallNoFractional" classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" time="0.001"/>
+  <testcase name="testMarshall" classname="org.opensaml.core.xml.schema.impl.XSStringTest" time="0.002"/>
+  <testcase name="testUnmarshall" classname="org.opensaml.core.xml.schema.impl.XSStringTest" time="0.001"/>
+  <testcase name="buildTargetFileFromKey" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="buildTargetFileFromKeyWithIntermediateDirs" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="checkCheckModifyTimeTracking" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="2.012">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - Target file with key 'bar' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bar
+]]></system-out>
+  </testcase>
+  <testcase name="ctorBaseDirPathExistsButNotADirectory" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="ctorCreateDirectory" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="ctorEmptyPathString" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="ctorPathTrimming" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="ctorRelativeDir" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="emptyDir" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.003">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="iterator" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.006">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+WARN  FilesystemLoadSaveManager - Target file with key 'foo' was removed since iterator creation, skipping
+]]></system-out>
+  </testcase>
+  <testcase name="saveLoadUpdateRemove[false](1)" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.024">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+]]></system-out>
+  </testcase>
+  <testcase name="saveLoadUpdateRemove[true](2)" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.024">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+]]></system-out>
+  </testcase>
+  <testcase name="saveLoadUpdateRemoveWithIntermediateDirs[false](1)" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.029">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bo/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+]]></system-out>
+  </testcase>
+  <testcase name="saveLoadUpdateRemoveWithIntermediateDirs[true](2)" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.024">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bo/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+]]></system-out>
+  </testcase>
+  <testcase name="targetExistsButIsNotAFile" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="targetKeyIsEmpty" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="targetKeyIsNull" classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="0.0">
+    <system-out><![CDATA[DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+]]></system-out>
+  </testcase>
+  <testcase name="basic" classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" time="0.004"/>
+  <testcase name="sourceTooShort" classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" time="0.001">
+    <system-out><![CDATA[WARN  SegmentingIntermediateDirectoryStrategy - Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+]]></system-out>
+  </testcase>
+  <testcase name="checkCheckModifyTimeTracking" classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" time="1.002">
+    <system-out><![CDATA[DEBUG MapLoadSaveManager - Target data with key 'foo' does not exist
+DEBUG MapLoadSaveManager - Target data with key 'foo' has not been modified since the last request, returning null
+DEBUG MapLoadSaveManager - Target data with key 'foo' has not been modified since the last request, returning null
+DEBUG MapLoadSaveManager - Target data with key 'foo' does not exist
+DEBUG MapLoadSaveManager - Target data with key 'bar' has not been modified since the last request, returning null
+]]></system-out>
+  </testcase>
+  <testcase name="emptyMap" classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" time="0.001"/>
+  <testcase name="iterator" classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" time="0.0"/>
+  <testcase name="saveLoadUpdateRemove" classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" time="0.001">
+    <system-out><![CDATA[DEBUG MapLoadSaveManager - Target data with key 'bogus' does not exist
+]]></system-out>
+  </testcase>
+</testsuite>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/TestSuite-output.txt b/opensaml-core-impl/target/surefire-reports/TestSuite-output.txt
new file mode 100644
index 000000000..a64b323f2
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/TestSuite-output.txt
@@ -0,0 +1,87 @@
+16:01:09,744 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.13
+16:01:09,746 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - No custom configurators were discovered as a service.
+16:01:09,746 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:01:09,747 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
+16:01:09,756 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
+16:01:09,756 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
+16:01:09,764 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 10 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
+16:01:09,764 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:01:09,765 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
+16:01:09,768 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-impl/target/test-classes/logback-test.xml]
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 12
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 16
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - <level> element is deprecated. Near [level] on line 21
+16:01:09,826 |-WARN in ch.qos.logback.classic.joran.action.LevelAction - Please use "level" attribute within <logger> or <root> elements instead.
+16:01:09,868 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
+16:01:09,868 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
+16:01:09,885 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml.core.xml.persist level set to DEBUG
+16:01:09,885 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - org.opensaml level set to WARN
+16:01:09,886 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
+16:01:09,886 |-INFO in ch.qos.logback.classic.model.processor.LevelModelHandler - ROOT level set to WARN
+16:01:09,886 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor at 21de60b4 - End of configuration.
+16:01:09,886 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator at c267ef4 - Registering current configuration as safe fallback point
+16:01:09,886 |-INFO in ch.qos.logback.classic.util.ContextInitializer at 1700915 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 121 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
+
+ERROR BasicParserPool - XML Parsing Error
+ERROR XMLConfigurator - Invalid configuration file: Unable to parse inputstream, it contained invalid XML
+ERROR XMLConfigurator - Cannot create instance of foo: foo
+ERROR XMLConfigurator - Error initializing object provier [xt:ObjectProvider: null]: Cannot create instance of foo
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+DEBUG FilesystemLoadSaveManager - Target file with key 'bar' has not been modified since the last request, returning null: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bar
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - Target file with key 'foo' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/foo
+WARN  FilesystemLoadSaveManager - Target file with key 'foo' was removed since iterator creation, skipping
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bo/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManager - XMLObject contained 0 XMLObjectSource instances, persisting marshalled object
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManager - Target file with key 'bogus' does not exist, path: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/bo/bogus
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManager - XMLObject contained 1 XMLObjectSource instance, persisting existing byte[]
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+DEBUG FilesystemLoadSaveManagerTest - Using base directory: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test
+WARN  SegmentingIntermediateDirectoryStrategy - Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+DEBUG MapLoadSaveManager - Target data with key 'foo' does not exist
+DEBUG MapLoadSaveManager - Target data with key 'foo' has not been modified since the last request, returning null
+DEBUG MapLoadSaveManager - Target data with key 'foo' has not been modified since the last request, returning null
+DEBUG MapLoadSaveManager - Target data with key 'foo' does not exist
+DEBUG MapLoadSaveManager - Target data with key 'bar' has not been modified since the last request, returning null
+DEBUG MapLoadSaveManager - Target data with key 'bogus' does not exist
diff --git a/opensaml-core-impl/target/surefire-reports/TestSuite.txt b/opensaml-core-impl/target/surefire-reports/TestSuite.txt
new file mode 100644
index 000000000..ef0aced1c
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/TestSuite.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: TestSuite
+-------------------------------------------------------------------------------
+Tests run: 105, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.623 s -- in TestSuite
diff --git a/opensaml-core-impl/target/surefire-reports/bullet_point.png b/opensaml-core-impl/target/surefire-reports/bullet_point.png
new file mode 100644
index 000000000..176e6d5b3
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/bullet_point.png differ
diff --git a/opensaml-core-impl/target/surefire-reports/collapseall.gif b/opensaml-core-impl/target/surefire-reports/collapseall.gif
new file mode 100644
index 000000000..a2d80a904
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/collapseall.gif differ
diff --git a/opensaml-core-impl/target/surefire-reports/emailable-report.html b/opensaml-core-impl/target/surefire-reports/emailable-report.html
new file mode 100644
index 000000000..12f5563ed
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/emailable-report.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="https://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<title>TestNG Report</title>
+<style type="text/css">table {margin-bottom:10px;border-collapse:collapse;empty-cells:show}th,td {border:1px solid #009;padding:.25em .5em}th {vertical-align:bottom}td {vertical-align:top}table a {font-weight:bold}.stripe td {background-color: #E6EBF9}.num {text-align:right}.passedodd td {background-color: #3F3}.passedeven td {background-color: #0A0}.skippedodd td {background-color: #DDD}.skippedeven td {background-color: #CCC}.failedodd td,.attn {background-color: #F33}.failedeven td,.s [...]
+</head>
+<body>
+<table>
+<tr><th>Test</th><th># Passed</th><th># Skipped</th><th># Retried</th><th># Failed</th><th>Time (ms)</th><th>Included Groups</th><th>Excluded Groups</th></tr>
+<tr><th colspan="8">Surefire suite</th></tr>
+<tr><td><a href="#t0">Surefire test</a></td><td class="num">105</td><td class="num">0</td><td class="num">0</td><td class="num">0</td><td class="num">3,411</td><td></td><td></td></tr>
+</table>
+<table id='summary'><thead><tr><th>Class</th><th>Method</th><th>Start</th><th>Time (ms)</th></tr></thead><tbody><tr><th colspan="4">Surefire suite</th></tr></tbody><tbody id="t0"><tr><th colspan="4">Surefire test — passed</th></tr><tr class="passedeven"><td rowspan="4">org.opensaml.core.xml.config.tests.ConfigurationTest</td><td><a href="#m0">testIDAttributeConfiguration</a></td><td rowspan="1">1707512470847</td><td rowspan="1">6</td></tr><tr class="passedeven"><td><a href="#m1">te [...]
+</table>
+<h2>Surefire test</h2><h3 id="m0">org.opensaml.core.xml.config.tests.ConfigurationTest#testIDAttributeConfiguration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m1">org.opensaml.core.xml.config.tests.ConfigurationTest#testIDAttributeRegistration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m2">org.opensaml.core.xml.config.tests.ConfigurationTest#testInvalidConfiguration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m3">org.opensaml.core.xml.config.tests.ConfigurationTest#testObjectProviderConfiguration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m4">org.opensaml.core.xml.config.tests.InitializationServiceTest#testProviderInit</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m5">org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest#testProviderInit</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m6">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#buildTargetFileFromKey</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m7">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#buildTargetFileFromKeyWithIntermediateDirs</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m8">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#checkCheckModifyTimeTracking</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m9">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#ctorBaseDirPathExistsButNotADirectory</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">net.shibboleth.shared.logic.ConstraintViolationException: Existing base directory path was not a directory
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:250)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:125)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory(FilesystemLoadSaveManagerTest.java:345)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m10">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#ctorCreateDirectory</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m11">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#ctorEmptyPathString</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">net.shibboleth.shared.logic.ConstraintViolationException: Base directory string instance was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorEmptyPathString(FilesystemLoadSaveManagerTest.java:333)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m12">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#ctorPathTrimming</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m13">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#ctorRelativeDir</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">net.shibboleth.shared.logic.ConstraintViolationException: Base directory specified was not an absolute path
+	at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:248)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorRelativeDir(FilesystemLoadSaveManagerTest.java:338)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m14">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#emptyDir</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m15">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#iterator</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m16">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#saveLoadUpdateRemove</h3><table class="result"><tr class="param"><th>Parameter #1</th></tr><tr class="param stripe"><td>true</td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m17">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#saveLoadUpdateRemove</h3><table class="result"><tr class="param"><th>Parameter #1</th></tr><tr class="param stripe"><td>false</td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m18">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#saveLoadUpdateRemoveWithIntermediateDirs</h3><table class="result"><tr class="param"><th>Parameter #1</th></tr><tr class="param stripe"><td>true</td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m19">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#saveLoadUpdateRemoveWithIntermediateDirs</h3><table class="result"><tr class="param"><th>Parameter #1</th></tr><tr class="param stripe"><td>false</td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m20">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#targetExistsButIsNotAFile</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">java.io.IOException: Path exists based on specified key, but is not a file: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/abc
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:431)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile(FilesystemLoadSaveManagerTest.java:295)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m21">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#targetKeyIsEmpty</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsEmpty(FilesystemLoadSaveManagerTest.java:310)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m22">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest#targetKeyIsNull</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+	at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+	at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+	at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsNull(FilesystemLoadSaveManagerTest.java:305)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m23">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest#checkCheckModifyTimeTracking</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m24">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest#emptyMap</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m25">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest#iterator</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m26">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest#saveLoadUpdateRemove</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m27">org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest#basic</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m28">org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest#sourceTooShort</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">org.opensaml.core.xml.XMLRuntimeException: Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategy.apply(SegmentingIntermediateDirectoryStrategy.java:84)
+	at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.sourceTooShort(SegmentingIntermediateDirectoryStrategyTest.java:49)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m29">org.opensaml.core.xml.schema.impl.XSBase64BinaryTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m30">org.opensaml.core.xml.schema.impl.XSBase64BinaryTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m31">org.opensaml.core.xml.schema.impl.XSBooleanTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m32">org.opensaml.core.xml.schema.impl.XSBooleanTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m33">org.opensaml.core.xml.schema.impl.XSDateTimeTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m34">org.opensaml.core.xml.schema.impl.XSDateTimeTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m35">org.opensaml.core.xml.schema.impl.XSDateTimeTest#testUnmarshallCanonical</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m36">org.opensaml.core.xml.schema.impl.XSDateTimeTest#testUnmarshallNoFractional</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m37">org.opensaml.core.xml.schema.impl.XSIntegerTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m38">org.opensaml.core.xml.schema.impl.XSIntegerTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m39">org.opensaml.core.xml.schema.impl.XSQNameTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m40">org.opensaml.core.xml.schema.impl.XSQNameTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m41">org.opensaml.core.xml.schema.impl.XSStringTest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m42">org.opensaml.core.xml.schema.impl.XSStringTest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m43">org.opensaml.core.xml.schema.impl.XSURITest#testMarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m44">org.opensaml.core.xml.schema.impl.XSURITest#testUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m45">org.opensaml.core.xml.tests.AbstractXMLObjectTest#testDOMAndXMLObjectSourceDropOnMutateAttribute</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m46">org.opensaml.core.xml.tests.AbstractXMLObjectTest#testDOMAndXMLObjectSourceDropOnMutateChildElements</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m47">org.opensaml.core.xml.tests.AbstractXMLObjectTest#testDOMAndXMLObjectSourceDropOnMutateContent</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m48">org.opensaml.core.xml.tests.ElementProxyTest#testUnmarshallUnknownContent</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m49">org.opensaml.core.xml.tests.IDAttributeTest#testAttributeMap</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m50">org.opensaml.core.xml.tests.IDAttributeTest#testAttributeMapOps</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m51">org.opensaml.core.xml.tests.IDAttributeTest#testChangePropagationInList</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m52">org.opensaml.core.xml.tests.IDAttributeTest#testComplexUnmarshallInList</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m53">org.opensaml.core.xml.tests.IDAttributeTest#testGlobalIDRegistration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m54">org.opensaml.core.xml.tests.IDAttributeTest#testListOpChangePropagation</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m55">org.opensaml.core.xml.tests.IDAttributeTest#testSimpleUnmarshall</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m56">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingExistingEmptyDocument</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m57">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingReplaceDocumentRoot</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m58">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingWithAttributes</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m59">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingWithChildElements</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m60">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingWithElementContent</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m61">org.opensaml.core.xml.tests.MarshallingTest#testMarshallingXMLFragment</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m62">org.opensaml.core.xml.tests.NamespaceManagerTest#testNSDeclaration</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m63">org.opensaml.core.xml.tests.NamespaceManagerTest#testNonVisibleNamespacePrefixes</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m64">org.opensaml.core.xml.tests.NamespaceManagerTest#testObjectName</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m65">org.opensaml.core.xml.tests.NamespaceManagerTest#testObjectType</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m66">org.opensaml.core.xml.tests.NamespaceManagerTest#testQNameAttributeValue</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m67">org.opensaml.core.xml.tests.NamespaceManagerTest#testQNameElementContent</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m68">org.opensaml.core.xml.tests.NamespaceManagerTest#testQualifiedAttributes</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m69">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCDATAInElementContentDefaults</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m70">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCDATAInElementContentInsecure</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">org.opensaml.core.xml.io.UnmarshallingException: Saw illegal CDATA node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:143)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure(UnmarshallingSecurityTest.java:110)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m71">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCommentBetweenChildElementsDefaults</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m72">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCommentBetweenChildElementsInsecure</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure(UnmarshallingSecurityTest.java:142)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m73">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCommentInElementContentDefaults</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m74">org.opensaml.core.xml.tests.UnmarshallingSecurityTest#testUnmarshallingWithCommentInElementContentInsecure</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+	at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+	at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure(UnmarshallingSecurityTest.java:78)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m75">org.opensaml.core.xml.tests.UnmarshallingTest#testUnmarshallingWithAttributes</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m76">org.opensaml.core.xml.tests.UnmarshallingTest#testUnmarshallingWithChildElements</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m77">org.opensaml.core.xml.tests.UnmarshallingTest#testUnmarshallingWithElementContent</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m78">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testMarshallNil</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m79">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testMarshallNoNamespaceSchemaLocation</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m80">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testMarshallSchemaLocation</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m81">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testUnmarshallNil</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m82">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testUnmarshallNoNamespaceSchemaLocation</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m83">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testUnmarshallNoNil</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m84">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest#testUnmarshallSchemaLocation</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m85">org.opensaml.core.xml.util.tests.AttributeMapTest#testAttributeMapQualifiedAttributes</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m86">org.opensaml.core.xml.util.tests.AttributeMapTest#testClear</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m87">org.opensaml.core.xml.util.tests.AttributeMapTest#testQNameAttributeValueAsQName</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m88">org.opensaml.core.xml.util.tests.AttributeMapTest#testQNameAttributeValueAsString</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m89">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest#testAdd</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m90">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest#testRemove</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m91">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest#testSet</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m92">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest#testSublist</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m93">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest#testAdd</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m94">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest#testClear</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m95">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest#testIterator</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m96">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest#testRemove</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m97">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest#testSet</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m98">org.opensaml.core.xml.util.tests.XMLObjectSourceTest#testBadCtorParams</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m99">org.opensaml.core.xml.util.tests.XMLObjectSourceTest#testGetterAndHashCodeAndEquals</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m100">org.opensaml.core.xml.util.tests.XMLObjectSupportTest#testBuildXMLObject</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m101">org.opensaml.core.xml.util.tests.XMLObjectSupportTest#testXMLObjectCloneInputMarshalling</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m102">org.opensaml.core.xml.util.tests.XMLObjectSupportTest#testXMLObjectCloneWithDropDOM</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m103">org.opensaml.core.xml.util.tests.XMLObjectSupportTest#testXMLObjectCloneWithRootInNewDocument</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m104">org.opensaml.core.xml.util.tests.XMLObjectSupportTest#testXMLObjectCloneWithUnrootedDOM</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+</body>
+</html>
diff --git a/opensaml-core-impl/target/surefire-reports/failed.png b/opensaml-core-impl/target/surefire-reports/failed.png
new file mode 100644
index 000000000..c117be59a
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/failed.png differ
diff --git a/opensaml-core-impl/target/surefire-reports/index.html b/opensaml-core-impl/target/surefire-reports/index.html
new file mode 100644
index 000000000..a57d21f33
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/index.html
@@ -0,0 +1,3145 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+  <meta charset='utf-8'>
+  <title>TestNG reports</title>
+
+    <link type="text/css" href="testng-reports1.css" rel="stylesheet" id="ultra" />
+    <link type="text/css" href="testng-reports.css" rel="stylesheet" id="retro" disabled="false"/>
+    <script type="text/javascript" src="jquery-3.6.0.min.js"></script>
+    <script type="text/javascript" src="testng-reports.js"></script>
+    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
+    <script type='text/javascript'>
+      google.load('visualization', '1', {packages:['table']});
+      google.setOnLoadCallback(drawTable);
+      var suiteTableInitFunctions = new Array();
+      var suiteTableData = new Array();
+    </script>
+    <!--
+      <script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.16.custom.min.js"></script>
+     -->
+  </head>
+
+  <body>    <div class="top-banner-root">
+      <span class="top-banner-title-font">Test results</span>
+      <button id="button" class="button">Switch Retro Theme</button> <!-- button -->
+      <br/>
+      <span class="top-banner-font-1">1 suite</span>
+    </div> <!-- top-banner-root -->
+    <div class="navigator-root">
+      <div class="navigator-suite-header">
+        <span>All suites</span>
+        <a href="#" title="Collapse/expand all the suites" class="collapse-all-link">
+          <img src="collapseall.gif" class="collapse-all-icon">
+          </img> <!-- collapse-all-icon -->
+        </a> <!-- collapse-all-link -->
+      </div> <!-- navigator-suite-header -->
+      <div class="suite">
+        <div class="rounded-window">
+          <div class="suite-header light-rounded-window-top">
+            <a href="#" panel-name="suite-Surefire_suite" class="navigator-link">
+              <span class="suite-name border-passed">Surefire suite</span>
+            </a> <!-- navigator-link -->
+          </div> <!-- suite-header light-rounded-window-top -->
+          <div class="navigator-suite-content">
+            <div class="suite-section-title">
+              <span>Info</span>
+            </div> <!-- suite-section-title -->
+            <div class="suite-section-content">
+              <ul>
+                <li>
+                  <a href="#" panel-name="test-xml-Surefire_suite" class="navigator-link ">
+                    <span>[unset file name]</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="testlist-Surefire_suite" class="navigator-link ">
+                    <span class="test-stats">1 test</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="group-Surefire_suite" class="navigator-link ">
+                    <span>0 groups</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="times-Surefire_suite" class="navigator-link ">
+                    <span>Times</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="reporter-Surefire_suite" class="navigator-link ">
+                    <span>Reporter output</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="ignored-methods-Surefire_suite" class="navigator-link ">
+                    <span>Ignored methods</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="chronological-Surefire_suite" class="navigator-link ">
+                    <span>Chronological view</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+              </ul>
+            </div> <!-- suite-section-content -->
+            <div class="result-section">
+              <div class="suite-section-title">
+                <span>Results</span>
+              </div> <!-- suite-section-title -->
+              <div class="suite-section-content">
+                <ul>
+                  <li>
+                    <span class="method-stats">105 methods,   105 passed</span>
+                  </li>
+                  <li>
+                    <span class="method-list-title passed">Passed methods</span>
+                    <span class="show-or-hide-methods passed">
+                      <a href="#" panel-name="suite-Surefire_suite" class="hide-methods passed suite-Surefire_suite"> (hide)</a> <!-- hide-methods passed suite-Surefire_suite -->
+                      <a href="#" panel-name="suite-Surefire_suite" class="show-methods passed suite-Surefire_suite"> (show)</a> <!-- show-methods passed suite-Surefire_suite -->
+                    </span>
+                    <div class="method-list-content passed suite-Surefire_suite">
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" class="method navigator-link" hash-for-method="basic">basic</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="buildTargetFileFromKey">buildTargetFileFromKey</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="buildTargetFileFromKeyWithIntermediateDirs">buildTargetFileFromKeyWithIntermediateDirs</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" class="method navigator-link" hash-for-method="checkCheckModifyTimeTracking">checkCheckModifyTimeTracking</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="checkCheckModifyTimeTracking">checkCheckModifyTimeTracking</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="ctorBaseDirPathExistsButNotADirectory">ctorBaseDirPathExistsButNotADirectory</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="ctorCreateDirectory">ctorCreateDirectory</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="ctorEmptyPathString">ctorEmptyPathString</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="ctorPathTrimming">ctorPathTrimming</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="ctorRelativeDir">ctorRelativeDir</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="emptyDir">emptyDir</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" class="method navigator-link" hash-for-method="emptyMap">emptyMap</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="iterator">iterator</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" class="method navigator-link" hash-for-method="iterator">iterator</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="saveLoadUpdateRemove(true)">saveLoadUpdateRemove(true)</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" class="method navigator-link" hash-for-method="saveLoadUpdateRemove">saveLoadUpdateRemove</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="saveLoadUpdateRemove(false)">saveLoadUpdateRemove(false)</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="saveLoadUpdateRemoveWithIntermediateDirs(true)">saveLoadUpdateRemoveWithIntermediateDirs(true)</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="saveLoadUpdateRemoveWithIntermediateDirs(false)">saveLoadUpdateRemoveWithIntermediateDirs(false)</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" class="method navigator-link" hash-for-method="sourceTooShort">sourceTooShort</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="targetExistsButIsNotAFile">targetExistsButIsNotAFile</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="targetKeyIsEmpty">targetKeyIsEmpty</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" class="method navigator-link" hash-for-method="targetKeyIsNull">targetKeyIsNull</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testAdd">testAdd</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testAdd">testAdd</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testAttributeMap">testAttributeMap</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testAttributeMapOps">testAttributeMapOps</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.AttributeMapTest" class="method navigator-link" hash-for-method="testAttributeMapQualifiedAttributes">testAttributeMapQualifiedAttributes</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" class="method navigator-link" hash-for-method="testBadCtorParams">testBadCtorParams</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" class="method navigator-link" hash-for-method="testBuildXMLObject">testBuildXMLObject</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testChangePropagationInList">testChangePropagationInList</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testClear">testClear</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.AttributeMapTest" class="method navigator-link" hash-for-method="testClear">testClear</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testComplexUnmarshallInList">testComplexUnmarshallInList</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.AbstractXMLObjectTest" class="method navigator-link" hash-for-method="testDOMAndXMLObjectSourceDropOnMutateAttribute">testDOMAndXMLObjectSourceDropOnMutateAttribute</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.AbstractXMLObjectTest" class="method navigator-link" hash-for-method="testDOMAndXMLObjectSourceDropOnMutateChildElements">testDOMAndXMLObjectSourceDropOnMutateChildElements</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.AbstractXMLObjectTest" class="method navigator-link" hash-for-method="testDOMAndXMLObjectSourceDropOnMutateContent">testDOMAndXMLObjectSourceDropOnMutateContent</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" class="method navigator-link" hash-for-method="testGetterAndHashCodeAndEquals">testGetterAndHashCodeAndEquals</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testGlobalIDRegistration">testGlobalIDRegistration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.ConfigurationTest" class="method navigator-link" hash-for-method="testIDAttributeConfiguration">testIDAttributeConfiguration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.ConfigurationTest" class="method navigator-link" hash-for-method="testIDAttributeRegistration">testIDAttributeRegistration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.ConfigurationTest" class="method navigator-link" hash-for-method="testInvalidConfiguration">testInvalidConfiguration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testIterator">testIterator</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testListOpChangePropagation">testListOpChangePropagation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSIntegerTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSQNameTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSBooleanTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSStringTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSDateTimeTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSURITest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" class="method navigator-link" hash-for-method="testMarshall">testMarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testMarshallNil">testMarshallNil</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testMarshallNoNamespaceSchemaLocation">testMarshallNoNamespaceSchemaLocation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testMarshallSchemaLocation">testMarshallSchemaLocation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingExistingEmptyDocument">testMarshallingExistingEmptyDocument</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingReplaceDocumentRoot">testMarshallingReplaceDocumentRoot</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingWithAttributes">testMarshallingWithAttributes</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingWithChildElements">testMarshallingWithChildElements</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingWithElementContent">testMarshallingWithElementContent</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.MarshallingTest" class="method navigator-link" hash-for-method="testMarshallingXMLFragment">testMarshallingXMLFragment</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testNSDeclaration">testNSDeclaration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testNonVisibleNamespacePrefixes">testNonVisibleNamespacePrefixes</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testObjectName">testObjectName</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.ConfigurationTest" class="method navigator-link" hash-for-method="testObjectProviderConfiguration">testObjectProviderConfiguration</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testObjectType">testObjectType</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.InitializationServiceTest" class="method navigator-link" hash-for-method="testProviderInit">testProviderInit</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest" class="method navigator-link" hash-for-method="testProviderInit">testProviderInit</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testQNameAttributeValue">testQNameAttributeValue</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.AttributeMapTest" class="method navigator-link" hash-for-method="testQNameAttributeValueAsQName">testQNameAttributeValueAsQName</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.AttributeMapTest" class="method navigator-link" hash-for-method="testQNameAttributeValueAsString">testQNameAttributeValueAsString</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testQNameElementContent">testQNameElementContent</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.NamespaceManagerTest" class="method navigator-link" hash-for-method="testQualifiedAttributes">testQualifiedAttributes</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testRemove">testRemove</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testRemove">testRemove</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testSet">testSet</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testSet">testSet</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.IDAttributeTest" class="method navigator-link" hash-for-method="testSimpleUnmarshall">testSimpleUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" class="method navigator-link" hash-for-method="testSublist">testSublist</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSIntegerTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSDateTimeTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSStringTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSQNameTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSBooleanTest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSURITest" class="method navigator-link" hash-for-method="testUnmarshall">testUnmarshall</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSDateTimeTest" class="method navigator-link" hash-for-method="testUnmarshallCanonical">testUnmarshallCanonical</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testUnmarshallNil">testUnmarshallNil</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.schema.impl.XSDateTimeTest" class="method navigator-link" hash-for-method="testUnmarshallNoFractional">testUnmarshallNoFractional</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testUnmarshallNoNamespaceSchemaLocation">testUnmarshallNoNamespaceSchemaLocation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testUnmarshallNoNil">testUnmarshallNoNil</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" class="method navigator-link" hash-for-method="testUnmarshallSchemaLocation">testUnmarshallSchemaLocation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.ElementProxyTest" class="method navigator-link" hash-for-method="testUnmarshallUnknownContent">testUnmarshallUnknownContent</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingTest" class="method navigator-link" hash-for-method="testUnmarshallingWithAttributes">testUnmarshallingWithAttributes</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCDATAInElementContentDefaults">testUnmarshallingWithCDATAInElementContentDefaults</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCDATAInElementContentInsecure">testUnmarshallingWithCDATAInElementContentInsecure</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingTest" class="method navigator-link" hash-for-method="testUnmarshallingWithChildElements">testUnmarshallingWithChildElements</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCommentBetweenChildElementsDefaults">testUnmarshallingWithCommentBetweenChildElementsDefaults</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCommentBetweenChildElementsInsecure">testUnmarshallingWithCommentBetweenChildElementsInsecure</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCommentInElementContentDefaults">testUnmarshallingWithCommentInElementContentDefaults</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" class="method navigator-link" hash-for-method="testUnmarshallingWithCommentInElementContentInsecure">testUnmarshallingWithCommentInElementContentInsecure</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.tests.UnmarshallingTest" class="method navigator-link" hash-for-method="testUnmarshallingWithElementContent">testUnmarshallingWithElementContent</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" class="method navigator-link" hash-for-method="testXMLObjectCloneInputMarshalling">testXMLObjectCloneInputMarshalling</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" class="method navigator-link" hash-for-method="testXMLObjectCloneWithDropDOM">testXMLObjectCloneWithDropDOM</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" class="method navigator-link" hash-for-method="testXMLObjectCloneWithRootInNewDocument">testXMLObjectCloneWithRootInNewDocument</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" class="method navigator-link" hash-for-method="testXMLObjectCloneWithUnrootedDOM">testXMLObjectCloneWithUnrootedDOM</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                    </div> <!-- method-list-content passed suite-Surefire_suite -->
+                  </li>
+                </ul>
+              </div> <!-- suite-section-content -->
+            </div> <!-- result-section -->
+          </div> <!-- navigator-suite-content -->
+        </div> <!-- rounded-window -->
+      </div> <!-- suite -->
+    </div> <!-- navigator-root -->
+    <div class="wrapper">
+      <div class="main-panel-root">
+        <div panel-name="suite-Surefire_suite" class="panel Surefire_suite">
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSDateTimeTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallCanonical">
+                  </a> <!-- testUnmarshallCanonical -->
+                  <span class="method-name">testUnmarshallCanonical</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallNoFractional">
+                  </a> <!-- testUnmarshallNoFractional -->
+                  <span class="method-name">testUnmarshallNoFractional</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSBooleanTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testAdd">
+                  </a> <!-- testAdd -->
+                  <span class="method-name">testAdd</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testRemove">
+                  </a> <!-- testRemove -->
+                  <span class="method-name">testRemove</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSet">
+                  </a> <!-- testSet -->
+                  <span class="method-name">testSet</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSublist">
+                  </a> <!-- testSublist -->
+                  <span class="method-name">testSublist</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.util.tests.XMLObjectSourceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testBadCtorParams">
+                  </a> <!-- testBadCtorParams -->
+                  <span class="method-name">testBadCtorParams</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testGetterAndHashCodeAndEquals">
+                  </a> <!-- testGetterAndHashCodeAndEquals -->
+                  <span class="method-name">testGetterAndHashCodeAndEquals</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.UnmarshallingTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithAttributes">
+                  </a> <!-- testUnmarshallingWithAttributes -->
+                  <span class="method-name">testUnmarshallingWithAttributes</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithChildElements">
+                  </a> <!-- testUnmarshallingWithChildElements -->
+                  <span class="method-name">testUnmarshallingWithChildElements</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithElementContent">
+                  </a> <!-- testUnmarshallingWithElementContent -->
+                  <span class="method-name">testUnmarshallingWithElementContent</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.util.tests.AttributeMapTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testAttributeMapQualifiedAttributes">
+                  </a> <!-- testAttributeMapQualifiedAttributes -->
+                  <span class="method-name">testAttributeMapQualifiedAttributes</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testClear">
+                  </a> <!-- testClear -->
+                  <span class="method-name">testClear</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testQNameAttributeValueAsQName">
+                  </a> <!-- testQNameAttributeValueAsQName -->
+                  <span class="method-name">testQNameAttributeValueAsQName</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testQNameAttributeValueAsString">
+                  </a> <!-- testQNameAttributeValueAsString -->
+                  <span class="method-name">testQNameAttributeValueAsString</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.util.tests.XMLObjectSupportTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testBuildXMLObject">
+                  </a> <!-- testBuildXMLObject -->
+                  <span class="method-name">testBuildXMLObject</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testXMLObjectCloneInputMarshalling">
+                  </a> <!-- testXMLObjectCloneInputMarshalling -->
+                  <span class="method-name">testXMLObjectCloneInputMarshalling</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testXMLObjectCloneWithDropDOM">
+                  </a> <!-- testXMLObjectCloneWithDropDOM -->
+                  <span class="method-name">testXMLObjectCloneWithDropDOM</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testXMLObjectCloneWithRootInNewDocument">
+                  </a> <!-- testXMLObjectCloneWithRootInNewDocument -->
+                  <span class="method-name">testXMLObjectCloneWithRootInNewDocument</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testXMLObjectCloneWithUnrootedDOM">
+                  </a> <!-- testXMLObjectCloneWithUnrootedDOM -->
+                  <span class="method-name">testXMLObjectCloneWithUnrootedDOM</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testAdd">
+                  </a> <!-- testAdd -->
+                  <span class="method-name">testAdd</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testClear">
+                  </a> <!-- testClear -->
+                  <span class="method-name">testClear</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testIterator">
+                  </a> <!-- testIterator -->
+                  <span class="method-name">testIterator</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testRemove">
+                  </a> <!-- testRemove -->
+                  <span class="method-name">testRemove</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSet">
+                  </a> <!-- testSet -->
+                  <span class="method-name">testSet</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.AbstractXMLObjectTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testDOMAndXMLObjectSourceDropOnMutateAttribute">
+                  </a> <!-- testDOMAndXMLObjectSourceDropOnMutateAttribute -->
+                  <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateAttribute</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testDOMAndXMLObjectSourceDropOnMutateChildElements">
+                  </a> <!-- testDOMAndXMLObjectSourceDropOnMutateChildElements -->
+                  <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateChildElements</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testDOMAndXMLObjectSourceDropOnMutateContent">
+                  </a> <!-- testDOMAndXMLObjectSourceDropOnMutateContent -->
+                  <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateContent</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSStringTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="buildTargetFileFromKey">
+                  </a> <!-- buildTargetFileFromKey -->
+                  <span class="method-name">buildTargetFileFromKey</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="buildTargetFileFromKeyWithIntermediateDirs">
+                  </a> <!-- buildTargetFileFromKeyWithIntermediateDirs -->
+                  <span class="method-name">buildTargetFileFromKeyWithIntermediateDirs</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="checkCheckModifyTimeTracking">
+                  </a> <!-- checkCheckModifyTimeTracking -->
+                  <span class="method-name">checkCheckModifyTimeTracking</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="ctorBaseDirPathExistsButNotADirectory">
+                  </a> <!-- ctorBaseDirPathExistsButNotADirectory -->
+                  <span class="method-name">ctorBaseDirPathExistsButNotADirectory</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="ctorCreateDirectory">
+                  </a> <!-- ctorCreateDirectory -->
+                  <span class="method-name">ctorCreateDirectory</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="ctorEmptyPathString">
+                  </a> <!-- ctorEmptyPathString -->
+                  <span class="method-name">ctorEmptyPathString</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="ctorPathTrimming">
+                  </a> <!-- ctorPathTrimming -->
+                  <span class="method-name">ctorPathTrimming</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="ctorRelativeDir">
+                  </a> <!-- ctorRelativeDir -->
+                  <span class="method-name">ctorRelativeDir</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="emptyDir">
+                  </a> <!-- emptyDir -->
+                  <span class="method-name">emptyDir</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="iterator">
+                  </a> <!-- iterator -->
+                  <span class="method-name">iterator</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="saveLoadUpdateRemove(true)">
+                  </a> <!-- saveLoadUpdateRemove(true) -->
+                  <span class="method-name">saveLoadUpdateRemove</span>
+                  <span class="parameters">(true)</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="saveLoadUpdateRemove(false)">
+                  </a> <!-- saveLoadUpdateRemove(false) -->
+                  <span class="method-name">saveLoadUpdateRemove</span>
+                  <span class="parameters">(false)</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="saveLoadUpdateRemoveWithIntermediateDirs(true)">
+                  </a> <!-- saveLoadUpdateRemoveWithIntermediateDirs(true) -->
+                  <span class="method-name">saveLoadUpdateRemoveWithIntermediateDirs</span>
+                  <span class="parameters">(true)</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="saveLoadUpdateRemoveWithIntermediateDirs(false)">
+                  </a> <!-- saveLoadUpdateRemoveWithIntermediateDirs(false) -->
+                  <span class="method-name">saveLoadUpdateRemoveWithIntermediateDirs</span>
+                  <span class="parameters">(false)</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="targetExistsButIsNotAFile">
+                  </a> <!-- targetExistsButIsNotAFile -->
+                  <span class="method-name">targetExistsButIsNotAFile</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="targetKeyIsEmpty">
+                  </a> <!-- targetKeyIsEmpty -->
+                  <span class="method-name">targetKeyIsEmpty</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="targetKeyIsNull">
+                  </a> <!-- targetKeyIsNull -->
+                  <span class="method-name">targetKeyIsNull</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="basic">
+                  </a> <!-- basic -->
+                  <span class="method-name">basic</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="sourceTooShort">
+                  </a> <!-- sourceTooShort -->
+                  <span class="method-name">sourceTooShort</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.MarshallingTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingExistingEmptyDocument">
+                  </a> <!-- testMarshallingExistingEmptyDocument -->
+                  <span class="method-name">testMarshallingExistingEmptyDocument</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingReplaceDocumentRoot">
+                  </a> <!-- testMarshallingReplaceDocumentRoot -->
+                  <span class="method-name">testMarshallingReplaceDocumentRoot</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingWithAttributes">
+                  </a> <!-- testMarshallingWithAttributes -->
+                  <span class="method-name">testMarshallingWithAttributes</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingWithChildElements">
+                  </a> <!-- testMarshallingWithChildElements -->
+                  <span class="method-name">testMarshallingWithChildElements</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingWithElementContent">
+                  </a> <!-- testMarshallingWithElementContent -->
+                  <span class="method-name">testMarshallingWithElementContent</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallingXMLFragment">
+                  </a> <!-- testMarshallingXMLFragment -->
+                  <span class="method-name">testMarshallingXMLFragment</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.ElementProxyTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallUnknownContent">
+                  </a> <!-- testUnmarshallUnknownContent -->
+                  <span class="method-name">testUnmarshallUnknownContent</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSURITest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.NamespaceManagerTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testNSDeclaration">
+                  </a> <!-- testNSDeclaration -->
+                  <span class="method-name">testNSDeclaration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testNonVisibleNamespacePrefixes">
+                  </a> <!-- testNonVisibleNamespacePrefixes -->
+                  <span class="method-name">testNonVisibleNamespacePrefixes</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testObjectName">
+                  </a> <!-- testObjectName -->
+                  <span class="method-name">testObjectName</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testObjectType">
+                  </a> <!-- testObjectType -->
+                  <span class="method-name">testObjectType</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testQNameAttributeValue">
+                  </a> <!-- testQNameAttributeValue -->
+                  <span class="method-name">testQNameAttributeValue</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testQNameElementContent">
+                  </a> <!-- testQNameElementContent -->
+                  <span class="method-name">testQNameElementContent</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testQualifiedAttributes">
+                  </a> <!-- testQualifiedAttributes -->
+                  <span class="method-name">testQualifiedAttributes</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.config.tests.ConfigurationTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testIDAttributeConfiguration">
+                  </a> <!-- testIDAttributeConfiguration -->
+                  <span class="method-name">testIDAttributeConfiguration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testIDAttributeRegistration">
+                  </a> <!-- testIDAttributeRegistration -->
+                  <span class="method-name">testIDAttributeRegistration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testInvalidConfiguration">
+                  </a> <!-- testInvalidConfiguration -->
+                  <span class="method-name">testInvalidConfiguration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testObjectProviderConfiguration">
+                  </a> <!-- testObjectProviderConfiguration -->
+                  <span class="method-name">testObjectProviderConfiguration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="checkCheckModifyTimeTracking">
+                  </a> <!-- checkCheckModifyTimeTracking -->
+                  <span class="method-name">checkCheckModifyTimeTracking</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="emptyMap">
+                  </a> <!-- emptyMap -->
+                  <span class="method-name">emptyMap</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="iterator">
+                  </a> <!-- iterator -->
+                  <span class="method-name">iterator</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="saveLoadUpdateRemove">
+                  </a> <!-- saveLoadUpdateRemove -->
+                  <span class="method-name">saveLoadUpdateRemove</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSIntegerTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.schema.impl.XSQNameTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshall">
+                  </a> <!-- testMarshall -->
+                  <span class="method-name">testMarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshall">
+                  </a> <!-- testUnmarshall -->
+                  <span class="method-name">testUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.config.tests.InitializationServiceTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testProviderInit">
+                  </a> <!-- testProviderInit -->
+                  <span class="method-name">testProviderInit</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testProviderInit">
+                  </a> <!-- testProviderInit -->
+                  <span class="method-name">testProviderInit</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.UnmarshallingSecurityTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCDATAInElementContentDefaults">
+                  </a> <!-- testUnmarshallingWithCDATAInElementContentDefaults -->
+                  <span class="method-name">testUnmarshallingWithCDATAInElementContentDefaults</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCDATAInElementContentInsecure">
+                  </a> <!-- testUnmarshallingWithCDATAInElementContentInsecure -->
+                  <span class="method-name">testUnmarshallingWithCDATAInElementContentInsecure</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCommentBetweenChildElementsDefaults">
+                  </a> <!-- testUnmarshallingWithCommentBetweenChildElementsDefaults -->
+                  <span class="method-name">testUnmarshallingWithCommentBetweenChildElementsDefaults</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCommentBetweenChildElementsInsecure">
+                  </a> <!-- testUnmarshallingWithCommentBetweenChildElementsInsecure -->
+                  <span class="method-name">testUnmarshallingWithCommentBetweenChildElementsInsecure</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCommentInElementContentDefaults">
+                  </a> <!-- testUnmarshallingWithCommentInElementContentDefaults -->
+                  <span class="method-name">testUnmarshallingWithCommentInElementContentDefaults</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallingWithCommentInElementContentInsecure">
+                  </a> <!-- testUnmarshallingWithCommentInElementContentInsecure -->
+                  <span class="method-name">testUnmarshallingWithCommentInElementContentInsecure</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallNil">
+                  </a> <!-- testMarshallNil -->
+                  <span class="method-name">testMarshallNil</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallNoNamespaceSchemaLocation">
+                  </a> <!-- testMarshallNoNamespaceSchemaLocation -->
+                  <span class="method-name">testMarshallNoNamespaceSchemaLocation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testMarshallSchemaLocation">
+                  </a> <!-- testMarshallSchemaLocation -->
+                  <span class="method-name">testMarshallSchemaLocation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallNil">
+                  </a> <!-- testUnmarshallNil -->
+                  <span class="method-name">testUnmarshallNil</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallNoNamespaceSchemaLocation">
+                  </a> <!-- testUnmarshallNoNamespaceSchemaLocation -->
+                  <span class="method-name">testUnmarshallNoNamespaceSchemaLocation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallNoNil">
+                  </a> <!-- testUnmarshallNoNil -->
+                  <span class="method-name">testUnmarshallNoNil</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testUnmarshallSchemaLocation">
+                  </a> <!-- testUnmarshallSchemaLocation -->
+                  <span class="method-name">testUnmarshallSchemaLocation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.core.xml.tests.IDAttributeTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="testAttributeMap">
+                  </a> <!-- testAttributeMap -->
+                  <span class="method-name">testAttributeMap</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testAttributeMapOps">
+                  </a> <!-- testAttributeMapOps -->
+                  <span class="method-name">testAttributeMapOps</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testChangePropagationInList">
+                  </a> <!-- testChangePropagationInList -->
+                  <span class="method-name">testChangePropagationInList</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testComplexUnmarshallInList">
+                  </a> <!-- testComplexUnmarshallInList -->
+                  <span class="method-name">testComplexUnmarshallInList</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testGlobalIDRegistration">
+                  </a> <!-- testGlobalIDRegistration -->
+                  <span class="method-name">testGlobalIDRegistration</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testListOpChangePropagation">
+                  </a> <!-- testListOpChangePropagation -->
+                  <span class="method-name">testListOpChangePropagation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="testSimpleUnmarshall">
+                  </a> <!-- testSimpleUnmarshall -->
+                  <span class="method-name">testSimpleUnmarshall</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+        </div> <!-- panel Surefire_suite -->
+        <div panel-name="test-xml-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Surefire suite" verbose="0">
+  <test thread-count="5" name="Surefire test" verbose="0">
+    <classes>
+      <class name="org.opensaml.core.xml.util.tests.AttributeMapTest"/>
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectSupportTest"/>
+      <class name="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest"/>
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest"/>
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectSourceTest"/>
+      <class name="org.opensaml.core.xml.config.tests.InitializationServiceTest"/>
+      <class name="org.opensaml.core.xml.config.tests.ConfigurationTest"/>
+      <class name="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest"/>
+      <class name="org.opensaml.core.xml.tests.AbstractXMLObjectTest"/>
+      <class name="org.opensaml.core.xml.tests.UnmarshallingTest"/>
+      <class name="org.opensaml.core.xml.tests.IDAttributeTest"/>
+      <class name="org.opensaml.core.xml.tests.UnmarshallingSecurityTest"/>
+      <class name="org.opensaml.core.xml.tests.MarshallingTest"/>
+      <class name="org.opensaml.core.xml.tests.NamespaceManagerTest"/>
+      <class name="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest"/>
+      <class name="org.opensaml.core.xml.tests.ElementProxyTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSQNameTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSBooleanTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSIntegerTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSURITest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSDateTimeTest"/>
+      <class name="org.opensaml.core.xml.schema.impl.XSStringTest"/>
+      <class name="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest"/>
+      <class name="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest"/>
+      <class name="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest"/>
+    </classes>
+  </test> <!-- Surefire test -->
+</suite> <!-- Surefire suite -->
+            </pre>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="testlist-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Tests for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <ul>
+              <li>
+                <span class="test-name">Surefire test (26 classes)</span>
+              </li>
+            </ul>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="group-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Groups for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="times-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Times for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="times-div">
+              <script type="text/javascript">
+suiteTableInitFunctions.push('tableData_Surefire_suite');
+function tableData_Surefire_suite() {
+var data = new google.visualization.DataTable();
+data.addColumn('number', 'Number');
+data.addColumn('string', 'Method');
+data.addColumn('string', 'Class');
+data.addColumn('number', 'Time (ms)');
+data.addRows(105);
+data.setCell(0, 0, 0)
+data.setCell(0, 1, 'checkCheckModifyTimeTracking')
+data.setCell(0, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(0, 3, 2013);
+data.setCell(1, 0, 1)
+data.setCell(1, 1, 'checkCheckModifyTimeTracking')
+data.setCell(1, 2, 'org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest')
+data.setCell(1, 3, 1002);
+data.setCell(2, 0, 2)
+data.setCell(2, 1, 'saveLoadUpdateRemoveWithIntermediateDirs')
+data.setCell(2, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(2, 3, 29);
+data.setCell(3, 0, 3)
+data.setCell(3, 1, 'testProviderInit')
+data.setCell(3, 2, 'org.opensaml.core.xml.config.tests.InitializationServiceTest')
+data.setCell(3, 3, 27);
+data.setCell(4, 0, 4)
+data.setCell(4, 1, 'saveLoadUpdateRemove')
+data.setCell(4, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(4, 3, 25);
+data.setCell(5, 0, 5)
+data.setCell(5, 1, 'saveLoadUpdateRemoveWithIntermediateDirs')
+data.setCell(5, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(5, 3, 25);
+data.setCell(6, 0, 6)
+data.setCell(6, 1, 'saveLoadUpdateRemove')
+data.setCell(6, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(6, 3, 24);
+data.setCell(7, 0, 7)
+data.setCell(7, 1, 'testXMLObjectCloneInputMarshalling')
+data.setCell(7, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSupportTest')
+data.setCell(7, 3, 18);
+data.setCell(8, 0, 8)
+data.setCell(8, 1, 'testMarshallingWithAttributes')
+data.setCell(8, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(8, 3, 18);
+data.setCell(9, 0, 9)
+data.setCell(9, 1, 'testProviderInit')
+data.setCell(9, 2, 'org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest')
+data.setCell(9, 3, 10);
+data.setCell(10, 0, 10)
+data.setCell(10, 1, 'testInvalidConfiguration')
+data.setCell(10, 2, 'org.opensaml.core.xml.config.tests.ConfigurationTest')
+data.setCell(10, 3, 8);
+data.setCell(11, 0, 11)
+data.setCell(11, 1, 'testObjectProviderConfiguration')
+data.setCell(11, 2, 'org.opensaml.core.xml.config.tests.ConfigurationTest')
+data.setCell(11, 3, 8);
+data.setCell(12, 0, 12)
+data.setCell(12, 1, 'testIDAttributeConfiguration')
+data.setCell(12, 2, 'org.opensaml.core.xml.config.tests.ConfigurationTest')
+data.setCell(12, 3, 6);
+data.setCell(13, 0, 13)
+data.setCell(13, 1, 'iterator')
+data.setCell(13, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(13, 3, 5);
+data.setCell(14, 0, 14)
+data.setCell(14, 1, 'testMarshall')
+data.setCell(14, 2, 'org.opensaml.core.xml.schema.impl.XSDateTimeTest')
+data.setCell(14, 3, 4);
+data.setCell(15, 0, 15)
+data.setCell(15, 1, 'basic')
+data.setCell(15, 2, 'org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest')
+data.setCell(15, 3, 4);
+data.setCell(16, 0, 16)
+data.setCell(16, 1, 'testMarshall')
+data.setCell(16, 2, 'org.opensaml.core.xml.schema.impl.XSIntegerTest')
+data.setCell(16, 3, 3);
+data.setCell(17, 0, 17)
+data.setCell(17, 1, 'testMarshall')
+data.setCell(17, 2, 'org.opensaml.core.xml.schema.impl.XSQNameTest')
+data.setCell(17, 3, 3);
+data.setCell(18, 0, 18)
+data.setCell(18, 1, 'testMarshall')
+data.setCell(18, 2, 'org.opensaml.core.xml.schema.impl.XSBooleanTest')
+data.setCell(18, 3, 3);
+data.setCell(19, 0, 19)
+data.setCell(19, 1, 'testMarshall')
+data.setCell(19, 2, 'org.opensaml.core.xml.schema.impl.XSStringTest')
+data.setCell(19, 3, 3);
+data.setCell(20, 0, 20)
+data.setCell(20, 1, 'testAttributeMapQualifiedAttributes')
+data.setCell(20, 2, 'org.opensaml.core.xml.util.tests.AttributeMapTest')
+data.setCell(20, 3, 3);
+data.setCell(21, 0, 21)
+data.setCell(21, 1, 'testMarshallingWithElementContent')
+data.setCell(21, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(21, 3, 3);
+data.setCell(22, 0, 22)
+data.setCell(22, 1, 'testMarshallNil')
+data.setCell(22, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(22, 3, 3);
+data.setCell(23, 0, 23)
+data.setCell(23, 1, 'testMarshallingWithChildElements')
+data.setCell(23, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(23, 3, 3);
+data.setCell(24, 0, 24)
+data.setCell(24, 1, 'testMarshall')
+data.setCell(24, 2, 'org.opensaml.core.xml.schema.impl.XSURITest')
+data.setCell(24, 3, 3);
+data.setCell(25, 0, 25)
+data.setCell(25, 1, 'emptyDir')
+data.setCell(25, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(25, 3, 3);
+data.setCell(26, 0, 26)
+data.setCell(26, 1, 'testMarshallingXMLFragment')
+data.setCell(26, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(26, 3, 3);
+data.setCell(27, 0, 27)
+data.setCell(27, 1, 'testMarshall')
+data.setCell(27, 2, 'org.opensaml.core.xml.schema.impl.XSBase64BinaryTest')
+data.setCell(27, 3, 3);
+data.setCell(28, 0, 28)
+data.setCell(28, 1, 'testUnmarshall')
+data.setCell(28, 2, 'org.opensaml.core.xml.schema.impl.XSDateTimeTest')
+data.setCell(28, 3, 2);
+data.setCell(29, 0, 29)
+data.setCell(29, 1, 'testMarshallSchemaLocation')
+data.setCell(29, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(29, 3, 2);
+data.setCell(30, 0, 30)
+data.setCell(30, 1, 'testMarshallNoNamespaceSchemaLocation')
+data.setCell(30, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(30, 3, 2);
+data.setCell(31, 0, 31)
+data.setCell(31, 1, 'testGlobalIDRegistration')
+data.setCell(31, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(31, 3, 2);
+data.setCell(32, 0, 32)
+data.setCell(32, 1, 'testAttributeMap')
+data.setCell(32, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(32, 3, 2);
+data.setCell(33, 0, 33)
+data.setCell(33, 1, 'testUnmarshallNoNil')
+data.setCell(33, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(33, 3, 1);
+data.setCell(34, 0, 34)
+data.setCell(34, 1, 'testObjectType')
+data.setCell(34, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(34, 3, 1);
+data.setCell(35, 0, 35)
+data.setCell(35, 1, 'testDOMAndXMLObjectSourceDropOnMutateAttribute')
+data.setCell(35, 2, 'org.opensaml.core.xml.tests.AbstractXMLObjectTest')
+data.setCell(35, 3, 1);
+data.setCell(36, 0, 36)
+data.setCell(36, 1, 'targetExistsButIsNotAFile')
+data.setCell(36, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(36, 3, 1);
+data.setCell(37, 0, 37)
+data.setCell(37, 1, 'testDOMAndXMLObjectSourceDropOnMutateChildElements')
+data.setCell(37, 2, 'org.opensaml.core.xml.tests.AbstractXMLObjectTest')
+data.setCell(37, 3, 1);
+data.setCell(38, 0, 38)
+data.setCell(38, 1, 'testUnmarshall')
+data.setCell(38, 2, 'org.opensaml.core.xml.schema.impl.XSStringTest')
+data.setCell(38, 3, 1);
+data.setCell(39, 0, 39)
+data.setCell(39, 1, 'testUnmarshallingWithCDATAInElementContentInsecure')
+data.setCell(39, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(39, 3, 1);
+data.setCell(40, 0, 40)
+data.setCell(40, 1, 'testQualifiedAttributes')
+data.setCell(40, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(40, 3, 1);
+data.setCell(41, 0, 41)
+data.setCell(41, 1, 'testUnmarshallingWithCommentBetweenChildElementsInsecure')
+data.setCell(41, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(41, 3, 1);
+data.setCell(42, 0, 42)
+data.setCell(42, 1, 'testUnmarshall')
+data.setCell(42, 2, 'org.opensaml.core.xml.schema.impl.XSBase64BinaryTest')
+data.setCell(42, 3, 1);
+data.setCell(43, 0, 43)
+data.setCell(43, 1, 'testListOpChangePropagation')
+data.setCell(43, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(43, 3, 1);
+data.setCell(44, 0, 44)
+data.setCell(44, 1, 'testUnmarshall')
+data.setCell(44, 2, 'org.opensaml.core.xml.schema.impl.XSQNameTest')
+data.setCell(44, 3, 1);
+data.setCell(45, 0, 45)
+data.setCell(45, 1, 'testUnmarshallingWithCDATAInElementContentDefaults')
+data.setCell(45, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(45, 3, 1);
+data.setCell(46, 0, 46)
+data.setCell(46, 1, 'testRemove')
+data.setCell(46, 2, 'org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest')
+data.setCell(46, 3, 1);
+data.setCell(47, 0, 47)
+data.setCell(47, 1, 'saveLoadUpdateRemove')
+data.setCell(47, 2, 'org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest')
+data.setCell(47, 3, 1);
+data.setCell(48, 0, 48)
+data.setCell(48, 1, 'testDOMAndXMLObjectSourceDropOnMutateContent')
+data.setCell(48, 2, 'org.opensaml.core.xml.tests.AbstractXMLObjectTest')
+data.setCell(48, 3, 1);
+data.setCell(49, 0, 49)
+data.setCell(49, 1, 'testUnmarshallingWithCommentBetweenChildElementsDefaults')
+data.setCell(49, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(49, 3, 1);
+data.setCell(50, 0, 50)
+data.setCell(50, 1, 'targetKeyIsEmpty')
+data.setCell(50, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(50, 3, 1);
+data.setCell(51, 0, 51)
+data.setCell(51, 1, 'testChangePropagationInList')
+data.setCell(51, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(51, 3, 1);
+data.setCell(52, 0, 52)
+data.setCell(52, 1, 'testUnmarshallUnknownContent')
+data.setCell(52, 2, 'org.opensaml.core.xml.tests.ElementProxyTest')
+data.setCell(52, 3, 1);
+data.setCell(53, 0, 53)
+data.setCell(53, 1, 'testQNameAttributeValueAsQName')
+data.setCell(53, 2, 'org.opensaml.core.xml.util.tests.AttributeMapTest')
+data.setCell(53, 3, 1);
+data.setCell(54, 0, 54)
+data.setCell(54, 1, 'sourceTooShort')
+data.setCell(54, 2, 'org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest')
+data.setCell(54, 3, 1);
+data.setCell(55, 0, 55)
+data.setCell(55, 1, 'testBuildXMLObject')
+data.setCell(55, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSupportTest')
+data.setCell(55, 3, 1);
+data.setCell(56, 0, 56)
+data.setCell(56, 1, 'testIterator')
+data.setCell(56, 2, 'org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest')
+data.setCell(56, 3, 1);
+data.setCell(57, 0, 57)
+data.setCell(57, 1, 'testUnmarshallNoFractional')
+data.setCell(57, 2, 'org.opensaml.core.xml.schema.impl.XSDateTimeTest')
+data.setCell(57, 3, 1);
+data.setCell(58, 0, 58)
+data.setCell(58, 1, 'testXMLObjectCloneWithDropDOM')
+data.setCell(58, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSupportTest')
+data.setCell(58, 3, 1);
+data.setCell(59, 0, 59)
+data.setCell(59, 1, 'testNonVisibleNamespacePrefixes')
+data.setCell(59, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(59, 3, 1);
+data.setCell(60, 0, 60)
+data.setCell(60, 1, 'testComplexUnmarshallInList')
+data.setCell(60, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(60, 3, 1);
+data.setCell(61, 0, 61)
+data.setCell(61, 1, 'testUnmarshallingWithAttributes')
+data.setCell(61, 2, 'org.opensaml.core.xml.tests.UnmarshallingTest')
+data.setCell(61, 3, 1);
+data.setCell(62, 0, 62)
+data.setCell(62, 1, 'testUnmarshallNil')
+data.setCell(62, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(62, 3, 1);
+data.setCell(63, 0, 63)
+data.setCell(63, 1, 'testUnmarshallCanonical')
+data.setCell(63, 2, 'org.opensaml.core.xml.schema.impl.XSDateTimeTest')
+data.setCell(63, 3, 1);
+data.setCell(64, 0, 64)
+data.setCell(64, 1, 'testSublist')
+data.setCell(64, 2, 'org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest')
+data.setCell(64, 3, 1);
+data.setCell(65, 0, 65)
+data.setCell(65, 1, 'testUnmarshallingWithElementContent')
+data.setCell(65, 2, 'org.opensaml.core.xml.tests.UnmarshallingTest')
+data.setCell(65, 3, 1);
+data.setCell(66, 0, 66)
+data.setCell(66, 1, 'testUnmarshall')
+data.setCell(66, 2, 'org.opensaml.core.xml.schema.impl.XSURITest')
+data.setCell(66, 3, 1);
+data.setCell(67, 0, 67)
+data.setCell(67, 1, 'testAttributeMapOps')
+data.setCell(67, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(67, 3, 1);
+data.setCell(68, 0, 68)
+data.setCell(68, 1, 'ctorPathTrimming')
+data.setCell(68, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(68, 3, 0);
+data.setCell(69, 0, 69)
+data.setCell(69, 1, 'targetKeyIsNull')
+data.setCell(69, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(69, 3, 0);
+data.setCell(70, 0, 70)
+data.setCell(70, 1, 'testBadCtorParams')
+data.setCell(70, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSourceTest')
+data.setCell(70, 3, 0);
+data.setCell(71, 0, 71)
+data.setCell(71, 1, 'testXMLObjectCloneWithUnrootedDOM')
+data.setCell(71, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSupportTest')
+data.setCell(71, 3, 0);
+data.setCell(72, 0, 72)
+data.setCell(72, 1, 'ctorBaseDirPathExistsButNotADirectory')
+data.setCell(72, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(72, 3, 0);
+data.setCell(73, 0, 73)
+data.setCell(73, 1, 'testUnmarshall')
+data.setCell(73, 2, 'org.opensaml.core.xml.schema.impl.XSIntegerTest')
+data.setCell(73, 3, 0);
+data.setCell(74, 0, 74)
+data.setCell(74, 1, 'testSimpleUnmarshall')
+data.setCell(74, 2, 'org.opensaml.core.xml.tests.IDAttributeTest')
+data.setCell(74, 3, 0);
+data.setCell(75, 0, 75)
+data.setCell(75, 1, 'ctorCreateDirectory')
+data.setCell(75, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(75, 3, 0);
+data.setCell(76, 0, 76)
+data.setCell(76, 1, 'testUnmarshallingWithCommentInElementContentInsecure')
+data.setCell(76, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(76, 3, 0);
+data.setCell(77, 0, 77)
+data.setCell(77, 1, 'testAdd')
+data.setCell(77, 2, 'org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest')
+data.setCell(77, 3, 0);
+data.setCell(78, 0, 78)
+data.setCell(78, 1, 'testIDAttributeRegistration')
+data.setCell(78, 2, 'org.opensaml.core.xml.config.tests.ConfigurationTest')
+data.setCell(78, 3, 0);
+data.setCell(79, 0, 79)
+data.setCell(79, 1, 'testQNameAttributeValue')
+data.setCell(79, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(79, 3, 0);
+data.setCell(80, 0, 80)
+data.setCell(80, 1, 'testMarshallingExistingEmptyDocument')
+data.setCell(80, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(80, 3, 0);
+data.setCell(81, 0, 81)
+data.setCell(81, 1, 'testObjectName')
+data.setCell(81, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(81, 3, 0);
+data.setCell(82, 0, 82)
+data.setCell(82, 1, 'testSet')
+data.setCell(82, 2, 'org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest')
+data.setCell(82, 3, 0);
+data.setCell(83, 0, 83)
+data.setCell(83, 1, 'testUnmarshallingWithChildElements')
+data.setCell(83, 2, 'org.opensaml.core.xml.tests.UnmarshallingTest')
+data.setCell(83, 3, 0);
+data.setCell(84, 0, 84)
+data.setCell(84, 1, 'testNSDeclaration')
+data.setCell(84, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(84, 3, 0);
+data.setCell(85, 0, 85)
+data.setCell(85, 1, 'emptyMap')
+data.setCell(85, 2, 'org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest')
+data.setCell(85, 3, 0);
+data.setCell(86, 0, 86)
+data.setCell(86, 1, 'testSet')
+data.setCell(86, 2, 'org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest')
+data.setCell(86, 3, 0);
+data.setCell(87, 0, 87)
+data.setCell(87, 1, 'buildTargetFileFromKeyWithIntermediateDirs')
+data.setCell(87, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(87, 3, 0);
+data.setCell(88, 0, 88)
+data.setCell(88, 1, 'iterator')
+data.setCell(88, 2, 'org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest')
+data.setCell(88, 3, 0);
+data.setCell(89, 0, 89)
+data.setCell(89, 1, 'testClear')
+data.setCell(89, 2, 'org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest')
+data.setCell(89, 3, 0);
+data.setCell(90, 0, 90)
+data.setCell(90, 1, 'testUnmarshallSchemaLocation')
+data.setCell(90, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(90, 3, 0);
+data.setCell(91, 0, 91)
+data.setCell(91, 1, 'testClear')
+data.setCell(91, 2, 'org.opensaml.core.xml.util.tests.AttributeMapTest')
+data.setCell(91, 3, 0);
+data.setCell(92, 0, 92)
+data.setCell(92, 1, 'ctorEmptyPathString')
+data.setCell(92, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(92, 3, 0);
+data.setCell(93, 0, 93)
+data.setCell(93, 1, 'testRemove')
+data.setCell(93, 2, 'org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest')
+data.setCell(93, 3, 0);
+data.setCell(94, 0, 94)
+data.setCell(94, 1, 'testUnmarshallNoNamespaceSchemaLocation')
+data.setCell(94, 2, 'org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest')
+data.setCell(94, 3, 0);
+data.setCell(95, 0, 95)
+data.setCell(95, 1, 'testUnmarshall')
+data.setCell(95, 2, 'org.opensaml.core.xml.schema.impl.XSBooleanTest')
+data.setCell(95, 3, 0);
+data.setCell(96, 0, 96)
+data.setCell(96, 1, 'testAdd')
+data.setCell(96, 2, 'org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest')
+data.setCell(96, 3, 0);
+data.setCell(97, 0, 97)
+data.setCell(97, 1, 'testMarshallingReplaceDocumentRoot')
+data.setCell(97, 2, 'org.opensaml.core.xml.tests.MarshallingTest')
+data.setCell(97, 3, 0);
+data.setCell(98, 0, 98)
+data.setCell(98, 1, 'testQNameAttributeValueAsString')
+data.setCell(98, 2, 'org.opensaml.core.xml.util.tests.AttributeMapTest')
+data.setCell(98, 3, 0);
+data.setCell(99, 0, 99)
+data.setCell(99, 1, 'testUnmarshallingWithCommentInElementContentDefaults')
+data.setCell(99, 2, 'org.opensaml.core.xml.tests.UnmarshallingSecurityTest')
+data.setCell(99, 3, 0);
+data.setCell(100, 0, 100)
+data.setCell(100, 1, 'testQNameElementContent')
+data.setCell(100, 2, 'org.opensaml.core.xml.tests.NamespaceManagerTest')
+data.setCell(100, 3, 0);
+data.setCell(101, 0, 101)
+data.setCell(101, 1, 'testGetterAndHashCodeAndEquals')
+data.setCell(101, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSourceTest')
+data.setCell(101, 3, 0);
+data.setCell(102, 0, 102)
+data.setCell(102, 1, 'testXMLObjectCloneWithRootInNewDocument')
+data.setCell(102, 2, 'org.opensaml.core.xml.util.tests.XMLObjectSupportTest')
+data.setCell(102, 3, 0);
+data.setCell(103, 0, 103)
+data.setCell(103, 1, 'buildTargetFileFromKey')
+data.setCell(103, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(103, 3, 0);
+data.setCell(104, 0, 104)
+data.setCell(104, 1, 'ctorRelativeDir')
+data.setCell(104, 2, 'org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest')
+data.setCell(104, 3, 0);
+window.suiteTableData['Surefire_suite']= { tableData: data, tableDiv: 'times-div-Surefire_suite'}
+return data;
+}
+              </script>
+              <span class="suite-total-time">Total running time: 3 seconds</span>
+              <div id="times-div-Surefire_suite">
+              </div> <!-- times-div-Surefire_suite -->
+            </div> <!-- times-div -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="reporter-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Reporter output for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="ignored-methods-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">18 ignored methods</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSStringTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSDateTimeTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.MarshallingTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSBooleanTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.ElementProxyTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSURITest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.NamespaceManagerTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSIntegerTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.schema.impl.XSQNameTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.UnmarshallingTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.util.tests.XMLObjectSupportTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.AbstractXMLObjectTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.UnmarshallingSecurityTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.core.xml.tests.IDAttributeTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">initOpenSAML</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="chronological-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Methods in chronological order</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.util.tests.AttributeMapTest</div> <!-- chronological-class-name -->
+              <div class="configuration-suite before">
+                <span class="method-name">initOpenSAML</span>
+                <span class="method-start">0 ms</span>
+              </div> <!-- configuration-suite before -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">581 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">586 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testAttributeMapQualifiedAttributes</span>
+                <span class="method-start">594 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">599 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testClear</span>
+                <span class="method-start">599 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testQNameAttributeValueAsQName</span>
+                <span class="method-start">600 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">600 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">602 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testQNameAttributeValueAsString</span>
+                <span class="method-start">602 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.util.tests.XMLObjectSupportTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">604 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testBuildXMLObject</span>
+                <span class="method-start">604 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testXMLObjectCloneInputMarshalling</span>
+                <span class="method-start">606 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testXMLObjectCloneWithDropDOM</span>
+                <span class="method-start">624 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testXMLObjectCloneWithRootInNewDocument</span>
+                <span class="method-start">625 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testXMLObjectCloneWithUnrootedDOM</span>
+                <span class="method-start">626 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testRemove</span>
+                <span class="method-start">627 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testAdd</span>
+                <span class="method-start">627 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testSublist</span>
+                <span class="method-start">628 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testSet</span>
+                <span class="method-start">628 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testAdd</span>
+                <span class="method-start">630 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testIterator</span>
+                <span class="method-start">631 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testClear</span>
+                <span class="method-start">631 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testRemove</span>
+                <span class="method-start">632 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testSet</span>
+                <span class="method-start">633 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.util.tests.XMLObjectSourceTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testGetterAndHashCodeAndEquals</span>
+                <span class="method-start">634 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testBadCtorParams</span>
+                <span class="method-start">634 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.config.tests.InitializationServiceTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">635 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testProviderInit</span>
+                <span class="method-start">635 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">662 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.config.tests.ConfigurationTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initClass</span>
+                <span class="method-start">663 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">664 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testIDAttributeConfiguration</span>
+                <span class="method-start">664 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">670 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">671 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">671 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">testIDAttributeRegistration</span>
+                <span class="method-start">671 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">672 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testInvalidConfiguration</span>
+                <span class="method-start">672 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">680 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">681 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testObjectProviderConfiguration</span>
+                <span class="method-start">681 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">690 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">690 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testProviderInit</span>
+                <span class="method-start">691 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">701 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.AbstractXMLObjectTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateAttribute</span>
+                <span class="method-start">702 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">702 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateChildElements</span>
+                <span class="method-start">703 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testDOMAndXMLObjectSourceDropOnMutateContent</span>
+                <span class="method-start">704 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.UnmarshallingTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">705 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithAttributes</span>
+                <span class="method-start">706 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithChildElements</span>
+                <span class="method-start">707 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithElementContent</span>
+                <span class="method-start">708 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.IDAttributeTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testAttributeMap</span>
+                <span class="method-start">709 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">709 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testAttributeMapOps</span>
+                <span class="method-start">712 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testChangePropagationInList</span>
+                <span class="method-start">714 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testComplexUnmarshallInList</span>
+                <span class="method-start">716 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testGlobalIDRegistration</span>
+                <span class="method-start">717 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testListOpChangePropagation</span>
+                <span class="method-start">719 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.UnmarshallingSecurityTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">721 ms</span>
+              </div> <!-- configuration-class before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.IDAttributeTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testSimpleUnmarshall</span>
+                <span class="method-start">721 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.UnmarshallingSecurityTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCDATAInElementContentDefaults</span>
+                <span class="method-start">722 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">setup</span>
+                <span class="method-start">722 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCDATAInElementContentInsecure</span>
+                <span class="method-start">723 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCommentBetweenChildElementsDefaults</span>
+                <span class="method-start">724 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCommentBetweenChildElementsInsecure</span>
+                <span class="method-start">725 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCommentInElementContentDefaults</span>
+                <span class="method-start">726 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallingWithCommentInElementContentInsecure</span>
+                <span class="method-start">727 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.MarshallingTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">727 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingExistingEmptyDocument</span>
+                <span class="method-start">728 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingWithAttributes</span>
+                <span class="method-start">728 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingReplaceDocumentRoot</span>
+                <span class="method-start">728 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingWithChildElements</span>
+                <span class="method-start">746 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingWithElementContent</span>
+                <span class="method-start">750 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallingXMLFragment</span>
+                <span class="method-start">754 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.NamespaceManagerTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">758 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">758 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">759 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testNSDeclaration</span>
+                <span class="method-start">759 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testNonVisibleNamespacePrefixes</span>
+                <span class="method-start">759 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">763 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testObjectName</span>
+                <span class="method-start">764 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testObjectType</span>
+                <span class="method-start">764 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">764 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testQNameAttributeValue</span>
+                <span class="method-start">765 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">765 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">766 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testQualifiedAttributes</span>
+                <span class="method-start">766 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testQNameElementContent</span>
+                <span class="method-start">766 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">766 ms</span>
+              </div> <!-- configuration-method before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">767 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testMarshallNil</span>
+                <span class="method-start">768 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallNoNamespaceSchemaLocation</span>
+                <span class="method-start">771 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testMarshallSchemaLocation</span>
+                <span class="method-start">774 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallNil</span>
+                <span class="method-start">776 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallNoNil</span>
+                <span class="method-start">777 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallNoNamespaceSchemaLocation</span>
+                <span class="method-start">777 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallSchemaLocation</span>
+                <span class="method-start">778 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.tests.ElementProxyTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallUnknownContent</span>
+                <span class="method-start">779 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">779 ms</span>
+              </div> <!-- configuration-class before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSQNameTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">780 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">781 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">781 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">784 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">784 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSBooleanTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">785 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">785 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">785 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">788 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">788 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSIntegerTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">789 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">789 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">789 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">792 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">792 ms</span>
+              </div> <!-- configuration-method before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSURITest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">793 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">793 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">793 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">796 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">796 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">797 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">797 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">797 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">800 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">800 ms</span>
+              </div> <!-- configuration-method before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSDateTimeTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">801 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">802 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">803 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">807 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">807 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">809 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallCanonical</span>
+                <span class="method-start">809 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshallNoFractional</span>
+                <span class="method-start">810 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">810 ms</span>
+              </div> <!-- configuration-method before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.schema.impl.XSStringTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">811 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">testMarshall</span>
+                <span class="method-start">811 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">811 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">testUnmarshall</span>
+                <span class="method-start">814 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">814 ms</span>
+              </div> <!-- configuration-method before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</div> <!-- chronological-class-name -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">815 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">816 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">buildTargetFileFromKey</span>
+                <span class="method-start">819 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">819 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">824 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">824 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">buildTargetFileFromKeyWithIntermediateDirs</span>
+                <span class="method-start">824 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">825 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">checkCheckModifyTimeTracking</span>
+                <span class="method-start">825 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2838 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2838 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">ctorBaseDirPathExistsButNotADirectory</span>
+                <span class="method-start">2839 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2839 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2840 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2840 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">ctorCreateDirectory</span>
+                <span class="method-start">2840 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2841 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2841 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">ctorEmptyPathString</span>
+                <span class="method-start">2841 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">ctorPathTrimming</span>
+                <span class="method-start">2842 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2842 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2842 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2843 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2843 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">ctorRelativeDir</span>
+                <span class="method-start">2843 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">emptyDir</span>
+                <span class="method-start">2844 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2844 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2847 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2847 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">iterator</span>
+                <span class="method-start">2848 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2854 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2855 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">saveLoadUpdateRemove(false)</span>
+                <span class="method-start">2856 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">saveLoadUpdateRemove(true)</span>
+                <span class="method-start">2880 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2880 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2880 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2905 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2906 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">saveLoadUpdateRemoveWithIntermediateDirs(false)</span>
+                <span class="method-start">2906 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2935 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2936 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">saveLoadUpdateRemoveWithIntermediateDirs(true)</span>
+                <span class="method-start">2936 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2961 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2962 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">targetExistsButIsNotAFile</span>
+                <span class="method-start">2962 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2963 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2964 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">targetKeyIsEmpty</span>
+                <span class="method-start">2964 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setUp</span>
+                <span class="method-start">2965 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2965 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">targetKeyIsNull</span>
+                <span class="method-start">2966 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDown</span>
+                <span class="method-start">2966 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">basic</span>
+                <span class="method-start">2966 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">sourceTooShort</span>
+                <span class="method-start">2970 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</div> <!-- chronological-class-name -->
+              <div class="configuration-method before">
+                <span class="method-name">setup</span>
+                <span class="method-start">2971 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="configuration-class before">
+                <span class="method-name">initXMLObjectSupport</span>
+                <span class="method-start">2971 ms</span>
+              </div> <!-- configuration-class before -->
+              <div class="test-method">
+                <span class="method-name">checkCheckModifyTimeTracking</span>
+                <span class="method-start">2972 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setup</span>
+                <span class="method-start">3974 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">emptyMap</span>
+                <span class="method-start">3974 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setup</span>
+                <span class="method-start">3975 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">saveLoadUpdateRemove</span>
+                <span class="method-start">3975 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method before">
+                <span class="method-name">setup</span>
+                <span class="method-start">3975 ms</span>
+              </div> <!-- configuration-method before -->
+              <div class="test-method">
+                <span class="method-name">iterator</span>
+                <span class="method-start">3975 ms</span>
+              </div> <!-- test-method -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+      </div> <!-- main-panel-root -->
+    </div> <!-- wrapper -->
+  </body>
+<script type="text/javascript" src="testng-reports2.js"></script>
+</html>
diff --git a/opensaml-core-impl/target/surefire-reports/jquery-3.6.0.min.js b/opensaml-core-impl/target/surefire-reports/jquery-3.6.0.min.js
new file mode 100644
index 000000000..c4c6022f2
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/jquery-3.6.0.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l= [...]
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.ConfigurationTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.ConfigurationTest.xml
new file mode 100644
index 000000000..d3db8f0c2
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.ConfigurationTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.xml.config.tests.ConfigurationTest" time="0.022" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testIDAttributeConfiguration" time="0.006"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testObjectProviderConfiguration" time="0.008"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testIDAttributeRegistration" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.config.tests.ConfigurationTest" name="testInvalidConfiguration" time="0.008"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.config.tests.ConfigurationTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.InitializationServiceTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.InitializationServiceTest.xml
new file mode 100644
index 000000000..14de57597
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.InitializationServiceTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.xml.config.tests.InitializationServiceTest" time="0.027" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.config.tests.InitializationServiceTest" name="testProviderInit" time="0.027"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.config.tests.InitializationServiceTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest.xml
new file mode 100644
index 000000000..f7fcb10d1
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest" time="0.012" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest" name="testProviderInit" time="0.012"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.xml
new file mode 100644
index 000000000..0ef98a89a
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="17" name="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" time="2.142" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetExistsButIsNotAFile" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemoveWithIntermediateDirs" time="0.026"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.026"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorEmptyPathString" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="buildTargetFileFromKeyWithIntermediateDirs" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorCreateDirectory" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorPathTrimming" time="0.004"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetKeyIsEmpty" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="targetKeyIsNull" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="iterator" time="0.006"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.027"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorBaseDirPathExistsButNotADirectory" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="buildTargetFileFromKey" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="saveLoadUpdateRemoveWithIntermediateDirs" time="0.030"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="ctorRelativeDir" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="checkCheckModifyTimeTracking" time="2.013"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest" name="emptyDir" time="0.004"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.xml
new file mode 100644
index 000000000..bd0e3f99c
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" time="1.003" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="saveLoadUpdateRemove" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="checkCheckModifyTimeTracking" time="1.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="emptyMap" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest" name="iterator" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.xml
new file mode 100644
index 000000000..f5a58caef
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" time="0.005" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" name="sourceTooShort" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest" name="basic" time="0.004"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBase64BinaryTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBase64BinaryTest.xml
new file mode 100644
index 000000000..da606fd16
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBase64BinaryTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" name="testUnmarshall" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest" name="testMarshall" time="0.003"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSBase64BinaryTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBooleanTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBooleanTest.xml
new file mode 100644
index 000000000..7a2c9725d
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSBooleanTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSBooleanTest" time="0.003" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" name="testUnmarshall" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSBooleanTest" name="testMarshall" time="0.003"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSBooleanTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSDateTimeTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSDateTimeTest.xml
new file mode 100644
index 000000000..eec69a833
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSDateTimeTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.xml.schema.impl.XSDateTimeTest" time="0.009" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshallNoFractional" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshall" time="0.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testUnmarshallCanonical" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSDateTimeTest" name="testMarshall" time="0.005"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSDateTimeTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSIntegerTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSIntegerTest.xml
new file mode 100644
index 000000000..87f36b8db
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSIntegerTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSIntegerTest" time="0.003" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" name="testMarshall" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSIntegerTest" name="testUnmarshall" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSIntegerTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSQNameTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSQNameTest.xml
new file mode 100644
index 000000000..9873d1ada
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSQNameTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSQNameTest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSQNameTest" name="testUnmarshall" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSQNameTest" name="testMarshall" time="0.003"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSQNameTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSStringTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSStringTest.xml
new file mode 100644
index 000000000..2e555bc51
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSStringTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSStringTest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSStringTest" name="testMarshall" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSStringTest" name="testUnmarshall" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSStringTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSURITest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSURITest.xml
new file mode 100644
index 000000000..277c50633
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.schema.impl.XSURITest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.schema.impl.XSURITest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSURITest" name="testMarshall" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.schema.impl.XSURITest" name="testUnmarshall" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.schema.impl.XSURITest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.AbstractXMLObjectTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.AbstractXMLObjectTest.xml
new file mode 100644
index 000000000..b13ebc4bd
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.AbstractXMLObjectTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="3" name="org.opensaml.core.xml.tests.AbstractXMLObjectTest" time="0.003" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateChildElements" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateContent" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.AbstractXMLObjectTest" name="testDOMAndXMLObjectSourceDropOnMutateAttribute" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.AbstractXMLObjectTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.ElementProxyTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.ElementProxyTest.xml
new file mode 100644
index 000000000..fd8e08420
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.ElementProxyTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.core.xml.tests.ElementProxyTest" time="0.001" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.ElementProxyTest" name="testUnmarshallUnknownContent" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.ElementProxyTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.IDAttributeTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.IDAttributeTest.xml
new file mode 100644
index 000000000..9f42e6277
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.IDAttributeTest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="7" name="org.opensaml.core.xml.tests.IDAttributeTest" time="0.008" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testChangePropagationInList" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testListOpChangePropagation" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testGlobalIDRegistration" time="0.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testSimpleUnmarshall" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testAttributeMapOps" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testComplexUnmarshallInList" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.IDAttributeTest" name="testAttributeMap" time="0.002"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.IDAttributeTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.MarshallingTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.MarshallingTest.xml
new file mode 100644
index 000000000..36953a72f
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.MarshallingTest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="6" name="org.opensaml.core.xml.tests.MarshallingTest" time="0.027" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingXMLFragment" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithAttributes" time="0.018"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingExistingEmptyDocument" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithElementContent" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingReplaceDocumentRoot" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.MarshallingTest" name="testMarshallingWithChildElements" time="0.003"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.MarshallingTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.NamespaceManagerTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.NamespaceManagerTest.xml
new file mode 100644
index 000000000..0120e4d7f
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.NamespaceManagerTest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="7" name="org.opensaml.core.xml.tests.NamespaceManagerTest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQualifiedAttributes" time="0.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQNameElementContent" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testNonVisibleNamespacePrefixes" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testObjectType" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testQNameAttributeValue" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testObjectName" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.NamespaceManagerTest" name="testNSDeclaration" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.NamespaceManagerTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingSecurityTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingSecurityTest.xml
new file mode 100644
index 000000000..a55e98837
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingSecurityTest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="6" name="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" time="0.004" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentInElementContentDefaults" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCDATAInElementContentInsecure" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentBetweenChildElementsDefaults" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentBetweenChildElementsInsecure" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCDATAInElementContentDefaults" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingSecurityTest" name="testUnmarshallingWithCommentInElementContentInsecure" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.UnmarshallingSecurityTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingTest.xml
new file mode 100644
index 000000000..95957fb75
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.UnmarshallingTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="3" name="org.opensaml.core.xml.tests.UnmarshallingTest" time="0.002" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithElementContent" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithChildElements" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.UnmarshallingTest" name="testUnmarshallingWithAttributes" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.UnmarshallingTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.xml
new file mode 100644
index 000000000..cf7346625
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="7" name="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" time="0.009" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallSchemaLocation" time="0.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNoNil" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallSchemaLocation" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNoNamespaceSchemaLocation" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallNoNamespaceSchemaLocation" time="0.002"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testMarshallNil" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest" name="testUnmarshallNil" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.AttributeMapTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.AttributeMapTest.xml
new file mode 100644
index 000000000..1bce63632
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.AttributeMapTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.xml.util.tests.AttributeMapTest" time="0.011" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testQNameAttributeValueAsQName" time="0.008"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testAttributeMapQualifiedAttributes" time="0.003"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testClear" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.AttributeMapTest" name="testQNameAttributeValueAsString" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.util.tests.AttributeMapTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.xml
new file mode 100644
index 000000000..d145bfa53
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" time="0.002" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testSet" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testRemove" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testAdd" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest" name="testSublist" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.xml
new file mode 100644
index 000000000..4abbf2992
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="5" name="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" time="0.001" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testClear" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testRemove" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testAdd" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testIterator" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest" name="testSet" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSourceTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSourceTest.xml
new file mode 100644
index 000000000..db7e56d07
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSourceTest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="2" name="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" time="0.000" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" name="testBadCtorParams" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSourceTest" name="testGetterAndHashCodeAndEquals" time="0.000"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.util.tests.XMLObjectSourceTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSupportTest.xml b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSupportTest.xml
new file mode 100644
index 000000000..7f01f03ce
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/junitreports/TEST-org.opensaml.core.xml.util.tests.XMLObjectSupportTest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="5" name="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" time="0.020" errors="0" timestamp="2024-02-09T16:01:14 EST" skipped="0">
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneInputMarshalling" time="0.018"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithDropDOM" time="0.001"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithRootInNewDocument" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testXMLObjectCloneWithUnrootedDOM" time="0.000"/>
+  <system-out/>
+  <testcase classname="org.opensaml.core.xml.util.tests.XMLObjectSupportTest" name="testBuildXMLObject" time="0.001"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.core.xml.util.tests.XMLObjectSupportTest -->
diff --git a/opensaml-core-impl/target/surefire-reports/navigator-bullet.png b/opensaml-core-impl/target/surefire-reports/navigator-bullet.png
new file mode 100644
index 000000000..36d90d395
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/navigator-bullet.png differ
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/Surefire test.properties b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/Surefire test.properties
new file mode 100644
index 000000000..d7c8865f0
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/Surefire test.properties	
@@ -0,0 +1 @@
+[SuiteResult context=Surefire test]
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/classes.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/classes.html
new file mode 100644
index 000000000..0b3e907fa
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/classes.html	
@@ -0,0 +1,1042 @@
+<table border='1'>
+<tr>
+<th>Class name</th>
+<th>Method name</th>
+<th>Groups</th>
+</tr><tr>
+<td>org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>iterator</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>saveLoadUpdateRemove</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>checkCheckModifyTimeTracking</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>emptyMap</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setup</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.MarshallingTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testMarshallingWithChildElements</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallingWithAttributes</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallingReplaceDocumentRoot</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallingExistingEmptyDocument</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallingXMLFragment</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallingWithElementContent</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testClear</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testSet</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testRemove</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testAdd</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testIterator</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSourceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testGetterAndHashCodeAndEquals</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testBadCtorParams</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.ElementProxyTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshallUnknownContent</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>ctorBaseDirPathExistsButNotADirectory</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>ctorCreateDirectory</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>buildTargetFileFromKeyWithIntermediateDirs</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>ctorEmptyPathString</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>ctorPathTrimming</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>targetKeyIsEmpty</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>targetExistsButIsNotAFile</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>iterator</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>ctorRelativeDir</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>checkCheckModifyTimeTracking</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>saveLoadUpdateRemove</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>targetKeyIsNull</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>saveLoadUpdateRemoveWithIntermediateDirs</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>emptyDir</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>buildTargetFileFromKey</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.util.tests.AttributeMapTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testAttributeMapQualifiedAttributes</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testClear</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testQNameAttributeValueAsString</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testQNameAttributeValueAsQName</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.config.tests.InitializationServiceTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testProviderInit</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.UnmarshallingTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithChildElements</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithElementContent</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithAttributes</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSDateTimeTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshallCanonical</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallNoFractional</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testMarshallNoNamespaceSchemaLocation</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallSchemaLocation</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallSchemaLocation</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshallNil</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallNil</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallNoNamespaceSchemaLocation</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallNoNil</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testProviderInit</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.NamespaceManagerTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testObjectType</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testQualifiedAttributes</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testObjectName</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testNSDeclaration</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testNonVisibleNamespacePrefixes</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testQNameAttributeValue</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testQNameElementContent</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.UnmarshallingSecurityTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCommentBetweenChildElementsInsecure</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCommentBetweenChildElementsDefaults</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCDATAInElementContentInsecure</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCommentInElementContentInsecure</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCDATAInElementContentDefaults</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testUnmarshallingWithCommentInElementContentDefaults</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>setup</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>sourceTooShort</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>basic</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSIntegerTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSStringTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSURITest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.config.tests.ConfigurationTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testIDAttributeConfiguration</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testIDAttributeRegistration</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testInvalidConfiguration</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testObjectProviderConfiguration</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initClass</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDown</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.IDAttributeTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testSimpleUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testAttributeMapOps</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testComplexUnmarshallInList</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testGlobalIDRegistration</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testChangePropagationInList</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testAttributeMap</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testListOpChangePropagation</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSQNameTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testSet</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testRemove</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testSublist</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testAdd</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.util.tests.XMLObjectSupportTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testBuildXMLObject</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testXMLObjectCloneInputMarshalling</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testXMLObjectCloneWithRootInNewDocument</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testXMLObjectCloneWithDropDOM</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testXMLObjectCloneWithUnrootedDOM</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.tests.AbstractXMLObjectTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testDOMAndXMLObjectSourceDropOnMutateAttribute</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testDOMAndXMLObjectSourceDropOnMutateChildElements</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testDOMAndXMLObjectSourceDropOnMutateContent</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSBase64BinaryTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.core.xml.schema.impl.XSBooleanTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>testUnmarshall</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>testMarshall</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td> </td>
+<td>initXMLObjectSupport</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>setUp</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+</table>
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/groups.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/groups.html
new file mode 100644
index 000000000..199cb3f11
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/groups.html	
@@ -0,0 +1 @@
+<h2>Groups used for this test run</h2>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/index.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/index.html
new file mode 100644
index 000000000..9f73abdbe
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/index.html	
@@ -0,0 +1,6 @@
+<html><head><title>Results for Surefire suite</title></head>
+<frameset cols="26%,74%">
+<frame src="toc.html" name="navFrame">
+<frame src="main.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/main.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/main.html
new file mode 100644
index 000000000..fddc3cab2
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/main.html	
@@ -0,0 +1,2 @@
+<html><head><title>Results for Surefire suite</title></head>
+<body>Select a result on the left-hand pane.</body></html>
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-alphabetical.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-alphabetical.html
new file mode 100644
index 000000000..00f9086fb
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-alphabetical.html	
@@ -0,0 +1,412 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="cbc48f">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="SegmentingIntermediateDirectoryStrategyTest.basic()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]">basic</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>-2147</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.buildTargetFileFromKey()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">buildTargetFileFromKey</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>-2142</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.buildTargetFileFromKeyWithIntermediateDirs()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">buildTargetFileFromKeyWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>-2141</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">checkCheckModifyTimeTracking</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:13</td>   <td>5</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">checkCheckModifyTimeTracking</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-127</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorBaseDirPathExistsButNotADirectory</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-126</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorCreateDirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorCreateDirectory</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-125</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorEmptyPathString()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorEmptyPathString</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-124</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorPathTrimming()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorPathTrimming</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-123</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorRelativeDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorRelativeDir</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-122</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.emptyDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">emptyDir</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1008</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.emptyMap()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">emptyMap</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2303</td> <td> </td><td> </td><td title=">>ConfigurationTest.initClass()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>initClass</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8aa092">  <td>24/02/09 16:01:10</td>   <td>-2961</td> <td title=">>OpenSAMLInitBaseTestCase.initOpenSAML()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>initOpenSAML</td> 
+<td> </td><td> </td><td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2245</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2261</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2151</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2199</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2208</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2173</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2362</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2164</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2177</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2385</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2264</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2169</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2181</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2257</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:13</td>   <td>5</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2239</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2187</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2155</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-2186</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-118</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">iterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">iterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-86</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.saveLoadUpdateRemove()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-86</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemoveWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemoveWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>-2170</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSURITest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2285</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2285</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2285</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2364</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-2178</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBooleanTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-2182</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSQNameTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>-2166</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBase64BinaryTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2364</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>-2152</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSStringTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>-2170</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSURITest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2156</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2156</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-2182</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSQNameTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-2331</td> <td> </td><td> </td><td> </td><td> </td><td title=">>InitializationServiceTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2285</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2364</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2156</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>-2152</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSStringTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2364</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-2174</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSIntegerTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-2174</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSIntegerTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>-2166</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBase64BinaryTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-1</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-2178</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBooleanTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2156</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8b8b72">  <td>24/02/09 16:01:10</td>   <td>-2275</td> <td> </td><td> </td><td> </td><td> </td><td title=">>InitializerBaseTestCase.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2244</td> <td> </td><td> </td><td title=">>UnmarshallingSecurityTest.setup()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">>>setup</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>1009</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="cbc48f">  <td>24/02/09 16:01:13</td>   <td>4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="SegmentingIntermediateDirectoryStrategyTest.sourceTooShort()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]">sourceTooShort</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetExistsButIsNotAFile</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>-2</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetKeyIsEmpty()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetKeyIsEmpty</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetKeyIsNull()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetKeyIsNull</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-2304</td> <td> </td><td> </td><td> </td><td> </td><td title="<<InitializationServiceTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2276</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2276</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2276</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8b8b72">  <td>24/02/09 16:01:10</td>   <td>-2264</td> <td> </td><td> </td><td> </td><td> </td><td title="<<InitializerBaseTestCase.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2276</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-2336</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testAdd</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-2339</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testAdd</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2257</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testAttributeMap()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testAttributeMap</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2254</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testAttributeMapOps()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testAttributeMapOps</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2372</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testAttributeMapQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testAttributeMapQualifiedAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="febc6f">  <td>24/02/09 16:01:10</td>   <td>-2333</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSourceTest.testBadCtorParams()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]">testBadCtorParams</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-2362</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testBuildXMLObject()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testBuildXMLObject</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2252</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testChangePropagationInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testChangePropagationInList</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-2335</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testClear</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2367</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testClear</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2250</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testComplexUnmarshallInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testComplexUnmarshallInList</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-2264</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateAttribute()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateAttribute</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-2263</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateChildElements()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-2262</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateContent()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="febc6f">  <td>24/02/09 16:01:10</td>   <td>-2332</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSourceTest.testGetterAndHashCodeAndEquals()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]">testGetterAndHashCodeAndEquals</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2249</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testGlobalIDRegistration()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testGlobalIDRegistration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2302</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testIDAttributeConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testIDAttributeConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2295</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testIDAttributeRegistration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testIDAttributeRegistration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2294</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testInvalidConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testInvalidConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-2335</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testIterator()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testIterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2247</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testListOpChangePropagation()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testListOpChangePropagation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-2181</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBooleanTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2163</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>-2173</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSURITest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-2177</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSIntegerTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-2185</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSQNameTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>-2155</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSStringTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>-2169</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBase64BinaryTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2198</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2195</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallNoNamespaceSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2192</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2238</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingExistingEmptyDocument()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingExistingEmptyDocument</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2238</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingReplaceDocumentRoot()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingReplaceDocumentRoot</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2238</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2220</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2216</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-2212</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingXMLFragment()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingXMLFragment</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2207</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testNSDeclaration()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testNSDeclaration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2207</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testNonVisibleNamespacePrefixes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testNonVisibleNamespacePrefixes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2202</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testObjectName()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testObjectName</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-2285</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testObjectProviderConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testObjectProviderConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2202</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testObjectType()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testObjectType</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-2331</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="InitializationServiceTest.testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]">testProviderInit</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e3b7dc">  <td>24/02/09 16:01:10</td>   <td>-2275</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectProviderInitializerBaseTestCase.testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]">testProviderInit</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2201</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQNameAttributeValue()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQNameAttributeValue</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2366</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testQNameAttributeValueAsQName()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testQNameAttributeValueAsQName</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-2364</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testQNameAttributeValueAsString()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testQNameAttributeValueAsString</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQNameElementContent()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQNameElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-2200</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQualifiedAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-2334</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-2339</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-2334</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testSet</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-2338</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testSet</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-2245</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testSimpleUnmarshall()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testSimpleUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-2338</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testSublist()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testSublist</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-2174</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSIntegerTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>-2152</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSStringTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>-2166</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBase64BinaryTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-2178</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBooleanTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2159</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-2182</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSQNameTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>-2170</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSURITest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2157</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshallCanonical()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshallCanonical</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2190</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>-2156</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshallNoFractional()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshallNoFractional</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2189</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNoNamespaceSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2189</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNoNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNoNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-2188</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c6a36e">  <td>24/02/09 16:01:10</td>   <td>-2187</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ElementProxyTest.testUnmarshallUnknownContent()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]">testUnmarshallUnknownContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-2260</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2244</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCDATAInElementContentDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2243</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCDATAInElementContentInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-2259</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2242</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentBetweenChildElementsDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2241</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentBetweenChildElementsInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2240</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentInElementContentDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-2239</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentInElementContentInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-2258</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-2360</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneInputMarshalling()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneInputMarshalling</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-2342</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithDropDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithDropDOM</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-2341</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithRootInNewDocument()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithRootInNewDocument</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-2340</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithUnrootedDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithUnrootedDOM</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-not-run.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-not-run.html
new file mode 100644
index 000000000..3e94038d1
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods-not-run.html	
@@ -0,0 +1,20 @@
+<h2>Methods that were not run</h2><table>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+<tr><td>org.opensaml.core.testing.OpenSAMLInitBaseTestCase.initOpenSAML</td></tr>
+</table>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods.html
new file mode 100644
index 000000000..db8f4d81f
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/methods.html	
@@ -0,0 +1,412 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSURITest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-19</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNoNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNoNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2046</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorPathTrimming()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorPathTrimming</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-115</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2043</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorBaseDirPathExistsButNotADirectory</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-75</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-115</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSIntegerTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-93</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateChildElements()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-115</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>18</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSStringTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQualifiedAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-134</td> <td> </td><td> </td><td> </td><td> </td><td title="<<InitializationServiceTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2084</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-75</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testSimpleUnmarshall()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testSimpleUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-69</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentInElementContentInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-91</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>19</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>4</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBase64BinaryTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-194</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-8</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBooleanTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-166</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testAdd</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-25</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallNoNamespaceSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-106</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-190</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneInputMarshalling()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneInputMarshalling</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-29</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-92</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateContent()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-106</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-125</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testIDAttributeRegistration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testIDAttributeRegistration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-31</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQNameAttributeValue()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQNameAttributeValue</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-68</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingExistingEmptyDocument()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingExistingEmptyDocument</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-11</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBooleanTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-32</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testObjectName()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testObjectName</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-164</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testSet</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-38</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-3</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-12</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSQNameTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-79</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testGlobalIDRegistration()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testGlobalIDRegistration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-192</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-82</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testChangePropagationInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testChangePropagationInList</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2052</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">iterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>4</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBase64BinaryTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-196</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testQNameAttributeValueAsQName()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testQNameAttributeValueAsQName</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-194</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="cbc48f">  <td>24/02/09 16:01:13</td>   <td>2174</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="SegmentingIntermediateDirectoryStrategyTest.sourceTooShort()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]">sourceTooShort</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-165</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testIterator()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testIterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>28</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.buildTargetFileFromKeyWithIntermediateDirs()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">buildTargetFileFromKeyWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>7</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshallNoFractional()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshallNoFractional</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-165</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testClear</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-172</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithDropDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithDropDOM</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>18</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSStringTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-80</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testComplexUnmarshallInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testComplexUnmarshallInList</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-50</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="71cca7">  <td>24/02/09 16:01:10</td>   <td>-164</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectChildrenListTest.testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]">testRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-19</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNoNamespaceSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-8</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBooleanTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-106</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>-3</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSURITest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-133</td> <td> </td><td> </td><td title=">>ConfigurationTest.initClass()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>initClass</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2048</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.emptyDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">emptyDir</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-90</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-68</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8b8b72">  <td>24/02/09 16:01:10</td>   <td>-94</td> <td> </td><td> </td><td> </td><td> </td><td title="<<InitializerBaseTestCase.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>6</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSURITest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-115</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testObjectProviderConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testObjectProviderConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-20</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-168</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testSublist()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testSublist</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-70</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentInElementContentDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-88</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testQNameElementContent()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testQNameElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="febc6f">  <td>24/02/09 16:01:10</td>   <td>-162</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSourceTest.testGetterAndHashCodeAndEquals()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]">testGetterAndHashCodeAndEquals</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-87</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testAttributeMap()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testAttributeMap</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-7</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-171</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithRootInNewDocument()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithRootInNewDocument</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>23</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.buildTargetFileFromKey()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">buildTargetFileFromKey</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:11</td>   <td>29</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">checkCheckModifyTimeTracking</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-32</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testObjectType()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testObjectType</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-12</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSQNameTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-7</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSIntegerTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b7dea0">  <td>24/02/09 16:01:10</td>   <td>-94</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AbstractXMLObjectTest.testDOMAndXMLObjectSourceDropOnMutateAttribute()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">testDOMAndXMLObjectSourceDropOnMutateAttribute</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:13</td>   <td>2175</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">checkCheckModifyTimeTracking</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetKeyIsNull()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetKeyIsNull</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="febc6f">  <td>24/02/09 16:01:10</td>   <td>-163</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSourceTest.testBadCtorParams()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]">testBadCtorParams</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-161</td> <td> </td><td> </td><td> </td><td> </td><td title=">>InitializationServiceTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-170</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testXMLObjectCloneWithUnrootedDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testXMLObjectCloneWithUnrootedDOM</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-15</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSQNameTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-215</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-94</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2166</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetExistsButIsNotAFile</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>11</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-73</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCDATAInElementContentInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>1</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-11</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-71</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentBetweenChildElementsInsecure</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2044</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorCreateDirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorCreateDirectory</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-22</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-77</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testListOpChangePropagation()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testListOpChangePropagation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="ff8b8f">  <td>24/02/09 16:01:10</td>   <td>-12</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSQNameTest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-74</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCDATAInElementContentDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8aa092">  <td>24/02/09 16:01:10</td>   <td>-791</td> <td title=">>OpenSAMLInitBaseTestCase.initOpenSAML()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>initOpenSAML</td> 
+<td> </td><td> </td><td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-169</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-115</td> <td> </td><td> </td><td> </td><td> </td><td title=">>ConfigurationTest.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.saveLoadUpdateRemove()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-74</td> <td> </td><td> </td><td title=">>UnmarshallingSecurityTest.setup()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">>>setup</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="6a99b2">  <td>24/02/09 16:01:10</td>   <td>-72</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]">testUnmarshallingWithCommentBetweenChildElementsDefaults</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-194</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-87</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c48976">  <td>24/02/09 16:01:10</td>   <td>-89</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="UnmarshallingTest.testUnmarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]">testUnmarshallingWithChildElements</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>18</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSStringTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-194</td> <td> </td><td> </td><td> </td><td> </td><td title=">>AttributeMapTest.setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-37</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testNSDeclaration()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testNSDeclaration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2168</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.targetKeyIsEmpty()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">targetKeyIsEmpty</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSIntegerTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="756495">  <td>24/02/09 16:01:10</td>   <td>15</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSStringTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:13</td>   <td>2175</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-69</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-202</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testAttributeMapQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testAttributeMapQualifiedAttributes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:01:10</td>   <td>-161</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="InitializationServiceTest.testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]">testProviderInit</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-46</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingWithElementContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c6a36e">  <td>24/02/09 16:01:10</td>   <td>-17</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ElementProxyTest.testUnmarshallUnknownContent()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]">testUnmarshallUnknownContent</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3178</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.emptyMap()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">emptyMap</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td title=">>MapLoadSaveManagerTest.setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">>>setup</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-168</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testSet</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="717fa4">  <td>24/02/09 16:01:10</td>   <td>-192</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectSupportTest.testBuildXMLObject()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]">testBuildXMLObject</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="aaed64">  <td>24/02/09 16:01:10</td>   <td>-4</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSIntegerTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-28</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testMarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testMarshallNil</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2084</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemove</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-17</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a18c8f">  <td>24/02/09 16:01:14</td>   <td>3179</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MapLoadSaveManagerTest.iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]">iterator</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9f6666">  <td>24/02/09 16:01:10</td>   <td>-18</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectXSIAttribsTest.testUnmarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]">testUnmarshallSchemaLocation</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-37</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="NamespaceManagerTest.testNonVisibleNamespacePrefixes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">testNonVisibleNamespacePrefixes</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-197</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testClear</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2045</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorEmptyPathString()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorEmptyPathString</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e3b7dc">  <td>24/02/09 16:01:10</td>   <td>-105</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XMLObjectProviderInitializerBaseTestCase.testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]">testProviderInit</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-124</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testInvalidConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testInvalidConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d3a17d">  <td>24/02/09 16:01:10</td>   <td>-169</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IndexedXMLObjectChildrenListTest.testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]">testAdd</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-68</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingReplaceDocumentRoot()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingReplaceDocumentRoot</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>4</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBase64BinaryTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2169</td> <td> </td><td> </td><td> </td><td> </td><td title=">>FilesystemLoadSaveManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a77081">  <td>24/02/09 16:01:10</td>   <td>-42</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="MarshallingTest.testMarshallingXMLFragment()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]">testMarshallingXMLFragment</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-106</td> <td> </td><td> </td><td> </td><td> </td><td title="<<ConfigurationTest.tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="cbc48f">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="SegmentingIntermediateDirectoryStrategyTest.basic()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]">basic</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="79caec">  <td>24/02/09 16:01:10</td>   <td>-194</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="AttributeMapTest.testQNameAttributeValueAsString()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]">testQNameAttributeValueAsString</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>13</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSDateTimeTest.testUnmarshallCanonical()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">testUnmarshallCanonical</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2140</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemoveWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9061ba">  <td>24/02/09 16:01:10</td>   <td>-30</td> <td> </td><td> </td><td> </td><td> </td><td title=">>NamespaceManagerTest.setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:01:10</td>   <td>-132</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="ConfigurationTest.testIDAttributeConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]">testIDAttributeConfiguration</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="99f790">  <td>24/02/09 16:01:10</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSURITest.testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]">testUnmarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="7c709b">  <td>24/02/09 16:01:10</td>   <td>-8</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSBooleanTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="c1fdc4">  <td>24/02/09 16:01:10</td>   <td>14</td> <td> </td><td> </td><td> </td><td> </td><td title=">>XSDateTimeTest.setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>15</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="e7a66b">  <td>24/02/09 16:01:10</td>   <td>1</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="XSBase64BinaryTest.testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]">testMarshall</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2140</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">saveLoadUpdateRemoveWithIntermediateDirs</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="8b8b72">  <td>24/02/09 16:01:10</td>   <td>-105</td> <td> </td><td> </td><td> </td><td> </td><td title=">>InitializerBaseTestCase.setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]">>>setUp</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="d384ee">  <td>24/02/09 16:01:10</td>   <td>-84</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="IDAttributeTest.testAttributeMapOps()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]">testAttributeMapOps</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2047</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="FilesystemLoadSaveManagerTest.ctorRelativeDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]">ctorRelativeDir</td> 
+  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="b3fd90">  <td>24/02/09 16:01:13</td>   <td>2170</td> <td> </td><td> </td><td> </td><td> </td><td title="<<FilesystemLoadSaveManagerTest.tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]"><<tearDown</td> 
+<td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+<tr bgcolor="a7bfbc">  <td>24/02/09 16:01:10</td>   <td>-16</td> <td> </td><td> </td><td title=">>XMLObjectBaseTestCase.initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]">>>initXMLObjectSupport</td> 
+<td> </td><td> </td><td> </td>  <td>main at 1363560175</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/reporter-output.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/reporter-output.html
new file mode 100644
index 000000000..063bc2e96
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/reporter-output.html	
@@ -0,0 +1 @@
+<h2>Reporter output</h2><table></table>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/testng.xml.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/testng.xml.html
new file mode 100644
index 000000000..6f741f769
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/testng.xml.html	
@@ -0,0 +1 @@
+<html><head><title>testng.xml for Surefire suite</title></head><body><tt><?xml version="1.0" encoding="UTF-8"?><br/><!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"><br/><suite name="Surefire suite" verbose="0"><br/>  <test thread-count="5" name="Surefire test" verbose="0"><br/>    <classes><br/>      <class name="org.open [...]
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/Surefire suite/toc.html b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/toc.html
new file mode 100644
index 000000000..65b17171e
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/Surefire suite/toc.html	
@@ -0,0 +1,30 @@
+<html>
+<head>
+<title>Results for Surefire suite</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<h3><p align="center">Results for<br/><em>Surefire suite</em></p></h3>
+<table border='1' width='100%'>
+<tr valign='top'>
+<td>1 test</td>
+<td><a target='mainFrame' href='classes.html'>26 classes</a></td>
+<td>103 methods:<br/>
+  <a target='mainFrame' href='methods.html'>chronological</a><br/>
+  <a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
+  <a target='mainFrame' href='methods-not-run.html'>not run (18)</a></td>
+</tr>
+<tr>
+<td><a target='mainFrame' href='groups.html'>0 group</a></td>
+<td><a target='mainFrame' href='reporter-output.html'>reporter output</a></td>
+<td><a target='mainFrame' href='testng.xml.html'>testng.xml</a></td>
+</tr></table>
+<table width='100%' class='test-passed'>
+<tr><td>
+<table style='width: 100%'><tr><td valign='top'>Surefire test (105/0/0)</td><td valign='top' align='right'>
+  <a href='Surefire test.html' target='mainFrame'>Results</a>
+</td></tr></table>
+</td></tr><p/>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/old/index.html b/opensaml-core-impl/target/surefire-reports/old/index.html
new file mode 100644
index 000000000..28859e1c8
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/old/index.html
@@ -0,0 +1,9 @@
+<html>
+<head><title></title><link href="./testng.css" rel="stylesheet" type="text/css" />
+<link href="./my-testng.css" rel="stylesheet" type="text/css" />
+</head><body>
+<h2><p align='center'>Test results</p></h2>
+<table border='1' width='100%' class='main-page'><tr><th>Suite</th><th>Passed</th><th>Failed</th><th>Skipped</th><th>testng.xml</th></tr>
+<tr align='center' class='invocation-passed'><td><em>Total</em></td><td><em>105</em></td><td><em>0</em></td><td><em>0</em></td><td> </td></tr>
+<tr align='center' class='invocation-passed'><td><a href='Surefire suite/index.html'>Surefire suite</a></td>
+<td>105</td><td>0</td><td>0</td><td><a href='Surefire suite/testng.xml.html'>Link</a></td></tr></table></body></html>
diff --git a/opensaml-core-impl/target/surefire-reports/passed.png b/opensaml-core-impl/target/surefire-reports/passed.png
new file mode 100644
index 000000000..45e85bbfd
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/passed.png differ
diff --git a/opensaml-core-impl/target/surefire-reports/skipped.png b/opensaml-core-impl/target/surefire-reports/skipped.png
new file mode 100644
index 000000000..c36a32439
Binary files /dev/null and b/opensaml-core-impl/target/surefire-reports/skipped.png differ
diff --git a/opensaml-core-impl/target/surefire-reports/testng-reports.css b/opensaml-core-impl/target/surefire-reports/testng-reports.css
new file mode 100644
index 000000000..d7b75c404
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng-reports.css
@@ -0,0 +1,326 @@
+body {
+    margin: 0 0 5px 5px;
+}
+
+ul {
+    margin: 0;
+}
+
+li {
+    list-style-type: none;
+}
+
+a {
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+.navigator-selected {
+    background: #ffa500;
+}
+
+.wrapper {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 400px;
+    right: 0;
+    overflow: auto;
+}
+
+.navigator-root {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 0;
+    width: 400px;
+    overflow-y: auto;
+}
+
+.suite {
+    margin: 0 10px 10px 0;
+    background-color: #fff8dc;
+}
+
+.suite-name {
+    padding-left: 10px;
+    font-size: 25px;
+    font-family: Times, sans-serif;
+}
+
+.main-panel-header {
+    padding: 5px;
+    background-color: #9FB4D9; /*afeeee*/;
+    font-family: monospace;
+    font-size: 18px;
+}
+
+.main-panel-content {
+    padding: 5px;
+    margin-bottom: 10px;
+    background-color: #DEE8FC; /*d0ffff*/;
+}
+
+.rounded-window {
+    border-radius: 10px;
+    border-style: solid;
+    border-width: 1px;
+}
+
+.rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 1px;
+    overflow: auto;
+}
+
+.light-rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+}
+
+.rounded-window-bottom {
+    border-style: solid;
+    border-width: 0 1px 1px 1px;
+    border-bottom-right-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    overflow: auto;
+}
+
+.method-name {
+    font-size: 12px;
+    font-family: monospace;
+}
+
+.method-content {
+    border-style: solid;
+    border-width: 0 0 1px 0;
+    margin-bottom: 10px;
+    padding-bottom: 5px;
+    width: 80%;
+}
+
+.parameters {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.stack-trace {
+    white-space: pre;
+    font-family: monospace;
+    font-size: 12px;
+    font-weight: bold;
+    margin-top: 0;
+    margin-left: 20px;
+}
+
+.testng-xml {
+    font-family: monospace;
+}
+
+.method-list-content {
+    margin-left: 10px;
+}
+
+.navigator-suite-content {
+    margin-left: 10px;
+    font: 12px 'Lucida Grande';
+}
+
+.suite-section-title {
+    margin-top: 10px;
+    width: 80%;
+    border-style: solid;
+    border-width: 1px 0 0 0;
+    font-family: Times, sans-serif;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.suite-section-content {
+    list-style-image: url(bullet_point.png);
+}
+
+.top-banner-root {
+    position: absolute;
+    top: 0;
+    height: 45px;
+    left: 0;
+    right: 0;
+    padding: 5px;
+    margin: 0 0 5px 0;
+    background-color: #0066ff;
+    font-family: Times, sans-serif;
+    color: #fff;
+    text-align: center;
+}
+.button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#0066ff;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#0066ff ;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline:none;
+
+}
+
+.top-banner-title-font {
+    font-size: 25px;
+}
+
+.test-name {
+    font-family: 'Lucida Grande', sans-serif;
+    font-size: 16px;
+}
+
+.suite-icon {
+    padding: 5px;
+    float: right;
+    height: 20px;
+}
+
+.test-group {
+    font: 20px 'Lucida Grande';
+    margin: 5px 5px 10px 5px;
+    border-width: 0 0 1px 0;
+    border-style: solid;
+    padding: 5px;
+}
+
+.test-group-name {
+    font-weight: bold;
+}
+
+.method-in-group {
+    font-size: 16px;
+    margin-left: 80px;
+}
+
+table.google-visualization-table-table {
+    width: 100%;
+}
+
+.reporter-method-name {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.reporter-method-output-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.ignored-class-div {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.ignored-methods-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.border-failed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #f00;
+}
+
+.border-skipped {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #edc600;
+}
+
+.border-passed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #19f52d;
+}
+
+.times-div {
+    text-align: center;
+    padding: 5px;
+}
+
+.suite-total-time {
+    font: 16px 'Lucida Grande';
+}
+
+.configuration-suite {
+    margin-left: 20px;
+}
+
+.configuration-test {
+    margin-left: 40px;
+}
+
+.configuration-class {
+    margin-left: 60px;
+}
+
+.configuration-method {
+    margin-left: 80px;
+}
+
+.test-method {
+    margin-left: 100px;
+}
+
+.chronological-class {
+    background-color: skyblue;
+    border-style: solid;
+    border-width: 0 0 1px 1px;
+}
+
+.method-start {
+    float: right;
+}
+
+.chronological-class-name {
+    padding: 0 0 0 5px;
+    color: #008;
+}
+
+.after, .before, .test-method {
+    font-family: monospace;
+    font-size: 14px;
+}
+
+.navigator-suite-header {
+    font-size: 22px;
+    margin: 0 10px 5px 0;
+    background-color: #deb887;
+    text-align: center;
+}
+
+.collapse-all-icon {
+    padding: 5px;
+    float: right;
+}
+/*retro Theme*/
diff --git a/opensaml-core-impl/target/surefire-reports/testng-reports.js b/opensaml-core-impl/target/surefire-reports/testng-reports.js
new file mode 100644
index 000000000..c1a84a35d
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng-reports.js
@@ -0,0 +1,122 @@
+$(document).ready(function() {
+    $('a.navigator-link').on("click", function() {
+        // Extract the panel for this link
+        var panel = getPanelName($(this));
+
+        // Mark this link as currently selected
+        $('.navigator-link').parent().removeClass('navigator-selected');
+        $(this).parent().addClass('navigator-selected');
+
+        showPanel(panel);
+    });
+
+    installMethodHandlers('failed');
+    installMethodHandlers('skipped');
+    installMethodHandlers('passed', true); // hide passed methods by default
+
+    $('a.method').on("click", function() {
+        showMethod($(this));
+        return false;
+    });
+
+    // Hide all the panels and display the first one (do this last
+    // to make sure the click() will invoke the listeners)
+    $('.panel').hide();
+    $('.navigator-link').first().trigger("click");
+
+    // Collapse/expand the suites
+    $('a.collapse-all-link').on("click", function() {
+        var contents = $('.navigator-suite-content');
+        if (contents.css('display') == 'none') {
+            contents.show();
+        } else {
+            contents.hide();
+        }
+    });
+});
+
+// The handlers that take care of showing/hiding the methods
+function installMethodHandlers(name, hide) {
+    function getContent(t) {
+    return $('.method-list-content.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getHideLink(t, name) {
+        var s = 'a.hide-methods.' + name + "." + t.attr('panel-name');
+        return $(s);
+    }
+
+    function getShowLink(t, name) {
+        return $('a.show-methods.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getMethodPanelClassSel(element, name) {
+        var panelName = getPanelName(element);
+    var sel = '.' + panelName + "-class-" + name;
+        return $(sel);
+    }
+
+    $('a.hide-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.hide();
+        getHideLink($(this), name).hide();
+        getShowLink($(this), name).show();
+    getMethodPanelClassSel($(this), name).hide();
+    });
+
+    $('a.show-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.show();
+        getHideLink($(this), name).show();
+        getShowLink($(this), name).hide();
+    showPanel(getPanelName($(this)));
+    getMethodPanelClassSel($(this), name).show();
+    });
+
+    if (hide) {
+        $('a.hide-methods.' + name).trigger("click");
+    } else {
+        $('a.show-methods.' + name).trigger("click");
+    }
+}
+
+function getHashForMethod(element) {
+    return element.attr('hash-for-method');
+}
+
+function getPanelName(element) {
+    return element.attr('panel-name');
+}
+
+function showPanel(panelName) {
+    $('.panel').hide();
+    var panel = $('.panel[panel-name="' + panelName + '"]');
+    panel.show();
+}
+
+function showMethod(element) {
+    var hashTag = getHashForMethod(element);
+    var panelName = getPanelName(element);
+    showPanel(panelName);
+    var current = document.location.href;
+    var base = current.substring(0, current.indexOf('#'))
+    document.location.href = base + '#' + hashTag;
+    var newPosition = $(document).scrollTop() - 65;
+    $(document).scrollTop(newPosition);
+}
+
+function drawTable() {
+    for (var i = 0; i < suiteTableInitFunctions.length; i++) {
+        window[suiteTableInitFunctions[i]]();
+    }
+
+    for (var k in window.suiteTableData) {
+        var v = window.suiteTableData[k];
+        var div = v.tableDiv;
+        var data = v.tableData
+        var table = new google.visualization.Table(document.getElementById(div));
+        table.draw(data, {
+            showRowNumber : false
+        });
+    }
+}
diff --git a/opensaml-core-impl/target/surefire-reports/testng-reports1.css b/opensaml-core-impl/target/surefire-reports/testng-reports1.css
new file mode 100644
index 000000000..570323ffb
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng-reports1.css
@@ -0,0 +1,344 @@
+body {
+    background-color: whitesmoke;
+    margin: 0 0 5px 5px;
+}
+ul {
+     margin-top: 10px;
+     margin-left:-10px;
+}
+ li {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding:5px 5px;
+ }
+ a {
+     text-decoration: none;
+     color: black;
+     font-size: 14px;
+ }
+
+ a:hover {
+    color:black ;
+    text-decoration: underline;
+ }
+
+ .navigator-selected {
+     /* #ffa500; Mouse hover color after click Orange.*/
+     background:#027368
+ }
+
+ .wrapper {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 400px;
+     right: 0;
+     margin-right:9px;
+     overflow: auto;/*imortant*/
+ }
+
+ .navigator-root {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 0;
+     width: 400px;
+     overflow-y: auto;/*important*/
+ }
+
+ .suite {
+     margin: -5px 10px 10px 5px;
+     background-color: whitesmoke ;/*Colour of the left bside box*/
+ }
+
+ .suite-name {
+     font-size: 24px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/
+     color: white;
+ }
+
+ .main-panel-header {
+     padding: 5px;
+     background-color: #027368; /*afeeee*/;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color:white;
+     font-size: 18px;
+ }
+
+ .main-panel-content {
+     padding: 5px;
+     margin-bottom: 10px;
+     background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/
+ }
+
+ .rounded-window {
+     border-style: dotted;
+     border-width: 1px;/*Border of left Side box*/
+     background-color: whitesmoke;
+     border-radius: 10px;
+ }
+
+ .rounded-window-top {
+     border-top-right-radius: 10px 10px;
+     border-top-left-radius: 10px 10px;
+     border-style: solid;
+     border-width: 1px;
+     overflow: auto;/*Top of RightSide box*/
+ }
+
+ .light-rounded-window-top {
+     background-color: #027368;
+     padding-left:120px;
+     border-radius: 10px;
+
+ }
+
+ .rounded-window-bottom {
+     border-bottom-right-radius: 10px 10px;
+     border-bottom-left-radius: 10px 10px;
+     overflow: auto;/*Bottom of rightSide box*/
+ }
+
+ .method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-weight: bold;
+ }
+
+ .method-content {
+     border-style: solid;
+     border-width: 0 0 1px 0;
+     margin-bottom: 10px;
+     padding-bottom: 5px;
+     width: 100%;
+ }
+
+ .parameters {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .stack-trace {
+     white-space: pre;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 12px;
+     font-weight: bold;
+     margin-top: 0;
+     margin-left: 20px; /*Error Stack Trace Message*/
+ }
+
+ .testng-xml {
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .method-list-content {
+     margin-left: 10px;
+ }
+
+ .navigator-suite-content {
+     margin-left: 10px;
+     font: 12px 'Lucida Grande';
+ }
+
+ .suite-section-title {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     font-weight:bold;
+     background-color: #8C8887;
+     margin-left: -10px;
+     margin-top:10px;
+     padding:6px;
+ }
+
+ .suite-section-content {
+     list-style-image: url(bullet_point.png);
+     background-color: whitesmoke;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     overflow: hidden;
+ }
+
+ .top-banner-root {
+     position: absolute;
+     top: 0;
+     height: 45px;
+     left: 0;
+     right: 0;
+     padding: 5px;
+     margin: 0 0 5px 0;
+     background-color: #027368;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 18px;
+     color: #fff;
+     text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/
+ }
+
+ .top-banner-title-font {
+     font-size: 25px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding: 3px;
+     float: right;
+ }
+
+ .test-name {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 16px;
+ }
+
+ .suite-icon {
+     padding: 5px;
+     float: right;
+     height: 20px;
+ }
+
+ .test-group {
+     font: 20px 'Lucida Grande';
+     margin: 5px 5px 10px 5px;
+     border-width: 0 0 1px 0;
+     border-style: solid;
+     padding: 5px;
+ }
+
+ .test-group-name {
+     font-weight: bold;
+ }
+
+ .method-in-group {
+     font-size: 16px;
+     margin-left: 80px;
+ }
+
+ table.google-visualization-table-table {
+     width: 100%;
+ }
+
+ .reporter-method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .reporter-method-output-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .ignored-class-div {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .ignored-methods-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .border-failed {
+    border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F20505;
+ }
+
+ .border-skipped {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F2BE22;
+ }
+
+ .border-passed {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #038C73;
+ }
+
+ .times-div {
+     text-align: center;
+     padding: 5px;
+ }
+
+ .suite-total-time {
+     font: 16px 'Lucida Grande';
+ }
+
+ .configuration-suite {
+     margin-left: 20px;
+ }
+
+ .configuration-test {
+     margin-left: 40px;
+ }
+
+ .configuration-class {
+     margin-left: 60px;
+ }
+
+ .configuration-method {
+     margin-left: 80px;
+ }
+
+ .test-method {
+     margin-left: 100px;
+ }
+
+ .chronological-class {
+     background-color: #CCD0D1;
+     border-width: 0 0 1px 1px;/*Chronological*/
+ }
+
+ .method-start {
+     float: right;
+ }
+
+ .chronological-class-name {
+     padding: 0 0 0 5px;
+     margin-top:5px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color: #008;
+ }
+
+ .after, .before, .test-method {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     margin-top:5px;
+ }
+
+ .navigator-suite-header {
+     font-size: 18px;
+     margin: 0px 10px 10px 5px;
+     padding: 5px;
+     border-radius: 10px;
+     background-color: #027368;
+     color: white;
+     font-weight:bold;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     text-align: center; /*All Suites on top of left box*//*Status: -Completed*/
+ }
+
+ .collapse-all-icon {
+     padding: 3px;
+     float: right;
+ }
+ .button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#027368;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#027368;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline: none;
+}
+/*Author: - Akhil Gullapalli*/
\ No newline at end of file
diff --git a/opensaml-core-impl/target/surefire-reports/testng-reports2.js b/opensaml-core-impl/target/surefire-reports/testng-reports2.js
new file mode 100644
index 000000000..5342859fa
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng-reports2.js
@@ -0,0 +1,76 @@
+window.onload = function () {
+  let cookies = document.cookie;
+  let cookieValue = cookies.split('=');
+  if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') {
+    document.getElementById('retro').setAttribute('disabled', 'false');
+  } else if (cookieValue[1] === 'Switch Ultra Theme' ||
+      localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('retro').setAttribute('disabled', 'false');
+
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    if (cookieValue[1] === 'Switch Ultra Theme' ||
+        localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('retro').setAttribute('disabled', 'false');
+
+      document.getElementById('button').innerText = "Switch Ultra Theme";
+      document.getElementById('retro').removeAttribute('disabled');
+      document.getElementById('ultra').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+
+    } else if (select === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('ultra').removeAttribute('disabled');
+      document.getElementById('retro').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+    }
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+  }
+}
+document.getElementById('button').onclick = function () {
+  let select = document.getElementById('button').innerText;
+  if (select === 'Switch Retro Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('retro').removeAttribute('disabled');
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+
+  } else if (select === 'Switch Ultra Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('ultra').removeAttribute('disabled');
+    document.getElementById('retro').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+  }
+}
+//Function to mouse hovering affect.
+document.getElementById('button').onmouseover = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "180px";
+  document.getElementById('button').style.height = "45px";
+  document.getElementById('button').style.marginTop = "1px";
+
+}
+//Function to mouse out affect
+document.getElementById('button').onmouseout = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "150px";
+  document.getElementById('button').style.height = "30px";
+  document.getElementById('button').style.marginTop = "8px";
+
+}
+
+//This is the file where we handle the switching of the Themes.
+/*Author:- Akhil Gullapalli*/
diff --git a/opensaml-core-impl/target/surefire-reports/testng-results.xml b/opensaml-core-impl/target/surefire-reports/testng-results.xml
new file mode 100644
index 000000000..953871023
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng-results.xml
@@ -0,0 +1,1354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testng-results ignored="18" total="123" passed="105" failed="0" skipped="0">
+  <reporter-output>
+  </reporter-output>
+  <suite started-at="2024-02-09T16:01:10 EST" name="Surefire suite" finished-at="2024-02-09T16:01:14 EST" duration-ms="3411">
+    <groups>
+    </groups>
+    <test started-at="2024-02-09T16:01:10 EST" name="Surefire test" finished-at="2024-02-09T16:01:14 EST" duration-ms="3411">
+      <class name="org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest">
+        <test-method is-config="true" signature="setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:13 EST" name="setup" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setup -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:13 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:13 EST" name="checkCheckModifyTimeTracking" finished-at="2024-02-09T16:01:14 EST" duration-ms="1002" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- checkCheckModifyTimeTracking -->
+        <test-method signature="emptyMap()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="emptyMap" finished-at="2024-02-09T16:01:14 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- emptyMap -->
+        <test-method is-config="true" signature="setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="setup" finished-at="2024-02-09T16:01:14 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setup -->
+        <test-method signature="saveLoadUpdateRemove()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="saveLoadUpdateRemove" finished-at="2024-02-09T16:01:14 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- saveLoadUpdateRemove -->
+        <test-method signature="iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="iterator" finished-at="2024-02-09T16:01:14 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- iterator -->
+        <test-method is-config="true" signature="setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="setup" finished-at="2024-02-09T16:01:14 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setup -->
+        <test-method is-config="true" signature="setup()[pri:0, instance:org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest at 8458f04]" started-at="2024-02-09T16:01:14 EST" name="setup" finished-at="2024-02-09T16:01:14 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setup -->
+      </class> <!-- org.opensaml.core.xml.persist.impl.MapLoadSaveManagerTest -->
+      <class name="org.opensaml.core.xml.tests.MarshallingTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testMarshallingExistingEmptyDocument()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingExistingEmptyDocument" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingExistingEmptyDocument -->
+        <test-method signature="testMarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingWithAttributes" finished-at="2024-02-09T16:01:10 EST" duration-ms="18" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingWithAttributes -->
+        <test-method signature="testMarshallingReplaceDocumentRoot()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingReplaceDocumentRoot" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingReplaceDocumentRoot -->
+        <test-method signature="testMarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingWithChildElements" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingWithChildElements -->
+        <test-method signature="testMarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingWithElementContent" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingWithElementContent -->
+        <test-method signature="testMarshallingXMLFragment()[pri:0, instance:org.opensaml.core.xml.tests.MarshallingTest at d737b89]" started-at="2024-02-09T16:01:10 EST" name="testMarshallingXMLFragment" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallingXMLFragment -->
+      </class> <!-- org.opensaml.core.xml.tests.MarshallingTest -->
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectSourceTest">
+        <test-method signature="testBadCtorParams()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]" started-at="2024-02-09T16:01:10 EST" name="testBadCtorParams" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testBadCtorParams -->
+        <test-method signature="testGetterAndHashCodeAndEquals()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSourceTest at 53045c6c]" started-at="2024-02-09T16:01:10 EST" name="testGetterAndHashCodeAndEquals" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testGetterAndHashCodeAndEquals -->
+      </class> <!-- org.opensaml.core.xml.util.tests.XMLObjectSourceTest -->
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest">
+        <test-method signature="testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]" started-at="2024-02-09T16:01:10 EST" name="testAdd" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testAdd -->
+        <test-method signature="testIterator()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]" started-at="2024-02-09T16:01:10 EST" name="testIterator" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testIterator -->
+        <test-method signature="testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]" started-at="2024-02-09T16:01:10 EST" name="testClear" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testClear -->
+        <test-method signature="testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]" started-at="2024-02-09T16:01:10 EST" name="testRemove" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testRemove -->
+        <test-method signature="testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest at 795509d9]" started-at="2024-02-09T16:01:10 EST" name="testSet" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSet -->
+      </class> <!-- org.opensaml.core.xml.util.tests.XMLObjectChildrenListTest -->
+      <class name="org.opensaml.core.xml.tests.ElementProxyTest">
+        <test-method signature="testUnmarshallUnknownContent()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallUnknownContent" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallUnknownContent -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.ElementProxyTest at 2d901eb0]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+      </class> <!-- org.opensaml.core.xml.tests.ElementProxyTest -->
+      <class name="org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:11 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="buildTargetFileFromKey()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="buildTargetFileFromKey" finished-at="2024-02-09T16:01:11 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- buildTargetFileFromKey -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="tearDown" finished-at="2024-02-09T16:01:11 EST" duration-ms="4" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="buildTargetFileFromKeyWithIntermediateDirs()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="buildTargetFileFromKeyWithIntermediateDirs" finished-at="2024-02-09T16:01:11 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- buildTargetFileFromKeyWithIntermediateDirs -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="setUp" finished-at="2024-02-09T16:01:11 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="tearDown" finished-at="2024-02-09T16:01:11 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="checkCheckModifyTimeTracking()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="checkCheckModifyTimeTracking" finished-at="2024-02-09T16:01:13 EST" duration-ms="2013" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- checkCheckModifyTimeTracking -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:11 EST" name="setUp" finished-at="2024-02-09T16:01:11 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="ctorBaseDirPathExistsButNotADirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="ctorBaseDirPathExistsButNotADirectory" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <exception class="net.shibboleth.shared.logic.ConstraintViolationException">
+            <message>
+              <![CDATA[Existing base directory path was not a directory]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[net.shibboleth.shared.logic.ConstraintViolationException: Existing base directory path was not a directory
+at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:250)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:125)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorBaseDirPathExistsButNotADirectory(FilesystemLoadSaveManagerTest.java:345)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- net.shibboleth.shared.logic.ConstraintViolationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- ctorBaseDirPathExistsButNotADirectory -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="ctorCreateDirectory()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="ctorCreateDirectory" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- ctorCreateDirectory -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="ctorEmptyPathString()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="ctorEmptyPathString" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <exception class="net.shibboleth.shared.logic.ConstraintViolationException">
+            <message>
+              <![CDATA[Base directory string instance was null or empty]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[net.shibboleth.shared.logic.ConstraintViolationException: Base directory string instance was null or empty
+at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorEmptyPathString(FilesystemLoadSaveManagerTest.java:333)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- net.shibboleth.shared.logic.ConstraintViolationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- ctorEmptyPathString -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="ctorPathTrimming()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="ctorPathTrimming" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- ctorPathTrimming -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="ctorRelativeDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="ctorRelativeDir" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <exception class="net.shibboleth.shared.logic.ConstraintViolationException">
+            <message>
+              <![CDATA[Base directory specified was not an absolute path]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[net.shibboleth.shared.logic.ConstraintViolationException: Base directory specified was not an absolute path
+at net.shibboleth.shared.logic.Constraint.isTrue(Constraint.java:341)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:248)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.<init>(FilesystemLoadSaveManager.java:94)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.ctorRelativeDir(FilesystemLoadSaveManagerTest.java:338)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- net.shibboleth.shared.logic.ConstraintViolationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- ctorRelativeDir -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="emptyDir()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="emptyDir" finished-at="2024-02-09T16:01:13 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- emptyDir -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="iterator()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="iterator" finished-at="2024-02-09T16:01:13 EST" duration-ms="5" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- iterator -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="saveLoadUpdateRemove" data-provider="saveLoadUpdateRemoveParams" finished-at="2024-02-09T16:01:13 EST" duration-ms="24" status="PASS">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[false]]>
+              </value>
+            </param>
+          </params>
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- saveLoadUpdateRemove -->
+        <test-method signature="saveLoadUpdateRemove(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="saveLoadUpdateRemove" data-provider="saveLoadUpdateRemoveParams" finished-at="2024-02-09T16:01:13 EST" duration-ms="25" status="PASS">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[true]]>
+              </value>
+            </param>
+          </params>
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- saveLoadUpdateRemove -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="saveLoadUpdateRemoveWithIntermediateDirs" data-provider="saveLoadUpdateRemoveParams" finished-at="2024-02-09T16:01:13 EST" duration-ms="29" status="PASS">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[false]]>
+              </value>
+            </param>
+          </params>
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- saveLoadUpdateRemoveWithIntermediateDirs -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="saveLoadUpdateRemoveWithIntermediateDirs(java.lang.Boolean)[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="saveLoadUpdateRemoveWithIntermediateDirs" data-provider="saveLoadUpdateRemoveParams" finished-at="2024-02-09T16:01:13 EST" duration-ms="25" status="PASS">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[true]]>
+              </value>
+            </param>
+          </params>
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- saveLoadUpdateRemoveWithIntermediateDirs -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="targetExistsButIsNotAFile()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="targetExistsButIsNotAFile" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <exception class="java.io.IOException">
+            <message>
+              <![CDATA[Path exists based on specified key, but is not a file: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/abc]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[java.io.IOException: Path exists based on specified key, but is not a file: /var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/load-save-manager-test/abc
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:431)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetExistsButIsNotAFile(FilesystemLoadSaveManagerTest.java:295)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- java.io.IOException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- targetExistsButIsNotAFile -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="targetKeyIsEmpty()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="targetKeyIsEmpty" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <exception class="net.shibboleth.shared.logic.ConstraintViolationException">
+            <message>
+              <![CDATA[Input key was null or empty]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsEmpty(FilesystemLoadSaveManagerTest.java:310)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- net.shibboleth.shared.logic.ConstraintViolationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- targetKeyIsEmpty -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="setUp" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="targetKeyIsNull()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="targetKeyIsNull" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <exception class="net.shibboleth.shared.logic.ConstraintViolationException">
+            <message>
+              <![CDATA[Input key was null or empty]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[net.shibboleth.shared.logic.ConstraintViolationException: Input key was null or empty
+at net.shibboleth.shared.logic.Constraint.isNotNull(Constraint.java:306)
+at org.opensaml.core.xml.persist.FilesystemLoadSaveManager.buildFile(FilesystemLoadSaveManager.java:429)
+at org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest.targetKeyIsNull(FilesystemLoadSaveManagerTest.java:305)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- net.shibboleth.shared.logic.ConstraintViolationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- targetKeyIsNull -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest at 18271936]" started-at="2024-02-09T16:01:13 EST" name="tearDown" finished-at="2024-02-09T16:01:13 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.xml.persist.impl.FilesystemLoadSaveManagerTest -->
+      <class name="org.opensaml.core.xml.util.tests.AttributeMapTest">
+        <test-method is-config="true" signature="initOpenSAML()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="initOpenSAML" finished-at="2024-02-09T16:01:10 EST" duration-ms="564" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initOpenSAML -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="7" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testAttributeMapQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="testAttributeMapQualifiedAttributes" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testAttributeMapQualifiedAttributes -->
+        <test-method signature="testClear()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="testClear" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testClear -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testQNameAttributeValueAsQName()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="testQNameAttributeValueAsQName" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testQNameAttributeValueAsQName -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testQNameAttributeValueAsString()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="testQNameAttributeValueAsString" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testQNameAttributeValueAsString -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.util.tests.AttributeMapTest at 543295b0]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.util.tests.AttributeMapTest -->
+      <class name="org.opensaml.core.xml.tests.UnmarshallingTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testUnmarshallingWithAttributes()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithAttributes" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithAttributes -->
+        <test-method signature="testUnmarshallingWithChildElements()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithChildElements" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithChildElements -->
+        <test-method signature="testUnmarshallingWithElementContent()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingTest at 548d708a]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithElementContent" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithElementContent -->
+      </class> <!-- org.opensaml.core.xml.tests.UnmarshallingTest -->
+      <class name="org.opensaml.core.xml.config.tests.InitializationServiceTest">
+        <test-method signature="testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]" started-at="2024-02-09T16:01:10 EST" name="testProviderInit" finished-at="2024-02-09T16:01:10 EST" duration-ms="27" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testProviderInit -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.InitializationServiceTest at 5149d738]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.xml.config.tests.InitializationServiceTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSDateTimeTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="4" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testUnmarshallCanonical()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallCanonical" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallCanonical -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testUnmarshallNoFractional()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallNoFractional" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallNoFractional -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSDateTimeTest at 72035809]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSDateTimeTest -->
+      <class name="org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testMarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testMarshallNil" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallNil -->
+        <test-method signature="testMarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testMarshallNoNamespaceSchemaLocation" finished-at="2024-02-09T16:01:10 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallNoNamespaceSchemaLocation -->
+        <test-method signature="testMarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testMarshallSchemaLocation" finished-at="2024-02-09T16:01:10 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshallSchemaLocation -->
+        <test-method signature="testUnmarshallNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallNil" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallNil -->
+        <test-method signature="testUnmarshallNoNil()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallNoNil" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallNoNil -->
+        <test-method signature="testUnmarshallNoNamespaceSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallNoNamespaceSchemaLocation" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallNoNamespaceSchemaLocation -->
+        <test-method signature="testUnmarshallSchemaLocation()[pri:0, instance:org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest at 35dab4eb]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallSchemaLocation" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallSchemaLocation -->
+      </class> <!-- org.opensaml.core.xml.tests.XMLObjectXSIAttribsTest -->
+      <class name="org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest">
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testProviderInit()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]" started-at="2024-02-09T16:01:10 EST" name="testProviderInit" finished-at="2024-02-09T16:01:10 EST" duration-ms="10" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testProviderInit -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest at 3a7442c7]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.xml.config.tests.XMLObjectProviderInitializerTest -->
+      <class name="org.opensaml.core.xml.tests.NamespaceManagerTest">
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testNSDeclaration()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testNSDeclaration" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testNSDeclaration -->
+        <test-method signature="testNonVisibleNamespacePrefixes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testNonVisibleNamespacePrefixes" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testNonVisibleNamespacePrefixes -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testObjectType()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testObjectType" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testObjectType -->
+        <test-method signature="testObjectName()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testObjectName" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testObjectName -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testQNameAttributeValue()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testQNameAttributeValue" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testQNameAttributeValue -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testQualifiedAttributes()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testQualifiedAttributes" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testQualifiedAttributes -->
+        <test-method signature="testQNameElementContent()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="testQNameElementContent" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testQNameElementContent -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.tests.NamespaceManagerTest at 8519cb4]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.tests.NamespaceManagerTest -->
+      <class name="org.opensaml.core.xml.tests.UnmarshallingSecurityTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testUnmarshallingWithCDATAInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCDATAInElementContentDefaults" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCDATAInElementContentDefaults -->
+        <test-method is-config="true" signature="setup()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="setup" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setup -->
+        <test-method signature="testUnmarshallingWithCDATAInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCDATAInElementContentInsecure" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <exception class="org.opensaml.core.xml.io.UnmarshallingException">
+            <message>
+              <![CDATA[Saw illegal CDATA node in parsed DOM, likely due to improper parser configuration]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opensaml.core.xml.io.UnmarshallingException: Saw illegal CDATA node in parsed DOM, likely due to improper parser configuration
+at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:143)
+at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCDATAInElementContentInsecure(UnmarshallingSecurityTest.java:110)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- org.opensaml.core.xml.io.UnmarshallingException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCDATAInElementContentInsecure -->
+        <test-method signature="testUnmarshallingWithCommentBetweenChildElementsDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCommentBetweenChildElementsDefaults" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCommentBetweenChildElementsDefaults -->
+        <test-method signature="testUnmarshallingWithCommentBetweenChildElementsInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCommentBetweenChildElementsInsecure" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <exception class="org.opensaml.core.xml.io.UnmarshallingException">
+            <message>
+              <![CDATA[Saw illegal Comment node in parsed DOM, likely due to improper parser configuration]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentBetweenChildElementsInsecure(UnmarshallingSecurityTest.java:142)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- org.opensaml.core.xml.io.UnmarshallingException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCommentBetweenChildElementsInsecure -->
+        <test-method signature="testUnmarshallingWithCommentInElementContentDefaults()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCommentInElementContentDefaults" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCommentInElementContentDefaults -->
+        <test-method signature="testUnmarshallingWithCommentInElementContentInsecure()[pri:0, instance:org.opensaml.core.xml.tests.UnmarshallingSecurityTest at 28261e8e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshallingWithCommentInElementContentInsecure" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <exception class="org.opensaml.core.xml.io.UnmarshallingException">
+            <message>
+              <![CDATA[Saw illegal Comment node in parsed DOM, likely due to improper parser configuration]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opensaml.core.xml.io.UnmarshallingException: Saw illegal Comment node in parsed DOM, likely due to improper parser configuration
+at org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:146)
+at org.opensaml.core.xml.tests.UnmarshallingSecurityTest.testUnmarshallingWithCommentInElementContentInsecure(UnmarshallingSecurityTest.java:78)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- org.opensaml.core.xml.io.UnmarshallingException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshallingWithCommentInElementContentInsecure -->
+      </class> <!-- org.opensaml.core.xml.tests.UnmarshallingSecurityTest -->
+      <class name="org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest">
+        <test-method signature="basic()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]" started-at="2024-02-09T16:01:13 EST" name="basic" finished-at="2024-02-09T16:01:13 EST" duration-ms="4" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- basic -->
+        <test-method signature="sourceTooShort()[pri:0, instance:org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest at 606e4010]" started-at="2024-02-09T16:01:13 EST" name="sourceTooShort" finished-at="2024-02-09T16:01:13 EST" duration-ms="1" status="PASS">
+          <exception class="org.opensaml.core.xml.XMLRuntimeException">
+            <message>
+              <![CDATA[Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opensaml.core.xml.XMLRuntimeException: Source length 14 is less than number (8) * length (2) of segments: aabbccddeeffgg
+at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategy.apply(SegmentingIntermediateDirectoryStrategy.java:84)
+at org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest.sourceTooShort(SegmentingIntermediateDirectoryStrategyTest.java:49)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+]]>
+            </full-stacktrace>
+          </exception> <!-- org.opensaml.core.xml.XMLRuntimeException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- sourceTooShort -->
+      </class> <!-- org.opensaml.core.xml.persist.impl.SegmentingIntermediateDirectoryStrategyTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSIntegerTest">
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSIntegerTest at 5f049ea1]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSIntegerTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSStringTest">
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSStringTest at 909217e]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSStringTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSURITest">
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSURITest at 72cc7e6f]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSURITest -->
+      <class name="org.opensaml.core.xml.config.tests.ConfigurationTest">
+        <test-method is-config="true" signature="initClass()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="initClass" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initClass -->
+        <test-method signature="testIDAttributeConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="testIDAttributeConfiguration" finished-at="2024-02-09T16:01:10 EST" duration-ms="6" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testIDAttributeConfiguration -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="testIDAttributeRegistration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="testIDAttributeRegistration" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testIDAttributeRegistration -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="testInvalidConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="testInvalidConfiguration" finished-at="2024-02-09T16:01:10 EST" duration-ms="8" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testInvalidConfiguration -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+        <test-method signature="testObjectProviderConfiguration()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="testObjectProviderConfiguration" finished-at="2024-02-09T16:01:10 EST" duration-ms="8" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testObjectProviderConfiguration -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method is-config="true" signature="tearDown()[pri:0, instance:org.opensaml.core.xml.config.tests.ConfigurationTest at 6bbe85a8]" started-at="2024-02-09T16:01:10 EST" name="tearDown" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDown -->
+      </class> <!-- org.opensaml.core.xml.config.tests.ConfigurationTest -->
+      <class name="org.opensaml.core.xml.tests.IDAttributeTest">
+        <test-method signature="testAttributeMap()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testAttributeMap" finished-at="2024-02-09T16:01:10 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testAttributeMap -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testAttributeMapOps()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testAttributeMapOps" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testAttributeMapOps -->
+        <test-method signature="testChangePropagationInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testChangePropagationInList" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testChangePropagationInList -->
+        <test-method signature="testComplexUnmarshallInList()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testComplexUnmarshallInList" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testComplexUnmarshallInList -->
+        <test-method signature="testGlobalIDRegistration()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testGlobalIDRegistration" finished-at="2024-02-09T16:01:10 EST" duration-ms="2" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testGlobalIDRegistration -->
+        <test-method signature="testListOpChangePropagation()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testListOpChangePropagation" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testListOpChangePropagation -->
+        <test-method signature="testSimpleUnmarshall()[pri:0, instance:org.opensaml.core.xml.tests.IDAttributeTest at 4b013c76]" started-at="2024-02-09T16:01:10 EST" name="testSimpleUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSimpleUnmarshall -->
+      </class> <!-- org.opensaml.core.xml.tests.IDAttributeTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSQNameTest">
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSQNameTest at 3ba987b8]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSQNameTest -->
+      <class name="org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest">
+        <test-method signature="testRemove()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]" started-at="2024-02-09T16:01:10 EST" name="testRemove" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testRemove -->
+        <test-method signature="testAdd()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]" started-at="2024-02-09T16:01:10 EST" name="testAdd" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testAdd -->
+        <test-method signature="testSet()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]" started-at="2024-02-09T16:01:10 EST" name="testSet" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSet -->
+        <test-method signature="testSublist()[pri:0, instance:org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest at 19e4653c]" started-at="2024-02-09T16:01:10 EST" name="testSublist" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testSublist -->
+      </class> <!-- org.opensaml.core.xml.util.tests.IndexedXMLObjectChildrenListTest -->
+      <class name="org.opensaml.core.xml.util.tests.XMLObjectSupportTest">
+        <test-method signature="testBuildXMLObject()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="testBuildXMLObject" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testBuildXMLObject -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testXMLObjectCloneInputMarshalling()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="testXMLObjectCloneInputMarshalling" finished-at="2024-02-09T16:01:10 EST" duration-ms="18" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testXMLObjectCloneInputMarshalling -->
+        <test-method signature="testXMLObjectCloneWithDropDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="testXMLObjectCloneWithDropDOM" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testXMLObjectCloneWithDropDOM -->
+        <test-method signature="testXMLObjectCloneWithRootInNewDocument()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="testXMLObjectCloneWithRootInNewDocument" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testXMLObjectCloneWithRootInNewDocument -->
+        <test-method signature="testXMLObjectCloneWithUnrootedDOM()[pri:0, instance:org.opensaml.core.xml.util.tests.XMLObjectSupportTest at 58cbafc2]" started-at="2024-02-09T16:01:10 EST" name="testXMLObjectCloneWithUnrootedDOM" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testXMLObjectCloneWithUnrootedDOM -->
+      </class> <!-- org.opensaml.core.xml.util.tests.XMLObjectSupportTest -->
+      <class name="org.opensaml.core.xml.tests.AbstractXMLObjectTest">
+        <test-method signature="testDOMAndXMLObjectSourceDropOnMutateAttribute()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]" started-at="2024-02-09T16:01:10 EST" name="testDOMAndXMLObjectSourceDropOnMutateAttribute" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testDOMAndXMLObjectSourceDropOnMutateAttribute -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method signature="testDOMAndXMLObjectSourceDropOnMutateChildElements()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]" started-at="2024-02-09T16:01:10 EST" name="testDOMAndXMLObjectSourceDropOnMutateChildElements" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testDOMAndXMLObjectSourceDropOnMutateChildElements -->
+        <test-method signature="testDOMAndXMLObjectSourceDropOnMutateContent()[pri:0, instance:org.opensaml.core.xml.tests.AbstractXMLObjectTest at 4be29ed9]" started-at="2024-02-09T16:01:10 EST" name="testDOMAndXMLObjectSourceDropOnMutateContent" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testDOMAndXMLObjectSourceDropOnMutateContent -->
+      </class> <!-- org.opensaml.core.xml.tests.AbstractXMLObjectTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSBase64BinaryTest">
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBase64BinaryTest at 5afa3c9]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSBase64BinaryTest -->
+      <class name="org.opensaml.core.xml.schema.impl.XSBooleanTest">
+        <test-method signature="testMarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]" started-at="2024-02-09T16:01:10 EST" name="testMarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="3" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testMarshall -->
+        <test-method is-config="true" signature="initXMLObjectSupport()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]" started-at="2024-02-09T16:01:10 EST" name="initXMLObjectSupport" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- initXMLObjectSupport -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+        <test-method signature="testUnmarshall()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]" started-at="2024-02-09T16:01:10 EST" name="testUnmarshall" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- testUnmarshall -->
+        <test-method is-config="true" signature="setUp()[pri:0, instance:org.opensaml.core.xml.schema.impl.XSBooleanTest at 3f191845]" started-at="2024-02-09T16:01:10 EST" name="setUp" finished-at="2024-02-09T16:01:10 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setUp -->
+      </class> <!-- org.opensaml.core.xml.schema.impl.XSBooleanTest -->
+    </test> <!-- Surefire test -->
+  </suite> <!-- Surefire suite -->
+</testng-results>
diff --git a/opensaml-core-impl/target/surefire-reports/testng.css b/opensaml-core-impl/target/surefire-reports/testng.css
new file mode 100644
index 000000000..5124ba863
--- /dev/null
+++ b/opensaml-core-impl/target/surefire-reports/testng.css
@@ -0,0 +1,9 @@
+.invocation-failed,  .test-failed  { background-color: #DD0000; }
+.invocation-percent, .test-percent { background-color: #006600; }
+.invocation-passed,  .test-passed  { background-color: #00AA00; }
+.invocation-skipped, .test-skipped { background-color: #CCCC00; }
+
+.main-page {
+  font-size: x-large;
+}
+
diff --git a/opensaml-core-impl/target/test-classes/logback-test.xml b/opensaml-core-impl/target/test-classes/logback-test.xml
new file mode 100644
index 000000000..e31c2f38e
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/logback-test.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%-5level %logger{0} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <logger name="org.opensaml.core.xml.persist">
+        <level value="DEBUG"/>
+    </logger>
+    
+    <logger name="org.opensaml">
+        <level value="WARN"/>
+    </logger>
+    
+    <root>
+        <appender-ref ref="STDOUT"/>
+        <level value="WARN"/>
+    </root>
+    
+</configuration>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttribute.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttribute.xml
new file mode 100644
index 000000000..b9f9cc605
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttribute.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" Id="IDLevel1"/>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeGlobal.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeGlobal.xml
new file mode 100644
index 000000000..1c73959fa
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeGlobal.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:Foo xmlns:test="http://www.example.org" test:id="GlobalID1">
+    <test:Bar test:id="GlobalID2"/>
+</test:Foo>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithAttributeMap.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithAttributeMap.xml
new file mode 100644
index 000000000..cb47f8ec5
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithAttributeMap.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<products>
+    <product xmlns="http://example.com/product-info" xmlns:html="http://www.w3.org/1999/xhtml" id="1144">
+        <name xml:lang="en">Python Perfect IDE</name>
+        <description>
+            Uses mind-reading technology to anticipate and accommodate
+            all user needs in Python development.  Implements all
+            <html:code>from __future__ import</html:code> features though
+            the year 3000.  Works well with <code>1166</code>.
+        </description>
+    </product>
+    <p:product xmlns:p="http://example.com/product-info" id="1166">
+        <p:name>XSLT Perfect IDE</p:name>
+        <p:description xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xl="http://www.w3.org/1999/xlink">
+            <p:code>red</p:code>
+            <html:code>blue</html:code>
+            <html:div>
+                <ref xl:type="simple" xl:href="index.xml">A link</ref>
+            </html:div>
+        </p:description>
+    </p:product>
+</products>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithChildrenList.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithChildrenList.xml
new file mode 100644
index 000000000..5dea183dd
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/IDAttributeWithChildrenList.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" Id="IDLevel1">
+    <test:SimpleElement Id="IDLevel2A">
+        <test:SimpleElement Id="IDLevel3A">
+            <test:SimpleElement Id="IDLevel4A"/>
+            <test:SimpleElement/>
+        </test:SimpleElement>
+        <test:SimpleElement/>
+        <test:SimpleElement Id="IDLevel3B"/>
+        <test:SimpleElement Id="IDLevel3C"/>
+    </test:SimpleElement>
+    <test:SimpleElement Id="IDLevel2B"/>
+    <test:SimpleElement/>
+    <test:SimpleElement Id="IDLevel2C"/>
+</test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessage.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessage.xml
new file mode 100644
index 000000000..5f7382c07
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessage.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" S:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><S:Header/><S:Body><test:Statement xmlns:test="http://www.example.org/testObjects"/></S:Body></S:Envelope>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessageWithContent.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessageWithContent.xml
new file mode 100644
index 000000000..4999309c8
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SOAPMessageWithContent.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" S:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><S:Header/><S:Body><test:Statement xmlns:test="http://www.example.org/testObjects"/><test:Statement xmlns:test="http://www.example.org/testObjects"/></S:Body></S:Envelope>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNil.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNil.xml
new file mode 100644
index 000000000..b99bb09e2
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNil.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNoNamespaceSchemaLocation.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNoNamespaceSchemaLocation.xml
new file mode 100644
index 000000000..f62f97eee
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectNoNamespaceSchemaLocation.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.example.com/Test.xsd"/>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectSchemaLocation.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectSchemaLocation.xml
new file mode 100644
index 000000000..ea94f41f2
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectSchemaLocation.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/Test http://www.example.com/Test.xsd"/>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithAttribute.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithAttribute.xml
new file mode 100644
index 000000000..d40421873
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithAttribute.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects" Id="Firefly"/>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCDATAInContent.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCDATAInContent.xml
new file mode 100644
index 000000000..0a010feb5
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCDATAInContent.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects">Con<![CDATA[tent]]>1</test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithChildren.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithChildren.xml
new file mode 100644
index 000000000..8afe7228c
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithChildren.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects"><test:SimpleElement/><test:SimpleElement/></test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentBetweenChildren.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentBetweenChildren.xml
new file mode 100644
index 000000000..49ae90751
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentBetweenChildren.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects">
+    <test:SimpleElement/>
+    <!-- blah blah -->
+    <test:SimpleElement/>
+</test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentInContent.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentInContent.xml
new file mode 100644
index 000000000..ba26d6e3f
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithCommentInContent.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects">Con<!-- blarty flart -->tent1</test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithContent.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithContent.xml
new file mode 100644
index 000000000..23d63ac60
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/SimpleXMLObjectWithContent.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<test:SimpleElement xmlns:test="http://www.example.org/testObjects"><test:SimpleElement>Con<![CDATA[tent]]>1</test:SimpleElement><test:SimpleElement><![CDATA[Con]]>tent2</test:SimpleElement><test:SimpleElement><test:SimpleElement>Content<![CDATA[3]]></test:SimpleElement></test:SimpleElement></test:SimpleElement>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/UnknownContent.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/UnknownContent.xml
new file mode 100644
index 000000000..14a56090e
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/UnknownContent.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<products>
+    <product xmlns="http://example.com/product-info" xmlns:html="http://www.w3.org/1999/xhtml" id="1144">
+        <name xml:lang="en">Python Perfect IDE</name>
+        <description>
+            Uses mind-reading technology to anticipate and accommodate
+            all user needs in Python development.  Implements all
+            <html:code>from __future__ import</html:code> features though
+            the year 3000.  Works well with <code>1166</code>.
+        </description>
+    </product>
+    <p:product xmlns:p="http://example.com/product-info" id="1166">
+        <p:name><![CDATA[<strong>XSLT Perfect IDE</strong>]]></p:name>
+        <p:description xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xl="http://www.w3.org/1999/xlink">
+            <p:code>red</p:code>
+            <html:code>blue</html:code>
+            <html:div>
+                <ref xl:type="simple" xl:href="index.xml">A link</ref>
+            </html:div>
+        </p:description>
+    </p:product>
+</products>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/IDAttributeConfiguration.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/IDAttributeConfiguration.xml
new file mode 100644
index 000000000..15808df04
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/IDAttributeConfiguration.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xt:XMLTooling xmlns:xt="http://www.opensaml.org/xmltooling-config" xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  
+  <xt:IDAttributes>
+    <xt:IDAttribute>test:foo</xt:IDAttribute>
+    <xt:IDAttribute>  test:bar  </xt:IDAttribute>
+    <xt:IDAttribute>
+      test:baz  
+    </xt:IDAttribute>
+  </xt:IDAttributes>
+  
+</xt:XMLTooling>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/InvalidConfiguration.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/InvalidConfiguration.xml
new file mode 100644
index 000000000..0badae86f
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/InvalidConfiguration.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xt:XMLTooling xmlns:xt="http://www.opensaml.org/xmltooling-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  
+    <xt:BogusElement/>
+  
+</xt:XMLTooling>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/NonexistantClassConfiguration.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/NonexistantClassConfiguration.xml
new file mode 100644
index 000000000..c2f5c6164
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/NonexistantClassConfiguration.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xt:XMLTooling xmlns:xt="http://www.opensaml.org/xmltooling-config" xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+  <xt:ObjectProviders>
+    <xt:ObjectProvider qualifiedName="test:SimpleElement">
+      <xt:BuilderClass className="foo"/>
+      <xt:MarshallingClass className="foo"/>
+      <xt:UnmarshallingClass className="foo"/>
+    </xt:ObjectProvider>
+  </xt:ObjectProviders>
+  
+</xt:XMLTooling>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/SimpleXMLObjectConfiguration.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/SimpleXMLObjectConfiguration.xml
new file mode 100644
index 000000000..374668f11
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/SimpleXMLObjectConfiguration.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xt:XMLTooling xmlns:xt="http://www.opensaml.org/xmltooling-config" xmlns:test="http://www.example.org/testObjects" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+  <xt:ObjectProviders>
+    <xt:ObjectProvider qualifiedName="test:SimpleElement">
+      <xt:BuilderClass className="org.opensaml.core.xml.mock.SimpleXMLObjectBuilder">
+        <test:foo/>
+      </xt:BuilderClass>
+      <xt:MarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectMarshaller"/>
+      <xt:UnmarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectUnmarshaller"/>
+    </xt:ObjectProvider>
+  </xt:ObjectProviders>
+  
+</xt:XMLTooling>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/ConfigurationTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/ConfigurationTest.class
new file mode 100644
index 000000000..19c0d88d7
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/ConfigurationTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/InitializationServiceTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/InitializationServiceTest.class
new file mode 100644
index 000000000..baaab1391
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/InitializationServiceTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/XMLObjectProviderInitializerTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/XMLObjectProviderInitializerTest.class
new file mode 100644
index 000000000..a615a7108
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/config/tests/XMLObjectProviderInitializerTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/keys.jks b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/keys.jks
new file mode 100644
index 000000000..6a52664ba
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/keys.jks differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/FilesystemLoadSaveManagerTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/FilesystemLoadSaveManagerTest.class
new file mode 100644
index 000000000..3c47941b9
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/FilesystemLoadSaveManagerTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/MapLoadSaveManagerTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/MapLoadSaveManagerTest.class
new file mode 100644
index 000000000..43daaeef9
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/MapLoadSaveManagerTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategyTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategyTest.class
new file mode 100644
index 000000000..63c1ffb93
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/persist/impl/SegmentingIntermediateDirectoryStrategyTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryTest.class
new file mode 100644
index 000000000..a538a60a2
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBase64BinaryTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBooleanTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBooleanTest.class
new file mode 100644
index 000000000..6535785f4
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSBooleanTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSDateTimeTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSDateTimeTest.class
new file mode 100644
index 000000000..0391580ad
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSDateTimeTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSIntegerTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSIntegerTest.class
new file mode 100644
index 000000000..3d9745ad3
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSIntegerTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSQNameTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSQNameTest.class
new file mode 100644
index 000000000..c4d1c6fc4
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSQNameTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSStringTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSStringTest.class
new file mode 100644
index 000000000..4ee993124
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSStringTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSURITest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSURITest.class
new file mode 100644
index 000000000..ecba633a6
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/XSURITest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBase64Binary.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBase64Binary.xml
new file mode 100644
index 000000000..29bd0bf69
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBase64Binary.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:base64Binary">
+   abcdABCDE===
+</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBoolean.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBoolean.xml
new file mode 100644
index 000000000..a41e2cd1d
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsBoolean.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:boolean">true</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-basic.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-basic.xml
new file mode 100644
index 000000000..669b0a905
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-basic.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:dateTime">2010-04-05T18:52:42.790Z</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-canonical.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-canonical.xml
new file mode 100644
index 000000000..091c27636
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-canonical.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:dateTime">2010-04-05T18:52:42.79Z</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-nofractional.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-nofractional.xml
new file mode 100644
index 000000000..6959c92d7
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsDateTime-nofractional.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:dateTime">2010-04-05T18:52:42Z</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsInteger.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsInteger.xml
new file mode 100644
index 000000000..197205786
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsInteger.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:integer">
+  1967
+</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsQName.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsQName.xml
new file mode 100644
index 000000000..8e3a54155
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsQName.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:baz="urn:example.org:baz" xsi:type="xsd:QName">baz:SomeValue</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsString.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsString.xml
new file mode 100644
index 000000000..01a721a2e
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsString.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<foo:bar xmlns:foo="urn:example.org:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">test</foo:bar>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsURI.xml b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsURI.xml
new file mode 100644
index 000000000..ab6f23c46
--- /dev/null
+++ b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/schema/impl/xsURI.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<saml:AttributeValue xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:anyURI">urn:test:foo:bar:baz</saml:AttributeValue>
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/AbstractXMLObjectTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/AbstractXMLObjectTest.class
new file mode 100644
index 000000000..f34952edd
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/AbstractXMLObjectTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/ElementProxyTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/ElementProxyTest.class
new file mode 100644
index 000000000..a2c99e0d6
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/ElementProxyTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/IDAttributeTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/IDAttributeTest.class
new file mode 100644
index 000000000..c9ed284e9
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/IDAttributeTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/MarshallingTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/MarshallingTest.class
new file mode 100644
index 000000000..19ffd2d1d
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/MarshallingTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/NamespaceManagerTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/NamespaceManagerTest.class
new file mode 100644
index 000000000..8b7307b89
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/NamespaceManagerTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingSecurityTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingSecurityTest.class
new file mode 100644
index 000000000..c0345c09d
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingSecurityTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingTest.class
new file mode 100644
index 000000000..2c9324d15
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/UnmarshallingTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/XMLObjectXSIAttribsTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/XMLObjectXSIAttribsTest.class
new file mode 100644
index 000000000..d4beb9329
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/tests/XMLObjectXSIAttribsTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/AttributeMapTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/AttributeMapTest.class
new file mode 100644
index 000000000..ab4b9bb5c
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/AttributeMapTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/IndexedXMLObjectChildrenListTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/IndexedXMLObjectChildrenListTest.class
new file mode 100644
index 000000000..eff5a3a5e
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/IndexedXMLObjectChildrenListTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectChildrenListTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectChildrenListTest.class
new file mode 100644
index 000000000..be899e04a
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectChildrenListTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSourceTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSourceTest.class
new file mode 100644
index 000000000..67b83dbe4
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSourceTest.class differ
diff --git a/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSupportTest.class b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSupportTest.class
new file mode 100644
index 000000000..7bee54d68
Binary files /dev/null and b/opensaml-core-impl/target/test-classes/org/opensaml/core/xml/util/tests/XMLObjectSupportTest.class differ
diff --git a/opensaml-parent/pom.xml b/opensaml-parent/pom.xml
index 2cc0fb6be..d812833f2 100644
--- a/opensaml-parent/pom.xml
+++ b/opensaml-parent/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>net.shibboleth</groupId>
         <artifactId>parent</artifactId>
-        <version>11.3.6-SNAPSHOT</version>
+        <version>11.3.6</version>
     </parent>
 
     <name>OpenSAML</name>
diff --git a/opensaml-spring/target/classes/META-INF/MANIFEST.MF b/opensaml-spring/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..901e0a417
--- /dev/null
+++ b/opensaml-spring/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Build-Jdk-Spec: 21
+Automatic-Module-Name: org.opensaml.spring
+Created-By: Maven Integration for Eclipse
+Sealed: true
+
diff --git a/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.properties b/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.properties
new file mode 100644
index 000000000..e623fd158
--- /dev/null
+++ b/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Fri Mar 01 18:28:58 EST 2024
+artifactId=opensaml-spring
+groupId=org.opensaml
+m2e.projectLocation=/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring
+m2e.projectName=opensaml-spring
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.xml b/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.xml
new file mode 100644
index 000000000..6dcb56c88
--- /dev/null
+++ b/opensaml-spring/target/classes/META-INF/maven/org.opensaml/opensaml-spring/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opensaml</groupId>
+        <artifactId>opensaml-parent</artifactId>
+        <version>5.1.0-SNAPSHOT</version>
+    </parent>
+
+    <name>OpenSAML :: Spring Support</name>
+    <description>Spring Support</description>
+    <artifactId>opensaml-spring</artifactId>
+    <packaging>jar</packaging>
+
+    <properties>
+        <automatic.module.name>org.opensaml.spring</automatic.module.name>
+    </properties>
+
+    <dependencies>
+        <!-- Compile Dependencies -->
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-security-impl</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-impl</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
+            <!-- Exception to usual test scope. -->
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.cryptacular</groupId>
+            <artifactId>cryptacular</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk18on</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>${httpclient.groupId}</groupId>
+            <artifactId>${httpclient.artifactId}</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-beans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-core</artifactId>
+        </dependency>
+
+        <!-- Provided Dependencies -->
+
+        <!-- Runtime Dependencies -->
+
+        <!-- Test Dependencies -->
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-context</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+</project>
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/config/SpringConfigurationPropertiesSource.class b/opensaml-spring/target/classes/org/opensaml/spring/config/SpringConfigurationPropertiesSource.class
new file mode 100644
index 000000000..e494bc657
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/config/SpringConfigurationPropertiesSource.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/config/SpringPropertiesAdapter.class b/opensaml-spring/target/classes/org/opensaml/spring/config/SpringPropertiesAdapter.class
new file mode 100644
index 000000000..298b1545b
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/config/SpringPropertiesAdapter.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/config/package-info.class b/opensaml-spring/target/classes/org/opensaml/spring/config/package-info.class
new file mode 100644
index 000000000..065cecf5f
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/config/package-info.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean$SecretKeyEncoding.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean$SecretKeyEncoding.class
new file mode 100644
index 000000000..9b8a53785
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean$SecretKeyEncoding.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean.class
new file mode 100644
index 000000000..6a6f6fe64
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractCredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractCredentialFactoryBean.class
new file mode 100644
index 000000000..cf445c4d2
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractCredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractX509CredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractX509CredentialFactoryBean.class
new file mode 100644
index 000000000..9edaae936
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/AbstractX509CredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicInlineCredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicInlineCredentialFactoryBean.class
new file mode 100644
index 000000000..2c8c35435
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicInlineCredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicResourceCredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicResourceCredentialFactoryBean.class
new file mode 100644
index 000000000..1b28cc06d
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicResourceCredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBean.class
new file mode 100644
index 000000000..919604fbb
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/X509InlineCredentialFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/X509InlineCredentialFactoryBean.class
new file mode 100644
index 000000000..e2c8891b1
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/X509InlineCredentialFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/credential/package-info.class b/opensaml-spring/target/classes/org/opensaml/spring/credential/package-info.class
new file mode 100644
index 000000000..744edc294
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/credential/package-info.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/httpclient/HttpClientSecurityParametersMergingFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/httpclient/HttpClientSecurityParametersMergingFactoryBean.class
new file mode 100644
index 000000000..324f46663
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/httpclient/HttpClientSecurityParametersMergingFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/httpclient/package-info.class b/opensaml-spring/target/classes/org/opensaml/spring/httpclient/package-info.class
new file mode 100644
index 000000000..a6af4b4f7
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/httpclient/package-info.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.class
new file mode 100644
index 000000000..5a2b5723d
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/tls/package-info.class b/opensaml-spring/target/classes/org/opensaml/spring/tls/package-info.class
new file mode 100644
index 000000000..dcc3d5b6d
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/tls/package-info.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/AbstractBasicPKIXValidationInfoFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/AbstractBasicPKIXValidationInfoFactoryBean.class
new file mode 100644
index 000000000..226e50bcf
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/AbstractBasicPKIXValidationInfoFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingSignatureTrustEngineFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingSignatureTrustEngineFactoryBean.class
new file mode 100644
index 000000000..7b8e9e2b0
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingSignatureTrustEngineFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingTrustEngineFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingTrustEngineFactoryBean.class
new file mode 100644
index 000000000..f5f84b800
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/ChainingTrustEngineFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXInlineValidationInfoFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXInlineValidationInfoFactoryBean.class
new file mode 100644
index 000000000..8a109fb45
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXInlineValidationInfoFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXResourceValidationInfoFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXResourceValidationInfoFactoryBean.class
new file mode 100644
index 000000000..277ec6156
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/PKIXResourceValidationInfoFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBean.class
new file mode 100644
index 000000000..b04d5a880
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticPKIXFactoryBean.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticPKIXFactoryBean.class
new file mode 100644
index 000000000..cbb74ad2a
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/StaticPKIXFactoryBean.class differ
diff --git a/opensaml-spring/target/classes/org/opensaml/spring/trust/package-info.class b/opensaml-spring/target/classes/org/opensaml/spring/trust/package-info.class
new file mode 100644
index 000000000..6012e2231
Binary files /dev/null and b/opensaml-spring/target/classes/org/opensaml/spring/trust/package-info.class differ
diff --git a/opensaml-spring/target/maven-archiver/pom.properties b/opensaml-spring/target/maven-archiver/pom.properties
new file mode 100644
index 000000000..5d12cc01a
--- /dev/null
+++ b/opensaml-spring/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=opensaml-spring
+groupId=org.opensaml
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 000000000..9f874b0a7
--- /dev/null
+++ b/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,25 @@
+org/opensaml/spring/trust/PKIXResourceValidationInfoFactoryBean.class
+org/opensaml/spring/trust/package-info.class
+org/opensaml/spring/credential/BasicResourceCredentialFactoryBean.class
+org/opensaml/spring/credential/AbstractX509CredentialFactoryBean.class
+org/opensaml/spring/trust/PKIXInlineValidationInfoFactoryBean.class
+org/opensaml/spring/credential/AbstractCredentialFactoryBean.class
+org/opensaml/spring/trust/StaticPKIXFactoryBean.class
+org/opensaml/spring/config/SpringPropertiesAdapter.class
+org/opensaml/spring/trust/ChainingSignatureTrustEngineFactoryBean.class
+org/opensaml/spring/httpclient/package-info.class
+org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.class
+org/opensaml/spring/tls/package-info.class
+org/opensaml/spring/credential/BasicInlineCredentialFactoryBean.class
+org/opensaml/spring/trust/StaticExplicitKeyFactoryBean.class
+org/opensaml/spring/httpclient/HttpClientSecurityParametersMergingFactoryBean.class
+org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean.class
+org/opensaml/spring/config/package-info.class
+org/opensaml/spring/config/SpringConfigurationPropertiesSource.class
+org/opensaml/spring/trust/ChainingTrustEngineFactoryBean.class
+org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean$SecretKeyEncoding.class
+org/opensaml/spring/trust/AbstractBasicPKIXValidationInfoFactoryBean.class
+org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean$1.class
+org/opensaml/spring/credential/package-info.class
+org/opensaml/spring/credential/X509InlineCredentialFactoryBean.class
+org/opensaml/spring/credential/BasicX509CredentialFactoryBean.class
diff --git a/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 000000000..96843836f
--- /dev/null
+++ b/opensaml-spring/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,23 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/config/SpringConfigurationPropertiesSource.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/config/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/tls/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/ChainingSignatureTrustEngineFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/AbstractBasicCredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/X509InlineCredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/AbstractBasicPKIXValidationInfoFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/PKIXResourceValidationInfoFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/BasicInlineCredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/PKIXInlineValidationInfoFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/httpclient/HttpClientSecurityParametersMergingFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/AbstractX509CredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/httpclient/package-info.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/StaticPKIXFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/StaticExplicitKeyFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/config/SpringPropertiesAdapter.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/trust/ChainingTrustEngineFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/AbstractCredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/BasicResourceCredentialFactoryBean.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/main/java/org/opensaml/spring/credential/BasicX509CredentialFactoryBean.java
diff --git a/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 000000000..5cf458bc8
--- /dev/null
+++ b/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1,7 @@
+org/opensaml/spring/trust/MockTrustEngine.class
+org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockX509CredentialNameEvaluator.class
+org/opensaml/spring/trust/StaticPKIXFactoryBeanTest.class
+org/opensaml/spring/credential/BasicX509CredentialFactoryBeanTest.class
+org/opensaml/spring/trust/AbstractSecurityTest.class
+org/opensaml/spring/trust/StaticExplicitKeyFactoryBeanTest.class
+org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockPKIXTrustEvaluator.class
diff --git a/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 000000000..11c429f06
--- /dev/null
+++ b/opensaml-spring/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1,5 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/test/java/org/opensaml/spring/trust/StaticExplicitKeyFactoryBeanTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/test/java/org/opensaml/spring/trust/MockTrustEngine.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/test/java/org/opensaml/spring/trust/AbstractSecurityTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/test/java/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/src/test/java/org/opensaml/spring/credential/BasicX509CredentialFactoryBeanTest.java
diff --git a/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT-tests.jar b/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT-tests.jar
new file mode 100644
index 000000000..5448ebbb5
Binary files /dev/null and b/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT-tests.jar differ
diff --git a/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT.jar b/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT.jar
new file mode 100644
index 000000000..27a86c938
Binary files /dev/null and b/opensaml-spring/target/opensaml-spring-5.1.0-SNAPSHOT.jar differ
diff --git a/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.html b/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.html
new file mode 100644
index 000000000..a9388b32b
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.html	
@@ -0,0 +1,199 @@
+<html>
+<head>
+<title>TestNG:  Surefire test</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+
+<style type="text/css">
+.log { display: none;} 
+.stack-trace { display: none;} 
+</style>
+<script type="text/javascript">
+<!--
+function flip(e) {
+  current = e.style.display;
+  if (current == 'block') {
+    e.style.display = 'none';
+    return 0;
+  }
+  else {
+    e.style.display = 'block';
+    return 1;
+  }
+}
+
+function toggleBox(szDivId, elem, msg1, msg2)
+{
+  var res = -1;  if (document.getElementById) {
+    res = flip(document.getElementById(szDivId));
+  }
+  else if (document.all) {
+    // this is the way old msie versions work
+    res = flip(document.all[szDivId]);
+  }
+  if(elem) {
+    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
+  }
+
+}
+
+function toggleAllBoxes() {
+  if (document.getElementsByTagName) {
+    d = document.getElementsByTagName('div');
+    for (i = 0; i < d.length; i++) {
+      if (d[i].className == 'log') {
+        flip(d[i]);
+      }
+    }
+  }
+}
+
+// -->
+</script>
+
+</head>
+<body>
+<h2 align='center'>Surefire test</h2><table border='1' align="center">
+<tr>
+<td>Tests passed/Failed/Skipped:</td><td>8/0/0</td>
+</tr><tr>
+<td>Started on:</td><td>Fri Feb 09 16:03:09 EST 2024</td>
+</tr>
+<tr><td>Total time:</td><td>0 seconds (619 ms)</td>
+</tr><tr>
+<td>Included groups:</td><td></td>
+</tr><tr>
+<td>Excluded groups:</td><td></td>
+</tr>
+</table><p/>
+<small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table width='100%' border='1' class='invocation-passed'>
+<tr><td colspan='4' align='center'><b>PASSED TESTS</b></td></tr>
+<tr><td><b>Test method</b></td>
+<td><b>Attribute(s)</b></td>
+<td width="30%"><b>Exception</b></td>
+<td width="10%"><b>Time (seconds)</b></td>
+<td><b>Instance</b></td>
+</tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.mixed()'><b>mixed</b><br>Test class: org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.defaults()'><b>defaults</b><br>Test class: org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.singleKey()'><b>singleKey</b><br>Test class: org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.singleCert()'><b>singleCert</b><br>Test class: org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesFailsValidation()'><b>customPropertiesFailsValidation</b><br>Test class: org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</td>
+<td><div><pre>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:969)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
+	at net.shibboleth.shared.spring.util.ApplicationContextBuilder.build(ApplicationContextBuilder.java:487)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesFailsValidation(StaticPKIXFactoryBeanTest.java:90)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+Caused by: org.springframework.beans.FatalBeanException: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.validateConfiguration(StaticPKIXFactoryBean.java:273)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:246)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:58)
+	at net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean.createInstance(AbstractComponentAwareFactoryBean.java:81)
+	at net.shibboleth.shared.spring.factory.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:149)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+	... 44 more
+... Removed 32 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace949673757", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace949673757'><pre>org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:969)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
+	at net.shibboleth.shared.spring.util.ApplicationContextBuilder.build(ApplicationContextBuilder.java:487)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesFailsValidation(StaticPKIXFactoryBeanTest.java:90)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+	at org.testng.TestRunner.privateRun(TestRunner.java:829)
+	at org.testng.TestRunner.run(TestRunner.java:602)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+	at org.testng.TestNG.runSuites(TestNG.java:1099)
+	at org.testng.TestNG.run(TestNG.java:1067)
+	at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+	at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+	at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+Caused by: org.springframework.beans.FatalBeanException: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.validateConfiguration(StaticPKIXFactoryBean.java:273)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:246)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:58)
+	at net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean.createInstance(AbstractComponentAwareFactoryBean.java:81)
+	at net.shibboleth.shared.spring.factory.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:149)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+	... 44 more
+</pre></div></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963</td></tr>
+<tr>
+<td title='org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest.bean()'><b>bean</b><br>Test class: org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest at 64cd705f</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesSuccess()'><b>customPropertiesSuccess</b><br>Test class: org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963</td></tr>
+<tr>
+<td title='org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.multipleCert()'><b>multipleCert</b><br>Test class: org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</td>
+<td></td>
+<td>0</td>
+<td>org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2</td></tr>
+</table><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.xml b/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.xml
new file mode 100644
index 000000000..54aadf1df
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/Surefire suite/Surefire test.xml	
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
+<testsuite ignored="1" hostname="BrentPumansMini" failures="0" tests="8" name="Surefire test" time="0.619" errors="0" timestamp="2024-02-09T16:03:09 EST">
+  <testcase classname="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest" name="bean" time="0.405"/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="mixed" time="0.048"/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="multipleCert" time="0.036"/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="singleCert" time="0.023"/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="singleKey" time="0.02"/>
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="customPropertiesFailsValidation" time="0.026"/>
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="customPropertiesSuccess" time="0.016"/>
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="defaults" time="0.013"/>
+  <testcase classname="org.opensaml.spring.trust.AbstractSecurityTest" name="@BeforeSuite setupDirs" time="0.0">
+    <ignored/>
+  </testcase> <!-- @BeforeSuite setupDirs -->
+</testsuite> <!-- Surefire test -->
diff --git a/opensaml-spring/target/surefire-reports/TEST-TestSuite.xml b/opensaml-spring/target/surefire-reports/TEST-TestSuite.xml
new file mode 100644
index 000000000..28eb0813b
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/TEST-TestSuite.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="TestSuite" time="0.974" tests="8" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="java.specification.version" value="17"/>
+    <property name="sun.jnu.encoding" value="UTF-8"/>
+    <property name="java.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-security-api/target/opensaml-security-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Java/maven-repo/io/dropwizard/metrics/metrics-core/4.2.19/metr [...]
+    <property name="java.vm.vendor" value="Oracle Corporation"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="java.vendor.url" value="https://java.oracle.com/"/>
+    <property name="user.timezone" value="America/New_York"/>
+    <property name="os.name" value="Mac OS X"/>
+    <property name="java.vm.specification.version" value="17"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="user.country" value="US"/>
+    <property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/lib"/>
+    <property name="sun.java.command" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/surefire/surefirebooter-20240209160308809_808.jar /Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/surefire 2024-02-09T16-00-56_938-jvmRun1 surefire-20240209160308809_806tmp surefire_16-20240209160308809_807tmp"/>
+    <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="jdk.debug" value="release"/>
+    <property name="surefire.test.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/test-classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/classes:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-security-api/target/opensaml-security-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-core-api/target/opensaml-core-api-5.1.0-SNAPSHOT.jar:/Users/putmanb/Dev/Java/maven-repo/io/dropwizard/metrics/metrics-core/4. [...]
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="/Users/putmanb"/>
+    <property name="user.language" value="en"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.version.date" value="2023-07-18"/>
+    <property name="java.home" value="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home"/>
+    <property name="file.separator" value="/"/>
+    <property name="basedir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring"/>
+    <property name="java.vm.compressedOopsMode" value="Zero based"/>
+    <property name="line.separator" value="
"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="surefire.real.class.path" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring/target/surefire/surefirebooter-20240209160308809_808.jar"/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.runtime.version" value="17.0.8+9-LTS-211"/>
+    <property name="user.name" value="putmanb"/>
+    <property name="path.separator" value=":"/>
+    <property name="os.version" value="11.7.6"/>
+    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
+    <property name="file.encoding" value="UTF-8"/>
+    <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
+    <property name="localRepository" value="/Users/putmanb/Dev/Java/maven-repo"/>
+    <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/>
+    <property name="java.io.tmpdir" value="/var/folders/3b/6pjvjt_j3ws2rtq52q2rc_7r0000gn/T/"/>
+    <property name="java.version" value="17.0.8"/>
+    <property name="user.dir" value="/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-spring"/>
+    <property name="os.arch" value="x86_64"/>
+    <property name="no-check-m2" value="true"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="native.encoding" value="UTF-8"/>
+    <property name="java.library.path" value="/Users/putmanb/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
+    <property name="java.vm.info" value="mixed mode, sharing"/>
+    <property name="java.vendor" value="Oracle Corporation"/>
+    <property name="java.vm.version" value="17.0.8+9-LTS-211"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeBig"/>
+    <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
+    <property name="java.class.version" value="61.0"/>
+  </properties>
+  <testcase name="bean" classname="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest" time="0.405">
+    <system-out><![CDATA[16:03:09.284 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/credential/bean.xml]]
+16:03:09.363 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 2 bean definitions from class path resource [org/opensaml/spring/credential/bean.xml]
+16:03:09.364 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.382 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'Credential'
+16:03:09.564 [main] DEBUG org.opensaml.security.crypto.KeySupport -- Attempting to match key pair containing key algorithms public 'RSA' private 'RSA', using JCA signature algorithm 'SHA1withRSA'
+16:03:09.565 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computing signature over input using private key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.575 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computed signature: [4, 4, 4, 0, 0, 7, 8, 3, e, e, 6, 7, 1, 4, 3, 4, 9, e, 9, c, d, 9, b, 7, 3, f, 2, 9, 0, 3, f, b, 9, 0, 0, 3, 0, c, f, b, 4, 7, b, 4, 6, 6, 1, 1, 5, b, c, 6, 4, 0, 7, 6, 0, d, a, a, c, f, b, 8, 0, a, 8, a, 1, e, 7, 8, 9, f, 3, d, f, d, e, 3, b, 4, f, 9, f, 9, b, 1, 0, 8, 4, 4, b, 0, 8, d, 7, b, 7, c, 7, 1, 7, 0, 6, 9, 4, 3, d, 7, 4, 4, 3, d, 9, b, 2, e, 9, 5, 5, 1, e, 5, 6, a, 5, 4, e, 1, 2, 8, a, 6, [...]
+16:03:09.576 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Verifying signature over input using public key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.579 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'EncCredential'
+16:03:09.606 [main] DEBUG org.opensaml.security.crypto.KeySupport -- Attempting to match key pair containing key algorithms public 'RSA' private 'RSA', using JCA signature algorithm 'SHA1withRSA'
+16:03:09.606 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computing signature over input using private key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.612 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computed signature: [4, 4, 4, 0, 0, 7, 8, 3, e, e, 6, 7, 1, 4, 3, 4, 9, e, 9, c, d, 9, b, 7, 3, f, 2, 9, 0, 3, f, b, 9, 0, 0, 3, 0, c, f, b, 4, 7, b, 4, 6, 6, 1, 1, 5, b, c, 6, 4, 0, 7, 6, 0, d, a, a, c, f, b, 8, 0, a, 8, a, 1, e, 7, 8, 9, f, 3, d, f, d, e, 3, b, 4, f, 9, f, 9, b, 1, 0, 8, 4, 4, b, 0, 8, d, 7, b, 7, c, 7, 1, 7, 0, 6, 9, 4, 3, d, 7, 4, 4, 3, d, 9, b, 2, e, 9, 5, 5, 1, e, 5, 6, a, 5, 4, e, 1, 2, 8, a, 6, [...]
+16:03:09.613 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Verifying signature over input using public key of type RSA and JCA algorithm ID SHA1withRSA
+]]></system-out>
+  </testcase>
+  <testcase name="mixed" classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" time="0.048">
+    <system-out><![CDATA[16:03:09.654 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.654 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.656 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.669 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.671 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.673 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+]]></system-out>
+  </testcase>
+  <testcase name="multipleCert" classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" time="0.036">
+    <system-out><![CDATA[16:03:09.683 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.701 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.701 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.704 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.715 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.718 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.719 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+]]></system-out>
+  </testcase>
+  <testcase name="singleCert" classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" time="0.023">
+    <system-out><![CDATA[16:03:09.722 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.736 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.736 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.738 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.739 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.742 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.744 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+]]></system-out>
+  </testcase>
+  <testcase name="singleKey" classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" time="0.02">
+    <system-out><![CDATA[16:03:09.746 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.759 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.759 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.760 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.762 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.763 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.764 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+]]></system-out>
+  </testcase>
+  <testcase name="customPropertiesFailsValidation" classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" time="0.026">
+    <system-out><![CDATA[16:03:09.767 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.769 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]]
+16:03:09.780 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]
+16:03:09.781 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.783 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
+16:03:09.793 [main] ERROR org.opensaml.spring.trust.StaticPKIXFactoryBean -- Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+16:03:09.793 [main] WARN net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were su [...]
+]]></system-out>
+  </testcase>
+  <testcase name="customPropertiesSuccess" classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" time="0.017">
+    <system-out><![CDATA[16:03:09.795 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-success.xml]]
+16:03:09.804 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-success.xml]
+16:03:09.804 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.805 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
+]]></system-out>
+  </testcase>
+  <testcase name="defaults" classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" time="0.013">
+    <system-out><![CDATA[16:03:09.812 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-defaults.xml]]
+16:03:09.820 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-defaults.xml]
+16:03:09.820 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.821 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
+]]></system-out>
+  </testcase>
+</testsuite>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/TestSuite-output.txt b/opensaml-spring/target/surefire-reports/TestSuite-output.txt
new file mode 100644
index 000000000..316edb719
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/TestSuite-output.txt
@@ -0,0 +1,55 @@
+16:03:09.284 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/credential/bean.xml]]
+16:03:09.363 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 2 bean definitions from class path resource [org/opensaml/spring/credential/bean.xml]
+16:03:09.364 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.382 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'Credential'
+16:03:09.564 [main] DEBUG org.opensaml.security.crypto.KeySupport -- Attempting to match key pair containing key algorithms public 'RSA' private 'RSA', using JCA signature algorithm 'SHA1withRSA'
+16:03:09.565 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computing signature over input using private key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.575 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computed signature: [4, 4, 4, 0, 0, 7, 8, 3, e, e, 6, 7, 1, 4, 3, 4, 9, e, 9, c, d, 9, b, 7, 3, f, 2, 9, 0, 3, f, b, 9, 0, 0, 3, 0, c, f, b, 4, 7, b, 4, 6, 6, 1, 1, 5, b, c, 6, 4, 0, 7, 6, 0, d, a, a, c, f, b, 8, 0, a, 8, a, 1, e, 7, 8, 9, f, 3, d, f, d, e, 3, b, 4, f, 9, f, 9, b, 1, 0, 8, 4, 4, b, 0, 8, d, 7, b, 7, c, 7, 1, 7, 0, 6, 9, 4, 3, d, 7, 4, 4, 3, d, 9, b, 2, e, 9, 5, 5, 1, e, 5, 6, a, 5, 4, e, 1, 2, 8, a, 6, [...]
+16:03:09.576 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Verifying signature over input using public key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.579 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'EncCredential'
+16:03:09.606 [main] DEBUG org.opensaml.security.crypto.KeySupport -- Attempting to match key pair containing key algorithms public 'RSA' private 'RSA', using JCA signature algorithm 'SHA1withRSA'
+16:03:09.606 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computing signature over input using private key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.612 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Computed signature: [4, 4, 4, 0, 0, 7, 8, 3, e, e, 6, 7, 1, 4, 3, 4, 9, e, 9, c, d, 9, b, 7, 3, f, 2, 9, 0, 3, f, b, 9, 0, 0, 3, 0, c, f, b, 4, 7, b, 4, 6, 6, 1, 1, 5, b, c, 6, 4, 0, 7, 6, 0, d, a, a, c, f, b, 8, 0, a, 8, a, 1, e, 7, 8, 9, f, 3, d, f, d, e, 3, b, 4, f, 9, f, 9, b, 1, 0, 8, 4, 4, b, 0, 8, d, 7, b, 7, c, 7, 1, 7, 0, 6, 9, 4, 3, d, 7, 4, 4, 3, d, 9, b, 2, e, 9, 5, 5, 1, e, 5, 6, a, 5, 4, e, 1, 2, 8, a, 6, [...]
+16:03:09.613 [main] DEBUG org.opensaml.security.crypto.SigningUtil -- Verifying signature over input using public key of type RSA and JCA algorithm ID SHA1withRSA
+16:03:09.654 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.654 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.656 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.669 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.671 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.673 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+16:03:09.683 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.701 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.701 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.704 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.715 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.718 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.719 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+16:03:09.722 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.736 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.736 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.738 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.739 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.742 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.744 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+16:03:09.746 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.759 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 4 bean definitions from class path resource [org/opensaml/spring/trust/staticExplicitNative.xml]
+16:03:09.759 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine
+16:03:09.760 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticKeySingle'
+16:03:09.762 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Single'
+16:03:09.763 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticX509Multiple'
+16:03:09.764 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'staticMixed'
+16:03:09.767 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Closing ApplicationContext:ApplicationContext: interface org.opensaml.security.trust.TrustEngine, started on Fri Feb 09 16:03:09 EST 2024
+16:03:09.769 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]]
+16:03:09.780 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]
+16:03:09.781 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.783 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
+16:03:09.793 [main] ERROR org.opensaml.spring.trust.StaticPKIXFactoryBean -- Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+16:03:09.793 [main] WARN net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were su [...]
+16:03:09.795 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-success.xml]]
+16:03:09.804 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-success.xml]
+16:03:09.804 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.805 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
+16:03:09.812 [main] DEBUG net.shibboleth.shared.spring.util.ApplicationContextBuilder -- Resolved resources: [class path resource [org/opensaml/spring/trust/static-pkix-factory-defaults.xml]]
+16:03:09.820 [main] DEBUG net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader -- Loaded 1 bean definitions from class path resource [org/opensaml/spring/trust/static-pkix-factory-defaults.xml]
+16:03:09.820 [main] DEBUG net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext -- Refreshing ApplicationContext:anonymous
+16:03:09.821 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory -- Creating shared instance of singleton bean 'StaticPKIXX509CredentialTrustEngine'
diff --git a/opensaml-spring/target/surefire-reports/TestSuite.txt b/opensaml-spring/target/surefire-reports/TestSuite.txt
new file mode 100644
index 000000000..eea1f9921
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/TestSuite.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: TestSuite
+-------------------------------------------------------------------------------
+Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.974 s -- in TestSuite
diff --git a/opensaml-spring/target/surefire-reports/bullet_point.png b/opensaml-spring/target/surefire-reports/bullet_point.png
new file mode 100644
index 000000000..176e6d5b3
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/bullet_point.png differ
diff --git a/opensaml-spring/target/surefire-reports/collapseall.gif b/opensaml-spring/target/surefire-reports/collapseall.gif
new file mode 100644
index 000000000..a2d80a904
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/collapseall.gif differ
diff --git a/opensaml-spring/target/surefire-reports/emailable-report.html b/opensaml-spring/target/surefire-reports/emailable-report.html
new file mode 100644
index 000000000..f7077a4bc
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/emailable-report.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="https://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
+<title>TestNG Report</title>
+<style type="text/css">table {margin-bottom:10px;border-collapse:collapse;empty-cells:show}th,td {border:1px solid #009;padding:.25em .5em}th {vertical-align:bottom}td {vertical-align:top}table a {font-weight:bold}.stripe td {background-color: #E6EBF9}.num {text-align:right}.passedodd td {background-color: #3F3}.passedeven td {background-color: #0A0}.skippedodd td {background-color: #DDD}.skippedeven td {background-color: #CCC}.failedodd td,.attn {background-color: #F33}.failedeven td,.s [...]
+</head>
+<body>
+<table>
+<tr><th>Test</th><th># Passed</th><th># Skipped</th><th># Retried</th><th># Failed</th><th>Time (ms)</th><th>Included Groups</th><th>Excluded Groups</th></tr>
+<tr><th colspan="8">Surefire suite</th></tr>
+<tr><td><a href="#t0">Surefire test</a></td><td class="num">8</td><td class="num">0</td><td class="num">0</td><td class="num">0</td><td class="num">619</td><td></td><td></td></tr>
+</table>
+<table id='summary'><thead><tr><th>Class</th><th>Method</th><th>Start</th><th>Time (ms)</th></tr></thead><tbody><tr><th colspan="4">Surefire suite</th></tr></tbody><tbody id="t0"><tr><th colspan="4">Surefire test — passed</th></tr><tr class="passedeven"><td rowspan="1">org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest</td><td><a href="#m0">bean</a></td><td rowspan="1">1707512589221</td><td rowspan="1">405</td></tr><tr class="passedodd"><td rowspan="4">org.opensaml.s [...]
+</table>
+<h2>Surefire test</h2><h3 id="m0">org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest#bean</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m1">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest#mixed</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m2">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest#multipleCert</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m3">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest#singleCert</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m4">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest#singleKey</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m5">org.opensaml.spring.trust.StaticPKIXFactoryBeanTest#customPropertiesFailsValidation</h3><table class="result"><tr><th>Expected Exception</th></tr><tr><td><div class="stacktrace">org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no st [...]
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:969)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
+	at net.shibboleth.shared.spring.util.ApplicationContextBuilder.build(ApplicationContextBuilder.java:487)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesFailsValidation(StaticPKIXFactoryBeanTest.java:90)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+Caused by: org.springframework.beans.FatalBeanException: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.validateConfiguration(StaticPKIXFactoryBean.java:273)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:246)
+	at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:58)
+	at net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean.createInstance(AbstractComponentAwareFactoryBean.java:81)
+	at net.shibboleth.shared.spring.factory.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:149)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+	... 44 more
+... Removed 32 stack frames</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m6">org.opensaml.spring.trust.StaticPKIXFactoryBeanTest#customPropertiesSuccess</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+<h3 id="m7">org.opensaml.spring.trust.StaticPKIXFactoryBeanTest#defaults</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
+</body>
+</html>
diff --git a/opensaml-spring/target/surefire-reports/failed.png b/opensaml-spring/target/surefire-reports/failed.png
new file mode 100644
index 000000000..c117be59a
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/failed.png differ
diff --git a/opensaml-spring/target/surefire-reports/index.html b/opensaml-spring/target/surefire-reports/index.html
new file mode 100644
index 000000000..d97411bd4
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/index.html
@@ -0,0 +1,428 @@
+<!DOCTYPE html>
+
+<html>
+  <head>
+  <meta charset='utf-8'>
+  <title>TestNG reports</title>
+
+    <link type="text/css" href="testng-reports1.css" rel="stylesheet" id="ultra" />
+    <link type="text/css" href="testng-reports.css" rel="stylesheet" id="retro" disabled="false"/>
+    <script type="text/javascript" src="jquery-3.6.0.min.js"></script>
+    <script type="text/javascript" src="testng-reports.js"></script>
+    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
+    <script type='text/javascript'>
+      google.load('visualization', '1', {packages:['table']});
+      google.setOnLoadCallback(drawTable);
+      var suiteTableInitFunctions = new Array();
+      var suiteTableData = new Array();
+    </script>
+    <!--
+      <script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.16.custom.min.js"></script>
+     -->
+  </head>
+
+  <body>    <div class="top-banner-root">
+      <span class="top-banner-title-font">Test results</span>
+      <button id="button" class="button">Switch Retro Theme</button> <!-- button -->
+      <br/>
+      <span class="top-banner-font-1">1 suite</span>
+    </div> <!-- top-banner-root -->
+    <div class="navigator-root">
+      <div class="navigator-suite-header">
+        <span>All suites</span>
+        <a href="#" title="Collapse/expand all the suites" class="collapse-all-link">
+          <img src="collapseall.gif" class="collapse-all-icon">
+          </img> <!-- collapse-all-icon -->
+        </a> <!-- collapse-all-link -->
+      </div> <!-- navigator-suite-header -->
+      <div class="suite">
+        <div class="rounded-window">
+          <div class="suite-header light-rounded-window-top">
+            <a href="#" panel-name="suite-Surefire_suite" class="navigator-link">
+              <span class="suite-name border-passed">Surefire suite</span>
+            </a> <!-- navigator-link -->
+          </div> <!-- suite-header light-rounded-window-top -->
+          <div class="navigator-suite-content">
+            <div class="suite-section-title">
+              <span>Info</span>
+            </div> <!-- suite-section-title -->
+            <div class="suite-section-content">
+              <ul>
+                <li>
+                  <a href="#" panel-name="test-xml-Surefire_suite" class="navigator-link ">
+                    <span>[unset file name]</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="testlist-Surefire_suite" class="navigator-link ">
+                    <span class="test-stats">1 test</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="group-Surefire_suite" class="navigator-link ">
+                    <span>0 groups</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="times-Surefire_suite" class="navigator-link ">
+                    <span>Times</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="reporter-Surefire_suite" class="navigator-link ">
+                    <span>Reporter output</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="ignored-methods-Surefire_suite" class="navigator-link ">
+                    <span>Ignored methods</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+                <li>
+                  <a href="#" panel-name="chronological-Surefire_suite" class="navigator-link ">
+                    <span>Chronological view</span>
+                  </a> <!-- navigator-link  -->
+                </li>
+              </ul>
+            </div> <!-- suite-section-content -->
+            <div class="result-section">
+              <div class="suite-section-title">
+                <span>Results</span>
+              </div> <!-- suite-section-title -->
+              <div class="suite-section-content">
+                <ul>
+                  <li>
+                    <span class="method-stats">8 methods,   8 passed</span>
+                  </li>
+                  <li>
+                    <span class="method-list-title passed">Passed methods</span>
+                    <span class="show-or-hide-methods passed">
+                      <a href="#" panel-name="suite-Surefire_suite" class="hide-methods passed suite-Surefire_suite"> (hide)</a> <!-- hide-methods passed suite-Surefire_suite -->
+                      <a href="#" panel-name="suite-Surefire_suite" class="show-methods passed suite-Surefire_suite"> (show)</a> <!-- show-methods passed suite-Surefire_suite -->
+                    </span>
+                    <div class="method-list-content passed suite-Surefire_suite">
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest" class="method navigator-link" hash-for-method="bean">bean</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" class="method navigator-link" hash-for-method="customPropertiesFailsValidation">customPropertiesFailsValidation</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" class="method navigator-link" hash-for-method="customPropertiesSuccess">customPropertiesSuccess</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" class="method navigator-link" hash-for-method="defaults">defaults</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" class="method navigator-link" hash-for-method="mixed">mixed</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" class="method navigator-link" hash-for-method="multipleCert">multipleCert</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" class="method navigator-link" hash-for-method="singleCert">singleCert</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                      <span>
+                        <img src="passed.png" width="3%"/>
+                        <a href="#" panel-name="suite-Surefire_suite" title="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" class="method navigator-link" hash-for-method="singleKey">singleKey</a> <!-- method navigator-link -->
+                      </span>
+                      <br/>
+                    </div> <!-- method-list-content passed suite-Surefire_suite -->
+                  </li>
+                </ul>
+              </div> <!-- suite-section-content -->
+            </div> <!-- result-section -->
+          </div> <!-- navigator-suite-content -->
+        </div> <!-- rounded-window -->
+      </div> <!-- suite -->
+    </div> <!-- navigator-root -->
+    <div class="wrapper">
+      <div class="main-panel-root">
+        <div panel-name="suite-Surefire_suite" class="panel Surefire_suite">
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="bean">
+                  </a> <!-- bean -->
+                  <span class="method-name">bean</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="customPropertiesFailsValidation">
+                  </a> <!-- customPropertiesFailsValidation -->
+                  <span class="method-name">customPropertiesFailsValidation</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="customPropertiesSuccess">
+                  </a> <!-- customPropertiesSuccess -->
+                  <span class="method-name">customPropertiesSuccess</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="defaults">
+                  </a> <!-- defaults -->
+                  <span class="method-name">defaults</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+          <div class="suite-Surefire_suite-class-passed">
+            <div class="main-panel-header rounded-window-top">
+              <img src="passed.png"/>
+              <span class="class-name">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</span>
+            </div> <!-- main-panel-header rounded-window-top -->
+            <div class="main-panel-content rounded-window-bottom">
+              <div class="method">
+                <div class="method-content">
+                  <a name="mixed">
+                  </a> <!-- mixed -->
+                  <span class="method-name">mixed</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="multipleCert">
+                  </a> <!-- multipleCert -->
+                  <span class="method-name">multipleCert</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="singleCert">
+                  </a> <!-- singleCert -->
+                  <span class="method-name">singleCert</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+              <div class="method">
+                <div class="method-content">
+                  <a name="singleKey">
+                  </a> <!-- singleKey -->
+                  <span class="method-name">singleKey</span>
+                </div> <!-- method-content -->
+              </div> <!-- method -->
+            </div> <!-- main-panel-content rounded-window-bottom -->
+          </div> <!-- suite-Surefire_suite-class-passed -->
+        </div> <!-- panel Surefire_suite -->
+        <div panel-name="test-xml-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
+<suite name="Surefire suite" verbose="0">
+  <test thread-count="5" name="Surefire test" verbose="0">
+    <classes>
+      <class name="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest"/>
+      <class name="org.opensaml.spring.trust.AbstractSecurityTest"/>
+      <class name="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest"/>
+      <class name="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest"/>
+    </classes>
+  </test> <!-- Surefire test -->
+</suite> <!-- Surefire suite -->
+            </pre>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="testlist-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Tests for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <ul>
+              <li>
+                <span class="test-name">Surefire test (4 classes)</span>
+              </li>
+            </ul>
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="group-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Groups for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="times-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Times for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="times-div">
+              <script type="text/javascript">
+suiteTableInitFunctions.push('tableData_Surefire_suite');
+function tableData_Surefire_suite() {
+var data = new google.visualization.DataTable();
+data.addColumn('number', 'Number');
+data.addColumn('string', 'Method');
+data.addColumn('string', 'Class');
+data.addColumn('number', 'Time (ms)');
+data.addRows(8);
+data.setCell(0, 0, 0)
+data.setCell(0, 1, 'bean')
+data.setCell(0, 2, 'org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest')
+data.setCell(0, 3, 405);
+data.setCell(1, 0, 1)
+data.setCell(1, 1, 'mixed')
+data.setCell(1, 2, 'org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest')
+data.setCell(1, 3, 48);
+data.setCell(2, 0, 2)
+data.setCell(2, 1, 'multipleCert')
+data.setCell(2, 2, 'org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest')
+data.setCell(2, 3, 36);
+data.setCell(3, 0, 3)
+data.setCell(3, 1, 'customPropertiesFailsValidation')
+data.setCell(3, 2, 'org.opensaml.spring.trust.StaticPKIXFactoryBeanTest')
+data.setCell(3, 3, 26);
+data.setCell(4, 0, 4)
+data.setCell(4, 1, 'singleCert')
+data.setCell(4, 2, 'org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest')
+data.setCell(4, 3, 23);
+data.setCell(5, 0, 5)
+data.setCell(5, 1, 'singleKey')
+data.setCell(5, 2, 'org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest')
+data.setCell(5, 3, 20);
+data.setCell(6, 0, 6)
+data.setCell(6, 1, 'customPropertiesSuccess')
+data.setCell(6, 2, 'org.opensaml.spring.trust.StaticPKIXFactoryBeanTest')
+data.setCell(6, 3, 16);
+data.setCell(7, 0, 7)
+data.setCell(7, 1, 'defaults')
+data.setCell(7, 2, 'org.opensaml.spring.trust.StaticPKIXFactoryBeanTest')
+data.setCell(7, 3, 13);
+window.suiteTableData['Surefire_suite']= { tableData: data, tableDiv: 'times-div-Surefire_suite'}
+return data;
+}
+              </script>
+              <span class="suite-total-time">Total running time: 587 ms</span>
+              <div id="times-div-Surefire_suite">
+              </div> <!-- times-div-Surefire_suite -->
+            </div> <!-- times-div -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="reporter-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Reporter output for Surefire suite</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="ignored-methods-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">1 ignored method</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="ignored-class-div">
+              <span class="ignored-class-name">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</span>
+              <div class="ignored-methods-div">
+                <span class="ignored-method-name">setupDirs</span>
+                <br/>
+              </div> <!-- ignored-methods-div -->
+            </div> <!-- ignored-class-div -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+        <div panel-name="chronological-Surefire_suite" class="panel">
+          <div class="main-panel-header rounded-window-top">
+            <span class="header-content">Methods in chronological order</span>
+          </div> <!-- main-panel-header rounded-window-top -->
+          <div class="main-panel-content rounded-window-bottom">
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.spring.trust.AbstractSecurityTest</div> <!-- chronological-class-name -->
+              <div class="configuration-suite before">
+                <span class="method-name">setupDirs</span>
+                <span class="method-start">0 ms</span>
+              </div> <!-- configuration-suite before -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">bean</span>
+                <span class="method-start">32 ms</span>
+              </div> <!-- test-method -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">mixed</span>
+                <span class="method-start">440 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDownTestContext</span>
+                <span class="method-start">488 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">multipleCert</span>
+                <span class="method-start">496 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDownTestContext</span>
+                <span class="method-start">533 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">singleCert</span>
+                <span class="method-start">534 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDownTestContext</span>
+                <span class="method-start">557 ms</span>
+              </div> <!-- configuration-method after -->
+              <div class="test-method">
+                <span class="method-name">singleKey</span>
+                <span class="method-start">558 ms</span>
+              </div> <!-- test-method -->
+              <div class="configuration-method after">
+                <span class="method-name">tearDownTestContext</span>
+                <span class="method-start">578 ms</span>
+              </div> <!-- configuration-method after -->
+            </div> <!-- chronological-class -->
+            <div class="chronological-class">
+              <div class="chronological-class-name">org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</div> <!-- chronological-class-name -->
+              <div class="test-method">
+                <span class="method-name">customPropertiesFailsValidation</span>
+                <span class="method-start">579 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">customPropertiesSuccess</span>
+                <span class="method-start">605 ms</span>
+              </div> <!-- test-method -->
+              <div class="test-method">
+                <span class="method-name">defaults</span>
+                <span class="method-start">622 ms</span>
+              </div> <!-- test-method -->
+          </div> <!-- main-panel-content rounded-window-bottom -->
+        </div> <!-- panel -->
+      </div> <!-- main-panel-root -->
+    </div> <!-- wrapper -->
+  </body>
+<script type="text/javascript" src="testng-reports2.js"></script>
+</html>
diff --git a/opensaml-spring/target/surefire-reports/jquery-3.6.0.min.js b/opensaml-spring/target/surefire-reports/jquery-3.6.0.min.js
new file mode 100644
index 000000000..c4c6022f2
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/jquery-3.6.0.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l= [...]
diff --git a/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest.xml b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest.xml
new file mode 100644
index 000000000..7ce5bd1b1
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="1" name="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest" time="0.405" errors="0" timestamp="2024-02-09T16:03:09 EST" skipped="0">
+  <testcase classname="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest" name="bean" time="0.405"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest -->
diff --git a/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.xml b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.xml
new file mode 100644
index 000000000..b9b961fe5
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="4" name="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" time="0.136" errors="0" timestamp="2024-02-09T16:03:09 EST" skipped="0">
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="mixed" time="0.055"/>
+  <system-out/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="singleKey" time="0.021"/>
+  <system-out/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="singleCert" time="0.024"/>
+  <system-out/>
+  <testcase classname="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest" name="multipleCert" time="0.036"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest -->
diff --git a/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.xml b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.xml
new file mode 100644
index 000000000..5da20d90c
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/junitreports/TEST-org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by org.testng.reporters.JUnitReportReporter -->
+<testsuite hostname="BrentPumansMini" failures="0" tests="3" name="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" time="0.055" errors="0" timestamp="2024-02-09T16:03:09 EST" skipped="0">
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="defaults" time="0.013"/>
+  <system-out/>
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="customPropertiesFailsValidation" time="0.026"/>
+  <system-out/>
+  <testcase classname="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest" name="customPropertiesSuccess" time="0.016"/>
+  <system-out/>
+</testsuite> <!-- org.opensaml.spring.trust.StaticPKIXFactoryBeanTest -->
diff --git a/opensaml-spring/target/surefire-reports/navigator-bullet.png b/opensaml-spring/target/surefire-reports/navigator-bullet.png
new file mode 100644
index 000000000..36d90d395
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/navigator-bullet.png differ
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/Surefire test.properties b/opensaml-spring/target/surefire-reports/old/Surefire suite/Surefire test.properties
new file mode 100644
index 000000000..d7c8865f0
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/Surefire test.properties	
@@ -0,0 +1 @@
+[SuiteResult context=Surefire test]
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/classes.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/classes.html
new file mode 100644
index 000000000..ad1eca38c
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/classes.html	
@@ -0,0 +1,96 @@
+<table border='1'>
+<tr>
+<th>Class name</th>
+<th>Method name</th>
+<th>Groups</th>
+</tr><tr>
+<td>org.opensaml.spring.trust.StaticPKIXFactoryBeanTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>customPropertiesSuccess</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>defaults</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>customPropertiesFailsValidation</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>singleCert</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>multipleCert</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>mixed</td>
+<td> </td></tr>
+<tr>
+<td> </td>
+<td>singleKey</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td> </td>
+<td>tearDownTestContext</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest</td>
+<td> </td><td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td> </td>
+<td>bean</td>
+<td> </td></tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+</table>
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/groups.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/groups.html
new file mode 100644
index 000000000..199cb3f11
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/groups.html	
@@ -0,0 +1 @@
+<h2>Groups used for this test run</h2>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/index.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/index.html
new file mode 100644
index 000000000..9f73abdbe
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/index.html	
@@ -0,0 +1,6 @@
+<html><head><title>Results for Surefire suite</title></head>
+<frameset cols="26%,74%">
+<frame src="toc.html" name="navFrame">
+<frame src="main.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/main.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/main.html
new file mode 100644
index 000000000..fddc3cab2
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/main.html	
@@ -0,0 +1,2 @@
+<html><head><title>Results for Surefire suite</title></head>
+<body>Select a result on the left-hand pane.</body></html>
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-alphabetical.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-alphabetical.html
new file mode 100644
index 000000000..55624fdcd
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-alphabetical.html	
@@ -0,0 +1,30 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:03:09</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="BasicX509CredentialFactoryBeanTest.bean()[pri:0, instance:org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest at 64cd705f]">bean</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>547</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.customPropertiesFailsValidation()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">customPropertiesFailsValidation</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>573</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.customPropertiesSuccess()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">customPropertiesSuccess</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>590</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.defaults()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">defaults</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>408</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.mixed()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">mixed</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>464</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.multipleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">multipleCert</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-25</td> <td title=">>AbstractSecurityTest.setupDirs()[pri:0, instance:org.opensaml.spring.trust.AbstractSecurityTest at 3835c46]">>>setupDirs</td> 
+<td> </td><td> </td><td> </td><td> </td><td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>502</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.singleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">singleCert</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>526</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.singleKey()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">singleKey</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>546</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>546</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>546</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>546</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-not-run.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-not-run.html
new file mode 100644
index 000000000..ddafee7d2
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods-not-run.html	
@@ -0,0 +1,3 @@
+<h2>Methods that were not run</h2><table>
+<tr><td>org.opensaml.spring.trust.AbstractSecurityTest.setupDirs</td></tr>
+</table>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/methods.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods.html
new file mode 100644
index 000000000..2c3c0f6f3
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/methods.html	
@@ -0,0 +1,30 @@
+<h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Surefire suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>0</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.defaults()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">defaults</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>-64</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.singleKey()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">singleKey</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>-88</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.singleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">singleCert</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>-43</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.customPropertiesFailsValidation()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">customPropertiesFailsValidation</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-44</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-615</td> <td title=">>AbstractSecurityTest.setupDirs()[pri:0, instance:org.opensaml.spring.trust.AbstractSecurityTest at 3835c46]">>>setupDirs</td> 
+<td> </td><td> </td><td> </td><td> </td><td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>-182</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.mixed()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">mixed</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-44</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-44</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="9d97b0">  <td>24/02/09 16:03:09</td>   <td>-44</td> <td> </td><td> </td><td> </td><td> </td><td title="<<AbstractSecurityTest.tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]"><<tearDownTestContext</td> 
+<td> </td>  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="79e8cb">  <td>24/02/09 16:03:09</td>   <td>-590</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="BasicX509CredentialFactoryBeanTest.bean()[pri:0, instance:org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest at 64cd705f]">bean</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="e9ab6f">  <td>24/02/09 16:03:09</td>   <td>-17</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticPKIXFactoryBeanTest.customPropertiesSuccess()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]">customPropertiesSuccess</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+<tr bgcolor="6369c4">  <td>24/02/09 16:03:09</td>   <td>-126</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="StaticExplicitKeyFactoryBeanTest.multipleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]">multipleCert</td> 
+  <td>main at 306612792</td>   <td></td> </tr>
+</table>
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/reporter-output.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/reporter-output.html
new file mode 100644
index 000000000..063bc2e96
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/reporter-output.html	
@@ -0,0 +1 @@
+<h2>Reporter output</h2><table></table>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/testng.xml.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/testng.xml.html
new file mode 100644
index 000000000..2b1973d77
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/testng.xml.html	
@@ -0,0 +1 @@
+<html><head><title>testng.xml for Surefire suite</title></head><body><tt><?xml version="1.0" encoding="UTF-8"?><br/><!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"><br/><suite name="Surefire suite" verbose="0"><br/>  <test thread-count="5" name="Surefire test" verbose="0"><br/>    <classes><br/>      <class name="org.open [...]
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/Surefire suite/toc.html b/opensaml-spring/target/surefire-reports/old/Surefire suite/toc.html
new file mode 100644
index 000000000..5df6764c9
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/Surefire suite/toc.html	
@@ -0,0 +1,30 @@
+<html>
+<head>
+<title>Results for Surefire suite</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<h3><p align="center">Results for<br/><em>Surefire suite</em></p></h3>
+<table border='1' width='100%'>
+<tr valign='top'>
+<td>1 test</td>
+<td><a target='mainFrame' href='classes.html'>3 classes</a></td>
+<td>8 methods:<br/>
+  <a target='mainFrame' href='methods.html'>chronological</a><br/>
+  <a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
+  <a target='mainFrame' href='methods-not-run.html'>not run (1)</a></td>
+</tr>
+<tr>
+<td><a target='mainFrame' href='groups.html'>0 group</a></td>
+<td><a target='mainFrame' href='reporter-output.html'>reporter output</a></td>
+<td><a target='mainFrame' href='testng.xml.html'>testng.xml</a></td>
+</tr></table>
+<table width='100%' class='test-passed'>
+<tr><td>
+<table style='width: 100%'><tr><td valign='top'>Surefire test (8/0/0)</td><td valign='top' align='right'>
+  <a href='Surefire test.html' target='mainFrame'>Results</a>
+</td></tr></table>
+</td></tr><p/>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/old/index.html b/opensaml-spring/target/surefire-reports/old/index.html
new file mode 100644
index 000000000..fc8ed4978
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/old/index.html
@@ -0,0 +1,9 @@
+<html>
+<head><title></title><link href="./testng.css" rel="stylesheet" type="text/css" />
+<link href="./my-testng.css" rel="stylesheet" type="text/css" />
+</head><body>
+<h2><p align='center'>Test results</p></h2>
+<table border='1' width='100%' class='main-page'><tr><th>Suite</th><th>Passed</th><th>Failed</th><th>Skipped</th><th>testng.xml</th></tr>
+<tr align='center' class='invocation-passed'><td><em>Total</em></td><td><em>8</em></td><td><em>0</em></td><td><em>0</em></td><td> </td></tr>
+<tr align='center' class='invocation-passed'><td><a href='Surefire suite/index.html'>Surefire suite</a></td>
+<td>8</td><td>0</td><td>0</td><td><a href='Surefire suite/testng.xml.html'>Link</a></td></tr></table></body></html>
diff --git a/opensaml-spring/target/surefire-reports/passed.png b/opensaml-spring/target/surefire-reports/passed.png
new file mode 100644
index 000000000..45e85bbfd
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/passed.png differ
diff --git a/opensaml-spring/target/surefire-reports/skipped.png b/opensaml-spring/target/surefire-reports/skipped.png
new file mode 100644
index 000000000..c36a32439
Binary files /dev/null and b/opensaml-spring/target/surefire-reports/skipped.png differ
diff --git a/opensaml-spring/target/surefire-reports/testng-reports.css b/opensaml-spring/target/surefire-reports/testng-reports.css
new file mode 100644
index 000000000..d7b75c404
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng-reports.css
@@ -0,0 +1,326 @@
+body {
+    margin: 0 0 5px 5px;
+}
+
+ul {
+    margin: 0;
+}
+
+li {
+    list-style-type: none;
+}
+
+a {
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+.navigator-selected {
+    background: #ffa500;
+}
+
+.wrapper {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 400px;
+    right: 0;
+    overflow: auto;
+}
+
+.navigator-root {
+    position: absolute;
+    top: 60px;
+    bottom: 0;
+    left: 0;
+    width: 400px;
+    overflow-y: auto;
+}
+
+.suite {
+    margin: 0 10px 10px 0;
+    background-color: #fff8dc;
+}
+
+.suite-name {
+    padding-left: 10px;
+    font-size: 25px;
+    font-family: Times, sans-serif;
+}
+
+.main-panel-header {
+    padding: 5px;
+    background-color: #9FB4D9; /*afeeee*/;
+    font-family: monospace;
+    font-size: 18px;
+}
+
+.main-panel-content {
+    padding: 5px;
+    margin-bottom: 10px;
+    background-color: #DEE8FC; /*d0ffff*/;
+}
+
+.rounded-window {
+    border-radius: 10px;
+    border-style: solid;
+    border-width: 1px;
+}
+
+.rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 1px;
+    overflow: auto;
+}
+
+.light-rounded-window-top {
+    border-top-right-radius: 10px 10px;
+    border-top-left-radius: 10px 10px;
+}
+
+.rounded-window-bottom {
+    border-style: solid;
+    border-width: 0 1px 1px 1px;
+    border-bottom-right-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    overflow: auto;
+}
+
+.method-name {
+    font-size: 12px;
+    font-family: monospace;
+}
+
+.method-content {
+    border-style: solid;
+    border-width: 0 0 1px 0;
+    margin-bottom: 10px;
+    padding-bottom: 5px;
+    width: 80%;
+}
+
+.parameters {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.stack-trace {
+    white-space: pre;
+    font-family: monospace;
+    font-size: 12px;
+    font-weight: bold;
+    margin-top: 0;
+    margin-left: 20px;
+}
+
+.testng-xml {
+    font-family: monospace;
+}
+
+.method-list-content {
+    margin-left: 10px;
+}
+
+.navigator-suite-content {
+    margin-left: 10px;
+    font: 12px 'Lucida Grande';
+}
+
+.suite-section-title {
+    margin-top: 10px;
+    width: 80%;
+    border-style: solid;
+    border-width: 1px 0 0 0;
+    font-family: Times, sans-serif;
+    font-size: 18px;
+    font-weight: bold;
+}
+
+.suite-section-content {
+    list-style-image: url(bullet_point.png);
+}
+
+.top-banner-root {
+    position: absolute;
+    top: 0;
+    height: 45px;
+    left: 0;
+    right: 0;
+    padding: 5px;
+    margin: 0 0 5px 0;
+    background-color: #0066ff;
+    font-family: Times, sans-serif;
+    color: #fff;
+    text-align: center;
+}
+.button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#0066ff;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#0066ff ;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline:none;
+
+}
+
+.top-banner-title-font {
+    font-size: 25px;
+}
+
+.test-name {
+    font-family: 'Lucida Grande', sans-serif;
+    font-size: 16px;
+}
+
+.suite-icon {
+    padding: 5px;
+    float: right;
+    height: 20px;
+}
+
+.test-group {
+    font: 20px 'Lucida Grande';
+    margin: 5px 5px 10px 5px;
+    border-width: 0 0 1px 0;
+    border-style: solid;
+    padding: 5px;
+}
+
+.test-group-name {
+    font-weight: bold;
+}
+
+.method-in-group {
+    font-size: 16px;
+    margin-left: 80px;
+}
+
+table.google-visualization-table-table {
+    width: 100%;
+}
+
+.reporter-method-name {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.reporter-method-output-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.ignored-class-div {
+    font-size: 14px;
+    font-family: monospace;
+}
+
+.ignored-methods-div {
+    padding: 5px;
+    margin: 0 0 5px 20px;
+    font-size: 12px;
+    font-family: monospace;
+    border-width: 0 0 0 1px;
+    border-style: solid;
+}
+
+.border-failed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #f00;
+}
+
+.border-skipped {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #edc600;
+}
+
+.border-passed {
+    border-top-left-radius: 10px 10px;
+    border-bottom-left-radius: 10px 10px;
+    border-style: solid;
+    border-width: 0 0 0 10px;
+    border-color: #19f52d;
+}
+
+.times-div {
+    text-align: center;
+    padding: 5px;
+}
+
+.suite-total-time {
+    font: 16px 'Lucida Grande';
+}
+
+.configuration-suite {
+    margin-left: 20px;
+}
+
+.configuration-test {
+    margin-left: 40px;
+}
+
+.configuration-class {
+    margin-left: 60px;
+}
+
+.configuration-method {
+    margin-left: 80px;
+}
+
+.test-method {
+    margin-left: 100px;
+}
+
+.chronological-class {
+    background-color: skyblue;
+    border-style: solid;
+    border-width: 0 0 1px 1px;
+}
+
+.method-start {
+    float: right;
+}
+
+.chronological-class-name {
+    padding: 0 0 0 5px;
+    color: #008;
+}
+
+.after, .before, .test-method {
+    font-family: monospace;
+    font-size: 14px;
+}
+
+.navigator-suite-header {
+    font-size: 22px;
+    margin: 0 10px 5px 0;
+    background-color: #deb887;
+    text-align: center;
+}
+
+.collapse-all-icon {
+    padding: 5px;
+    float: right;
+}
+/*retro Theme*/
diff --git a/opensaml-spring/target/surefire-reports/testng-reports.js b/opensaml-spring/target/surefire-reports/testng-reports.js
new file mode 100644
index 000000000..c1a84a35d
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng-reports.js
@@ -0,0 +1,122 @@
+$(document).ready(function() {
+    $('a.navigator-link').on("click", function() {
+        // Extract the panel for this link
+        var panel = getPanelName($(this));
+
+        // Mark this link as currently selected
+        $('.navigator-link').parent().removeClass('navigator-selected');
+        $(this).parent().addClass('navigator-selected');
+
+        showPanel(panel);
+    });
+
+    installMethodHandlers('failed');
+    installMethodHandlers('skipped');
+    installMethodHandlers('passed', true); // hide passed methods by default
+
+    $('a.method').on("click", function() {
+        showMethod($(this));
+        return false;
+    });
+
+    // Hide all the panels and display the first one (do this last
+    // to make sure the click() will invoke the listeners)
+    $('.panel').hide();
+    $('.navigator-link').first().trigger("click");
+
+    // Collapse/expand the suites
+    $('a.collapse-all-link').on("click", function() {
+        var contents = $('.navigator-suite-content');
+        if (contents.css('display') == 'none') {
+            contents.show();
+        } else {
+            contents.hide();
+        }
+    });
+});
+
+// The handlers that take care of showing/hiding the methods
+function installMethodHandlers(name, hide) {
+    function getContent(t) {
+    return $('.method-list-content.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getHideLink(t, name) {
+        var s = 'a.hide-methods.' + name + "." + t.attr('panel-name');
+        return $(s);
+    }
+
+    function getShowLink(t, name) {
+        return $('a.show-methods.' + name + "." + t.attr('panel-name'));
+    }
+
+    function getMethodPanelClassSel(element, name) {
+        var panelName = getPanelName(element);
+    var sel = '.' + panelName + "-class-" + name;
+        return $(sel);
+    }
+
+    $('a.hide-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.hide();
+        getHideLink($(this), name).hide();
+        getShowLink($(this), name).show();
+    getMethodPanelClassSel($(this), name).hide();
+    });
+
+    $('a.show-methods.' + name).on("click", function() {
+        var w = getContent($(this));
+        w.show();
+        getHideLink($(this), name).show();
+        getShowLink($(this), name).hide();
+    showPanel(getPanelName($(this)));
+    getMethodPanelClassSel($(this), name).show();
+    });
+
+    if (hide) {
+        $('a.hide-methods.' + name).trigger("click");
+    } else {
+        $('a.show-methods.' + name).trigger("click");
+    }
+}
+
+function getHashForMethod(element) {
+    return element.attr('hash-for-method');
+}
+
+function getPanelName(element) {
+    return element.attr('panel-name');
+}
+
+function showPanel(panelName) {
+    $('.panel').hide();
+    var panel = $('.panel[panel-name="' + panelName + '"]');
+    panel.show();
+}
+
+function showMethod(element) {
+    var hashTag = getHashForMethod(element);
+    var panelName = getPanelName(element);
+    showPanel(panelName);
+    var current = document.location.href;
+    var base = current.substring(0, current.indexOf('#'))
+    document.location.href = base + '#' + hashTag;
+    var newPosition = $(document).scrollTop() - 65;
+    $(document).scrollTop(newPosition);
+}
+
+function drawTable() {
+    for (var i = 0; i < suiteTableInitFunctions.length; i++) {
+        window[suiteTableInitFunctions[i]]();
+    }
+
+    for (var k in window.suiteTableData) {
+        var v = window.suiteTableData[k];
+        var div = v.tableDiv;
+        var data = v.tableData
+        var table = new google.visualization.Table(document.getElementById(div));
+        table.draw(data, {
+            showRowNumber : false
+        });
+    }
+}
diff --git a/opensaml-spring/target/surefire-reports/testng-reports1.css b/opensaml-spring/target/surefire-reports/testng-reports1.css
new file mode 100644
index 000000000..570323ffb
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng-reports1.css
@@ -0,0 +1,344 @@
+body {
+    background-color: whitesmoke;
+    margin: 0 0 5px 5px;
+}
+ul {
+     margin-top: 10px;
+     margin-left:-10px;
+}
+ li {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding:5px 5px;
+ }
+ a {
+     text-decoration: none;
+     color: black;
+     font-size: 14px;
+ }
+
+ a:hover {
+    color:black ;
+    text-decoration: underline;
+ }
+
+ .navigator-selected {
+     /* #ffa500; Mouse hover color after click Orange.*/
+     background:#027368
+ }
+
+ .wrapper {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 400px;
+     right: 0;
+     margin-right:9px;
+     overflow: auto;/*imortant*/
+ }
+
+ .navigator-root {
+     position: absolute;
+     top: 60px;
+     bottom: 0;
+     left: 0;
+     width: 400px;
+     overflow-y: auto;/*important*/
+ }
+
+ .suite {
+     margin: -5px 10px 10px 5px;
+     background-color: whitesmoke ;/*Colour of the left bside box*/
+ }
+
+ .suite-name {
+     font-size: 24px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/
+     color: white;
+ }
+
+ .main-panel-header {
+     padding: 5px;
+     background-color: #027368; /*afeeee*/;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color:white;
+     font-size: 18px;
+ }
+
+ .main-panel-content {
+     padding: 5px;
+     margin-bottom: 10px;
+     background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/
+ }
+
+ .rounded-window {
+     border-style: dotted;
+     border-width: 1px;/*Border of left Side box*/
+     background-color: whitesmoke;
+     border-radius: 10px;
+ }
+
+ .rounded-window-top {
+     border-top-right-radius: 10px 10px;
+     border-top-left-radius: 10px 10px;
+     border-style: solid;
+     border-width: 1px;
+     overflow: auto;/*Top of RightSide box*/
+ }
+
+ .light-rounded-window-top {
+     background-color: #027368;
+     padding-left:120px;
+     border-radius: 10px;
+
+ }
+
+ .rounded-window-bottom {
+     border-bottom-right-radius: 10px 10px;
+     border-bottom-left-radius: 10px 10px;
+     overflow: auto;/*Bottom of rightSide box*/
+ }
+
+ .method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-weight: bold;
+ }
+
+ .method-content {
+     border-style: solid;
+     border-width: 0 0 1px 0;
+     margin-bottom: 10px;
+     padding-bottom: 5px;
+     width: 100%;
+ }
+
+ .parameters {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .stack-trace {
+     white-space: pre;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 12px;
+     font-weight: bold;
+     margin-top: 0;
+     margin-left: 20px; /*Error Stack Trace Message*/
+ }
+
+ .testng-xml {
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .method-list-content {
+     margin-left: 10px;
+ }
+
+ .navigator-suite-content {
+     margin-left: 10px;
+     font: 12px 'Lucida Grande';
+ }
+
+ .suite-section-title {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     font-weight:bold;
+     background-color: #8C8887;
+     margin-left: -10px;
+     margin-top:10px;
+     padding:6px;
+ }
+
+ .suite-section-content {
+     list-style-image: url(bullet_point.png);
+     background-color: whitesmoke;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     overflow: hidden;
+ }
+
+ .top-banner-root {
+     position: absolute;
+     top: 0;
+     height: 45px;
+     left: 0;
+     right: 0;
+     padding: 5px;
+     margin: 0 0 5px 0;
+     background-color: #027368;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 18px;
+     color: #fff;
+     text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/
+ }
+
+ .top-banner-title-font {
+     font-size: 25px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     padding: 3px;
+     float: right;
+ }
+
+ .test-name {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 16px;
+ }
+
+ .suite-icon {
+     padding: 5px;
+     float: right;
+     height: 20px;
+ }
+
+ .test-group {
+     font: 20px 'Lucida Grande';
+     margin: 5px 5px 10px 5px;
+     border-width: 0 0 1px 0;
+     border-style: solid;
+     padding: 5px;
+ }
+
+ .test-group-name {
+     font-weight: bold;
+ }
+
+ .method-in-group {
+     font-size: 16px;
+     margin-left: 80px;
+ }
+
+ table.google-visualization-table-table {
+     width: 100%;
+ }
+
+ .reporter-method-name {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .reporter-method-output-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .ignored-class-div {
+     font-size: 14px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ }
+
+ .ignored-methods-div {
+     padding: 5px;
+     margin: 0 0 5px 20px;
+     font-size: 12px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     border-width: 0 0 0 1px;
+     border-style: solid;
+ }
+
+ .border-failed {
+    border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F20505;
+ }
+
+ .border-skipped {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #F2BE22;
+ }
+
+ .border-passed {
+     border-radius:2px;
+     border-style: solid;
+     border-width: 0 0 0 10px;
+     border-color: #038C73;
+ }
+
+ .times-div {
+     text-align: center;
+     padding: 5px;
+ }
+
+ .suite-total-time {
+     font: 16px 'Lucida Grande';
+ }
+
+ .configuration-suite {
+     margin-left: 20px;
+ }
+
+ .configuration-test {
+     margin-left: 40px;
+ }
+
+ .configuration-class {
+     margin-left: 60px;
+ }
+
+ .configuration-method {
+     margin-left: 80px;
+ }
+
+ .test-method {
+     margin-left: 100px;
+ }
+
+ .chronological-class {
+     background-color: #CCD0D1;
+     border-width: 0 0 1px 1px;/*Chronological*/
+ }
+
+ .method-start {
+     float: right;
+ }
+
+ .chronological-class-name {
+     padding: 0 0 0 5px;
+     margin-top:5px;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     color: #008;
+ }
+
+ .after, .before, .test-method {
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     font-size: 14px;
+     margin-top:5px;
+ }
+
+ .navigator-suite-header {
+     font-size: 18px;
+     margin: 0px 10px 10px 5px;
+     padding: 5px;
+     border-radius: 10px;
+     background-color: #027368;
+     color: white;
+     font-weight:bold;
+     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+     text-align: center; /*All Suites on top of left box*//*Status: -Completed*/
+ }
+
+ .collapse-all-icon {
+     padding: 3px;
+     float: right;
+ }
+ .button{
+    position: absolute;
+    margin-left:500px;
+    margin-top:8px;
+    background-color: white;
+    color:#027368;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight:bold;
+    border-color:#027368;
+    border-radius:25px;
+    cursor: pointer;
+    height:30px;
+    width:150px;
+    outline: none;
+}
+/*Author: - Akhil Gullapalli*/
\ No newline at end of file
diff --git a/opensaml-spring/target/surefire-reports/testng-reports2.js b/opensaml-spring/target/surefire-reports/testng-reports2.js
new file mode 100644
index 000000000..5342859fa
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng-reports2.js
@@ -0,0 +1,76 @@
+window.onload = function () {
+  let cookies = document.cookie;
+  let cookieValue = cookies.split('=');
+  if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') {
+    document.getElementById('retro').setAttribute('disabled', 'false');
+  } else if (cookieValue[1] === 'Switch Ultra Theme' ||
+      localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('retro').setAttribute('disabled', 'false');
+
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    if (cookieValue[1] === 'Switch Ultra Theme' ||
+        localStorage.getItem('Theme') === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('retro').setAttribute('disabled', 'false');
+
+      document.getElementById('button').innerText = "Switch Ultra Theme";
+      document.getElementById('retro').removeAttribute('disabled');
+      document.getElementById('ultra').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+
+    } else if (select === 'Switch Ultra Theme') {
+      document.getElementById('button').innerText = "Switch Retro Theme";
+      document.getElementById('ultra').removeAttribute('disabled');
+      document.getElementById('retro').setAttribute('disabled', 'false');
+      localStorage.setItem('Theme', select);
+    }
+  } else if (cookieValue[1] === 'Switch Retro Theme' ||
+      localStorage.getItem('Theme') === 'Switch Retro Theme') {
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+  }
+}
+document.getElementById('button').onclick = function () {
+  let select = document.getElementById('button').innerText;
+  if (select === 'Switch Retro Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Ultra Theme";
+    document.getElementById('retro').removeAttribute('disabled');
+    document.getElementById('ultra').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+
+  } else if (select === 'Switch Ultra Theme') {
+    let d = new Date();
+    days = 365;
+    d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
+    document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
+    document.getElementById('button').innerText = "Switch Retro Theme";
+    document.getElementById('ultra').removeAttribute('disabled');
+    document.getElementById('retro').setAttribute('disabled', 'false');
+    localStorage.setItem('Theme', select);
+  }
+}
+//Function to mouse hovering affect.
+document.getElementById('button').onmouseover = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "180px";
+  document.getElementById('button').style.height = "45px";
+  document.getElementById('button').style.marginTop = "1px";
+
+}
+//Function to mouse out affect
+document.getElementById('button').onmouseout = function () {
+  document.getElementById('button').style.borderRadius = "25px";
+  document.getElementById('button').style.width = "150px";
+  document.getElementById('button').style.height = "30px";
+  document.getElementById('button').style.marginTop = "8px";
+
+}
+
+//This is the file where we handle the switching of the Themes.
+/*Author:- Akhil Gullapalli*/
diff --git a/opensaml-spring/target/surefire-reports/testng-results.xml b/opensaml-spring/target/surefire-reports/testng-results.xml
new file mode 100644
index 000000000..3040b9940
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng-results.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testng-results ignored="1" total="9" passed="8" failed="0" skipped="0">
+  <reporter-output>
+  </reporter-output>
+  <suite started-at="2024-02-09T16:03:09 EST" name="Surefire suite" finished-at="2024-02-09T16:03:09 EST" duration-ms="619">
+    <groups>
+    </groups>
+    <test started-at="2024-02-09T16:03:09 EST" name="Surefire test" finished-at="2024-02-09T16:03:09 EST" duration-ms="619">
+      <class name="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest">
+        <test-method signature="customPropertiesFailsValidation()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]" started-at="2024-02-09T16:03:09 EST" name="customPropertiesFailsValidation" finished-at="2024-02-09T16:03:09 EST" duration-ms="26" status="PASS">
+          <exception class="org.springframework.beans.factory.BeanCreationException">
+            <message>
+              <![CDATA[Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StaticPKIXX509CredentialTrustEngine' defined in class path resource [org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml]: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
+at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
+at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
+at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
+at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
+at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
+at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:969)
+at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
+at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
+at net.shibboleth.shared.spring.util.ApplicationContextBuilder.build(ApplicationContextBuilder.java:487)
+at org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.customPropertiesFailsValidation(StaticPKIXFactoryBeanTest.java:90)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
+at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+at java.base/java.lang.reflect.Method.invoke(Method.java:568)
+at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
+at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
+at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
+at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
+at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
+at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
+at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
+at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
+at org.testng.TestRunner.privateRun(TestRunner.java:829)
+at org.testng.TestRunner.run(TestRunner.java:602)
+at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
+at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:431)
+at org.testng.SuiteRunner.privateRun(SuiteRunner.java:391)
+at org.testng.SuiteRunner.run(SuiteRunner.java:330)
+at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
+at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
+at org.testng.TestNG.runSuitesSequentially(TestNG.java:1256)
+at org.testng.TestNG.runSuitesLocally(TestNG.java:1176)
+at org.testng.TestNG.runSuites(TestNG.java:1099)
+at org.testng.TestNG.run(TestNG.java:1067)
+at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:169)
+at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:88)
+at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
+at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
+at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
+at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
+at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
+Caused by: org.springframework.beans.FatalBeanException: Certificate revocation checking was force enabled, but no static CRLs were supplied and both CRLDP and OCSP processing is disabled
+at org.opensaml.spring.trust.StaticPKIXFactoryBean.validateConfiguration(StaticPKIXFactoryBean.java:273)
+at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:246)
+at org.opensaml.spring.trust.StaticPKIXFactoryBean.doCreateInstance(StaticPKIXFactoryBean.java:58)
+at net.shibboleth.shared.spring.factory.AbstractComponentAwareFactoryBean.createInstance(AbstractComponentAwareFactoryBean.java:81)
+at net.shibboleth.shared.spring.factory.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:149)
+at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
+at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
+... 44 more
+]]>
+            </full-stacktrace>
+          </exception> <!-- org.springframework.beans.factory.BeanCreationException -->
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- customPropertiesFailsValidation -->
+        <test-method signature="customPropertiesSuccess()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]" started-at="2024-02-09T16:03:09 EST" name="customPropertiesSuccess" finished-at="2024-02-09T16:03:09 EST" duration-ms="16" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- customPropertiesSuccess -->
+        <test-method signature="defaults()[pri:0, instance:org.opensaml.spring.trust.StaticPKIXFactoryBeanTest at 7714e963]" started-at="2024-02-09T16:03:09 EST" name="defaults" finished-at="2024-02-09T16:03:09 EST" duration-ms="13" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- defaults -->
+      </class> <!-- org.opensaml.spring.trust.StaticPKIXFactoryBeanTest -->
+      <class name="org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest">
+        <test-method signature="mixed()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="mixed" finished-at="2024-02-09T16:03:09 EST" duration-ms="48" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- mixed -->
+        <test-method is-config="true" signature="tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="tearDownTestContext" finished-at="2024-02-09T16:03:09 EST" duration-ms="7" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDownTestContext -->
+        <test-method signature="multipleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="multipleCert" finished-at="2024-02-09T16:03:09 EST" duration-ms="36" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- multipleCert -->
+        <test-method is-config="true" signature="tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="tearDownTestContext" finished-at="2024-02-09T16:03:09 EST" duration-ms="0" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDownTestContext -->
+        <test-method signature="singleCert()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="singleCert" finished-at="2024-02-09T16:03:09 EST" duration-ms="23" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- singleCert -->
+        <test-method is-config="true" signature="tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="tearDownTestContext" finished-at="2024-02-09T16:03:09 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDownTestContext -->
+        <test-method signature="singleKey()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="singleKey" finished-at="2024-02-09T16:03:09 EST" duration-ms="20" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- singleKey -->
+        <test-method is-config="true" signature="tearDownTestContext()[pri:0, instance:org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest at 1dde4cb2]" started-at="2024-02-09T16:03:09 EST" name="tearDownTestContext" finished-at="2024-02-09T16:03:09 EST" duration-ms="1" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- tearDownTestContext -->
+      </class> <!-- org.opensaml.spring.trust.StaticExplicitKeyFactoryBeanTest -->
+      <class name="org.opensaml.spring.trust.AbstractSecurityTest">
+        <test-method is-config="true" signature="setupDirs()[pri:0, instance:org.opensaml.spring.trust.AbstractSecurityTest at 3835c46]" started-at="2024-02-09T16:03:09 EST" name="setupDirs" finished-at="2024-02-09T16:03:09 EST" duration-ms="15" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- setupDirs -->
+      </class> <!-- org.opensaml.spring.trust.AbstractSecurityTest -->
+      <class name="org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest">
+        <test-method signature="bean()[pri:0, instance:org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest at 64cd705f]" started-at="2024-02-09T16:03:09 EST" name="bean" finished-at="2024-02-09T16:03:09 EST" duration-ms="405" status="PASS">
+          <reporter-output>
+          </reporter-output>
+        </test-method> <!-- bean -->
+      </class> <!-- org.opensaml.spring.credential.BasicX509CredentialFactoryBeanTest -->
+    </test> <!-- Surefire test -->
+  </suite> <!-- Surefire suite -->
+</testng-results>
diff --git a/opensaml-spring/target/surefire-reports/testng.css b/opensaml-spring/target/surefire-reports/testng.css
new file mode 100644
index 000000000..5124ba863
--- /dev/null
+++ b/opensaml-spring/target/surefire-reports/testng.css
@@ -0,0 +1,9 @@
+.invocation-failed,  .test-failed  { background-color: #DD0000; }
+.invocation-percent, .test-percent { background-color: #006600; }
+.invocation-passed,  .test-passed  { background-color: #00AA00; }
+.invocation-skipped, .test-skipped { background-color: #CCCC00; }
+
+.main-page {
+  font-size: x-large;
+}
+
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBeanTest.class b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBeanTest.class
new file mode 100644
index 000000000..1140249d4
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/BasicX509CredentialFactoryBeanTest.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/bean.xml b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/bean.xml
new file mode 100644
index 000000000..9a2d0d2d2
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/bean.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+                           
+       default-init-method="initialize"
+       default-destroy-method="destroy">
+
+    <bean id="Credential"
+        class="org.opensaml.spring.credential.BasicX509CredentialFactoryBean"
+        p:privateKeyResource="org/opensaml/spring/credential/idp-signing.key"
+        p:certificateResource="org/opensaml/spring/credential/idp-signing.crt"
+        p:entityId="http://example.org/plain" />
+
+    <bean id="EncCredential"
+        class="org.opensaml.spring.credential.BasicX509CredentialFactoryBean"
+        p:privateKeyResource="org/opensaml/spring/credential/idp-signing.key.pass"
+        p:certificateResource="org/opensaml/spring/credential/idp-signing.crt"
+        p:privateKeyPassword="pass"
+        p:entityId="http://example.org/enc" />
+        
+</beans>
\ No newline at end of file
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/cert.pem b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/cert.pem
new file mode 100644
index 000000000..c0df65bc9
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/cert.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDtTCCAp2gAwIBAgIJAPmsD+VGldyPMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTQwNDExMTMzOTE4WhcNMjQwNDA4MTMzOTE4WjBF
+MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAxg0TyQAP/tIvOH89EtaXuRRn8SYzTj7W1TbNY4VvBmobjkRmSkki4hH9
+x4sQpi635wn6WtXTN/FNNmkTK3N/LspmBWxfZS+n+cc7I82E5yvCAPX67QsZgqgg
+lp2W5dvK/FsMMCS6X6SVqzBLMP88NenXKxY+HMxMs0sT0UKYh1cAEqadrHRBO65a
+DBcm5a0sBVYt9K6pgaOHrp/zSIbhnR5tFFLjBbtFktDpHL3AdGBH3OYidNGKBO3t
+J3Ms7LeKXsM0+0Y4P+9fHZINL2X3E2N6GVnKs5PZTg9sP0FtIpAbYm/+zCx7Yj1E
+T/Er8mDd6tNVGSQsn9s5xUBwGqn14wIDAQABo4GnMIGkMB0GA1UdDgQWBBSiQhSu
+p9BYjD2ZuMkEiQK7w/Zq0TB1BgNVHSMEbjBsgBSiQhSup9BYjD2ZuMkEiQK7w/Zq
+0aFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV
+BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAPmsD+VGldyPMAwGA1UdEwQF
+MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHZmIo9GBTSsD5DJfKkCVUvBafwR089H
+BkgVPOuVuEe803BRlKd4BVIsuxAUAy3oqdJYqf9ptPEx8Ef+ALbcDhRbWINhMgO7
+0/S4x3pS9gOn7/Y9yZplOe4Jd2q3R8QBef+hKLcD/Uv0Sqy2nilM8BnMga5tqsL+
+8oFt0blzXtQ2vcOVyNyG326uZBZv2Cf6FXFsYQX1L/tLeTBJegefgGkg2dqCTKIU
+1Qy/Kd2P3/S01kQxjDeG7UfXc9qtelJ68kvzK2d3WOJ2qmsdMxjMNfTItP7FO54M
+i8V7gp9HK+EimdSbgu7xktKlrqA2Rsn+dBoPSgOUs/LOGtCS9/biF0w=
+-----END CERTIFICATE-----
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/certificate.pem b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/certificate.pem
new file mode 100644
index 000000000..d9e8f8606
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/certificate.pem
@@ -0,0 +1,52 @@
+-----BEGIN CERTIFICATE-----
+MIIDSTCCArKgAwIBAgIJAKg8tR5hjVM4MA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNV
+BAYTAlVTMR0wGwYDVQQIExREaXN0cmljdCBvZiBDb2x1bWJpYTETMBEGA1UEBxMK
+V2FzaGluZ3RvbjEeMBwGA1UEChMVR2VvcmdldG93biBVbml2ZXJzaXR5MRQwEgYD
+VQQDEwtleGFtcGxlLm9yZzAeFw0wNzA4MDUxMzA4MDJaFw0xNzA4MDIxMzA4MDJa
+MHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQIExREaXN0cmljdCBvZiBDb2x1bWJpYTET
+MBEGA1UEBxMKV2FzaGluZ3RvbjEeMBwGA1UEChMVR2VvcmdldG93biBVbml2ZXJz
+aXR5MRQwEgYDVQQDEwtleGFtcGxlLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
+gYkCgYEA5zKHuD5DGPEQH+yLDMIA5M46HwJk7HxlGQ7N9WmkhaI22zXPC0UO8sY4
+AJW/8nlm0pc505iQmbgslg7/JyBemBj1sI7pOp6eCUPs7NR2mwaujXBturiRaJIe
+AX1Gjr3sO+3aLvqxUEu0PWqci4m1uc8XHQCA+PlEQQQnB9UIJwcCAwEAAaOB3DCB
+2TAdBgNVHQ4EFgQUzEhylzE4wmr4FK1lZ7zjR/KmA24wgakGA1UdIwSBoTCBnoAU
+zEhylzE4wmr4FK1lZ7zjR/KmA26he6R5MHcxCzAJBgNVBAYTAlVTMR0wGwYDVQQI
+ExREaXN0cmljdCBvZiBDb2x1bWJpYTETMBEGA1UEBxMKV2FzaGluZ3RvbjEeMBwG
+A1UEChMVR2VvcmdldG93biBVbml2ZXJzaXR5MRQwEgYDVQQDEwtleGFtcGxlLm9y
+Z4IJAKg8tR5hjVM4MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAGfkM
+HUeWzHzsBkwTu+S2vX4gzlJPjiL3RzL40og/qyGz38P4KVg8IQvsGDjs1VFzzcAJ
+I5ULnSocUOTk5sCTjDKT6VILhgAYJ1jnqIo7Z+VC1r3AS9cSDakzqWTc19EFKxEw
+6jeBWaqyykdSiVhCAmG5AJsvk+K032zjkWWMo+0=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFmjCCBIKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJVUzEc
+MBoGA1UEChMTSW5Db21tb24gRmVkZXJhdGlvbjEpMCcGA1UEAxMgSW5Db21tb24g
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwMzMwMjAzNDAwWhcNMTQwMzI5
+MjAzNDAwWjBWMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTSW5Db21tb24gRmVkZXJh
+dGlvbjEpMCcGA1UEAxMgSW5Db21tb24gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRGjKsUM2QAupLAaWx82/C
+WPalKjKFY8UPmz0T3gf7tJPztTy1Zq8pD0WFRLcQeSBKZGCu8upe8X966b6TZ5yu
+oUDA754If0DWismuHNoMgRR/l0UvZmPWDGRWd3NBTB8/soLA4EbqFf5Xq8MOJKhP
+tzcDR33gtaAb3oilZ+ZTpnhTFFrn/qXrAKcSDBpuW2JRpi3xaF/hTPI097oUShOz
+D1Zj21UYLA6iSFVN+1wlfwilf2KFNK/+zbkCge6wgipZyXxaOAam6ncqmkxy+hy/
+OiJMmdB+6xkO0xXSBUUcqxJrOcUQhA1vntgb3q5zOJISXhC4RAReA0HyBp/wd0iD
+AgMBAAGjggJxMIICbTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
+BgNVHQ4EFgQUky3IYRitY+ObZbOd3Y2TuufKY0UwfgYDVR0jBHcwdYAUky3IYRit
+Y+ObZbOd3Y2TuufKY0WhWqRYMFYxCzAJBgNVBAYTAlVTMRwwGgYDVQQKExNJbkNv
+bW1vbiBGZWRlcmF0aW9uMSkwJwYDVQQDEyBJbkNvbW1vbiBDZXJ0aWZpY2F0aW9u
+IEF1dGhvcml0eYIBADCBugYIKwYBBQUHAQEEga0wgaowgacGCCsGAQUFBzAChoGa
+aHR0cDovL2luY29tbW9uY2ExLmluY29tbW9uZmVkZXJhdGlvbi5vcmcvYnJpZGdl
+L2NlcnRzL2NhLWNlcnRzLnA3YgoJCUNBIElzc3VlcnMgLSBVUkk6aHR0cDovL2lu
+Y29tbW9uY2EyLmluY29tbW9uZmVkZXJhdGlvbi5vcmcvYnJpZGdlL2NlcnRzL2Nh
+LWNlcnRzLnA3YjCBjQYDVR0fBIGFMIGCMD+gPaA7hjlodHRwOi8vaW5jb21tb25j
+cmwxLmluY29tbW9uZmVkZXJhdGlvbi5vcmcvY3JsL2VlY3Jscy5jcmwwP6A9oDuG
+OWh0dHA6Ly9pbmNvbW1vbmNybDIuaW5jb21tb25mZWRlcmF0aW9uLm9yZy9jcmwv
+ZWVjcmxzLmNybDBeBgNVHSAEVzBVMFMGCysGAQQBriMBBAEBMEQwQgYIKwYBBQUH
+AgEWNmh0dHA6Ly9pbmNvbW1vbmNhLmluY29tbW9uZmVkZXJhdGlvbi5vcmcvcHJh
+Y3RpY2VzLnBkZjANBgkqhkiG9w0BAQUFAAOCAQEAZfgKUPA+Ky+Ou/vclMlFTMlU
+GspfbNSdG/fmIq+E/Lv1d2c73Am1zGhOpxgdkM8SE+BPnXW2rl71/N8gaqwgBBxk
+pwn410siumxlDTwV3HoVFvCGWylNy9o8OE1LyTCqfo8PRwrMzhwcagDgD813BIyj
+uJg/JQz1LnHMocIW/JligloSIzF1O435/+ckfWXQsmBIhvV5TmA3ZrcycrI1cHGE
+ZqrCXL0FMZLSr+Vady/tFbVojqI8pSubSMxNkZectePTBjVj1Qeb4hmG8jRv/fwy
+1Iw6OFH8RKny8nQaO5mOe/fF/swEsMVU9TDpvLIgbhTwnP7Nhfotgaxf5wG8WA==
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.crt b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.crt
new file mode 100644
index 000000000..c0df65bc9
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDtTCCAp2gAwIBAgIJAPmsD+VGldyPMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQwHhcNMTQwNDExMTMzOTE4WhcNMjQwNDA4MTMzOTE4WjBF
+MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
+ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAxg0TyQAP/tIvOH89EtaXuRRn8SYzTj7W1TbNY4VvBmobjkRmSkki4hH9
+x4sQpi635wn6WtXTN/FNNmkTK3N/LspmBWxfZS+n+cc7I82E5yvCAPX67QsZgqgg
+lp2W5dvK/FsMMCS6X6SVqzBLMP88NenXKxY+HMxMs0sT0UKYh1cAEqadrHRBO65a
+DBcm5a0sBVYt9K6pgaOHrp/zSIbhnR5tFFLjBbtFktDpHL3AdGBH3OYidNGKBO3t
+J3Ms7LeKXsM0+0Y4P+9fHZINL2X3E2N6GVnKs5PZTg9sP0FtIpAbYm/+zCx7Yj1E
+T/Er8mDd6tNVGSQsn9s5xUBwGqn14wIDAQABo4GnMIGkMB0GA1UdDgQWBBSiQhSu
+p9BYjD2ZuMkEiQK7w/Zq0TB1BgNVHSMEbjBsgBSiQhSup9BYjD2ZuMkEiQK7w/Zq
+0aFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV
+BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAPmsD+VGldyPMAwGA1UdEwQF
+MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHZmIo9GBTSsD5DJfKkCVUvBafwR089H
+BkgVPOuVuEe803BRlKd4BVIsuxAUAy3oqdJYqf9ptPEx8Ef+ALbcDhRbWINhMgO7
+0/S4x3pS9gOn7/Y9yZplOe4Jd2q3R8QBef+hKLcD/Uv0Sqy2nilM8BnMga5tqsL+
+8oFt0blzXtQ2vcOVyNyG326uZBZv2Cf6FXFsYQX1L/tLeTBJegefgGkg2dqCTKIU
+1Qy/Kd2P3/S01kQxjDeG7UfXc9qtelJ68kvzK2d3WOJ2qmsdMxjMNfTItP7FO54M
+i8V7gp9HK+EimdSbgu7xktKlrqA2Rsn+dBoPSgOUs/LOGtCS9/biF0w=
+-----END CERTIFICATE-----
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key
new file mode 100644
index 000000000..951462f0d
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAxg0TyQAP/tIvOH89EtaXuRRn8SYzTj7W1TbNY4VvBmobjkRm
+Skki4hH9x4sQpi635wn6WtXTN/FNNmkTK3N/LspmBWxfZS+n+cc7I82E5yvCAPX6
+7QsZgqgglp2W5dvK/FsMMCS6X6SVqzBLMP88NenXKxY+HMxMs0sT0UKYh1cAEqad
+rHRBO65aDBcm5a0sBVYt9K6pgaOHrp/zSIbhnR5tFFLjBbtFktDpHL3AdGBH3OYi
+dNGKBO3tJ3Ms7LeKXsM0+0Y4P+9fHZINL2X3E2N6GVnKs5PZTg9sP0FtIpAbYm/+
+zCx7Yj1ET/Er8mDd6tNVGSQsn9s5xUBwGqn14wIDAQABAoIBAHG6nLv13zmTdS5a
+UrX4qNPNVgryxs+N4kw51iPqQeFLGVvPB3ZtHSz46+SkhQEJHu37mtqCo3IijRZL
+rIhtIIG8FG3U18sBXNJgiCN9J26ggB2RI3DvyMxww5X6FOcWGjBkEFGtJaE6n//Y
+EbWnO+oxyC+j7DMZVoo2+MBYH8LHPXpMPFPhYbf12LpHY+WeNgX/eemMTlSylBln
+lfhySCtpLcgY7+juYlXaZ9Y1z37QZBcP6yYLTnXJVlhY1KcULh+/PUnmzVpHbkwU
+v/yQiFGFsve1ROp0ztB6sFufLnvGcTa3T1Oeza9ZaX/zjbMbGp3qjSGoknS23U0Q
+ZotRB+ECgYEA9EmvBYLWgEayOlZPcBwKZ3Qrwf9ip3xmtubrf9byIozEeQTKvHmA
+UvK5dKN1pwK0gTaWk5aq+n64HtwJ0+pO4bV32TJJlV/la4xd7wHdH5+S5cdQjd/r
+tuxyejp5FhqT+x2rKibskEeFKhfgIIolpkcNFIKc9xa3/VBOWPxV19kCgYEAz4vl
+xJhD8Cf97bm5hemiJPt2eQMCTGCE39O4UaY6xi5lINoySoh8qd2e59nnneG4YaNp
+tHU23oh00m68Jx8b7wMFliQ/J59lxAkfP262EkBqf/VOAVXQo/iaA8HSwq3Hfwt5
+0F4HMQEfB6qf7/LGvFHTQ8+Wn1upZGaYP1YAghsCgYBe3FILmNAExe8luihkx26+
+15y6W5qKoUMdmTQv0175TaJpwBOd9qx/CWQ8x9DDBsjjODhmnWZNmXGUAiwKz3zM
+JvSgMefjCncDOWGskxOz2PppIenE/gQBZ3XYwuYMUEvQgqfZ2X2ZVTx/qP/Ogva1
+x/drVIDxbjAKPOn/ohUPmQKBgQChW5qfZeIr7Gu3TxW1zxaIuhg5rOU0jDXB7tD2
+ac54Fcn56KoA2GxThEHu77LrRHodLvcXnamzCVQJ5p3RrJYDFM5bFIMlQv/TkWQB
+5QkY14v1P7oNv7IeSUE0epRpVsIrO7jRDsl4h+6f/z+pRY7NCrC9n77y1ki0Di9/
+zlVG0QKBgFXQkO/bf0Qs3COPWUs5nHyQ/sR0ptx1jrFDSjCdGvBC7NrDlwNP3894
+EHCUTrEHhjtAGVzyZakZ6PLAN9cf86N1QhvOdj/oasL5vddWyFK74x2/mtp59VOU
+LaCxnnbG4JoSVX96BSzUFbtRrQbf2+t5ZON9K12IPIxstMkF2j8u
+-----END RSA PRIVATE KEY-----
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key.pass b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key.pass
new file mode 100644
index 000000000..cde1772f7
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/idp-signing.key.pass
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,167811113CA00D40A7A46A79F0133598
+
+lzqV3Xcehk1mnsq4ZRXqiGZXIhYPWA7KqjqJYEHd10JvJoNUwZ7l6VmyZUtny1Xq
+nPPLjWsZ5rOVQkULOX/ZCmXCAW3YgvoIXmdjcenRlZTlbi7vNqongiNGgRleWRlS
+V/E+KrQXlt0jfV1KdW/PDe712mytL7akWoIE39rI0Z78EhD5YfGsA6J6azLmB5zS
+Ffu+wUfND7/gTR3roVlj8Vs1GWxdyNNLI3yUnK6aRd8zO/eTeTcMullSRpT1ORsI
+qhEMfTIBhG+yqC+NhDv1UJ8r8N6jiD63ciKwrt31SOGamdZNRdgxm1sCOcH/akN4
+w9DStPCx809gw46g/ZAi2V2sa0FguS8Jed/LFGwHG/6FVK/nLONzdFIzNF4gZ+B0
+rIPhrdK2kWpEHbMzPZG2KQack9mDv63HNTAJ8Xu1Sf9oHjJyEpdR7bczS+WeZNjd
+YyM6fR7z9n+UWhqa2+2VtAX5KsnNy5BP1SI2h3rVdpW7+hZO74O31Jj6j0QFe0ks
+e20X3ldx/EPJpJunLv46wLsSEoxfuooFj0bxpPEIjb76q9jOXJHr7M+57pdH6Z17
+lPZQ+nCUvUyfIDZ66EfMYpR6nGpYizhpRlvc5U35sU1ZEtngKwJ1rcwFkYD6THKG
+3Y+UVXd9Ft7EbuI7ArB3MOEsOgrw37IvIT3bAI3pvmdezs6H+j5cfb4F7cIGVXWM
+GB00ahK+qNnL0TaC2+qKuGT4bCxeUYkf8fY21JDnIVpZotjeau5qE32AfjWTjPBJ
+RRTyzVvAS3IjeA/LvsMVailUhZTv0sbgudGh14GKp1HWwLQKs4SXAgGCNCNEOaWu
+vKQT2srL5v0d9SBrVhZBi2u1zIiTREy8JIucX2fNvaDPJ9ZJDqxcEVZUnfaXui0u
+y0cinJ5OJQKM99hK6jVimchdJ+viGc4RRZPatkY/ZSiISJwVtrF/VbsAGN45SI+9
+GbAAD4PKOPDxeQ7qMck/OHQAFi3gUDeRsw//13lHOd3KvsWFQIuOcKJPusdU4jJV
+vBUBVtAJxlESJbjfyN1z6vM8mhm5k63apTuSDmzJfU9hMv7eKV7PIhH48RBNqtWl
+atTukx4eex56Jv54u+kKMVZC8AkrCukYrdho+QVdXJ9J0ZqGW0o9BscE4qBpm16K
+/7EL9IfmqZPK5JyxAJPINYeuBu8RPLhbRDFXCr9hMI1VX24O6S3jJWcQmAU8kOki
+UhnYwOUS98cgecyuLmEnzdvogQXFt81jrfFBNLoQ6v/SS1BIJpkDzTWAz+1qjKpR
+1IFdL8omj9SqVPHelUC5s0LKmhI6NLSC/RGFlSaAJ5FcbPTTdaNKH9dDrfQ+yylN
+bINRkbkWBrsVtMdw42Rba4WTSU7iNFQ8/UdNnHOLmfz4yR4x/g++8YusJys4OfD5
+rxr6Y8bAkhO/ebO1ERGmubZQO4AmdLllNXvgfxjY0M4Mpq6DCMLSFfz5Wc+lpX0E
+5ZRDbOBPZcGjJwJKXDDWPAQ95nbHotg/wNy+MeVXylpPgg+NCncdxqikIb/5gx91
+loYi7X4XgaXf6J4VPZDcaQiQul8YLaOk/BCMLopAGIzT+cDxsOi/zKkAICuuMiIn
+-----END RSA PRIVATE KEY-----
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/credential/publicKey.pem b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/publicKey.pem
new file mode 100644
index 000000000..5c4e2e78c
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/credential/publicKey.pem
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxg0TyQAP/tIvOH89EtaX
+uRRn8SYzTj7W1TbNY4VvBmobjkRmSkki4hH9x4sQpi635wn6WtXTN/FNNmkTK3N/
+LspmBWxfZS+n+cc7I82E5yvCAPX67QsZgqgglp2W5dvK/FsMMCS6X6SVqzBLMP88
+NenXKxY+HMxMs0sT0UKYh1cAEqadrHRBO65aDBcm5a0sBVYt9K6pgaOHrp/zSIbh
+nR5tFFLjBbtFktDpHL3AdGBH3OYidNGKBO3tJ3Ms7LeKXsM0+0Y4P+9fHZINL2X3
+E2N6GVnKs5PZTg9sP0FtIpAbYm/+zCx7Yj1ET/Er8mDd6tNVGSQsn9s5xUBwGqn1
+4wIDAQAB
+-----END PUBLIC KEY-----
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/AbstractSecurityTest.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/AbstractSecurityTest.class
new file mode 100644
index 000000000..4811de9bf
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/AbstractSecurityTest.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/MockTrustEngine.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/MockTrustEngine.class
new file mode 100644
index 000000000..1b6f2dcdb
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/MockTrustEngine.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBeanTest.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBeanTest.class
new file mode 100644
index 000000000..07e767c24
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticExplicitKeyFactoryBeanTest.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockPKIXTrustEvaluator.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockPKIXTrustEvaluator.class
new file mode 100644
index 000000000..cff36f3a9
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockPKIXTrustEvaluator.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockX509CredentialNameEvaluator.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockX509CredentialNameEvaluator.class
new file mode 100644
index 000000000..61d2d26e9
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest$MockX509CredentialNameEvaluator.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest.class b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest.class
new file mode 100644
index 000000000..31ecef25c
Binary files /dev/null and b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/StaticPKIXFactoryBeanTest.class differ
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml
new file mode 100644
index 000000000..7f0823a8c
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-failsValidation.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+                           
+       default-init-method="initialize"
+       default-destroy-method="destroy">
+
+    <bean id="StaticPKIXX509CredentialTrustEngine"
+          class="org.opensaml.spring.trust.StaticPKIXFactoryBean">
+        <property name="certificates">
+            <list>
+                <value>org/opensaml/spring/credential/idp-signing.crt</value>
+            </list>
+          </property>
+        <property name="trustEvaluator">
+            <bean class="org.opensaml.security.x509.impl.CertPathPKIXTrustEvaluator" destroy-method="">
+                <property name="PKIXValidationOptions">
+                    <bean class="org.opensaml.security.x509.impl.CertPathPKIXValidationOptions"
+                        p:forceRevocationEnabled="true"
+                        p:revocationEnabled="true"
+                        destroy-method="" />
+                </property>
+            </bean>
+        </property>
+    </bean>
+        
+</beans>
\ No newline at end of file
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-success.xml b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-success.xml
new file mode 100644
index 000000000..22e93f04c
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-custom-success.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+                           
+       default-init-method="initialize"
+       default-destroy-method="destroy">
+
+    <bean id="StaticPKIXX509CredentialTrustEngine"
+          class="org.opensaml.spring.trust.StaticPKIXFactoryBean">
+        <property name="certificates">
+            <list>
+                <value>org/opensaml/spring/credential/idp-signing.crt</value>
+            </list>
+          </property>
+        <property name="trustEvaluator">
+            <bean class="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.MockPKIXTrustEvaluator" />
+        </property>
+        <property name="credentialNameEvaluator">
+            <bean class="org.opensaml.spring.trust.StaticPKIXFactoryBeanTest.MockX509CredentialNameEvaluator" />
+        </property>
+    </bean>
+        
+</beans>
\ No newline at end of file
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-defaults.xml b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-defaults.xml
new file mode 100644
index 000000000..cf186faec
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/static-pkix-factory-defaults.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+                           
+       default-init-method="initialize"
+       default-destroy-method="destroy">
+
+    <bean id="StaticPKIXX509CredentialTrustEngine"
+          class="org.opensaml.spring.trust.StaticPKIXFactoryBean">
+        <property name="certificates">
+            <list>
+                <value>org/opensaml/spring/credential/idp-signing.crt</value>
+            </list>
+          </property>
+    </bean>
+        
+</beans>
\ No newline at end of file
diff --git a/opensaml-spring/target/test-classes/org/opensaml/spring/trust/staticExplicitNative.xml b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/staticExplicitNative.xml
new file mode 100644
index 000000000..655606a74
--- /dev/null
+++ b/opensaml-spring/target/test-classes/org/opensaml/spring/trust/staticExplicitNative.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
+	xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
+	default-init-method="initialize" default-destroy-method="destroy">
+
+    <bean id="staticKeySingle"
+        class="org.opensaml.spring.trust.StaticExplicitKeyFactoryBean"
+        p:publicKeys="classpath:/org/opensaml/spring/credential/publicKey.pem" />
+
+    <bean id="staticX509Single"
+        class="org.opensaml.spring.trust.StaticExplicitKeyFactoryBean"
+        p:certificates="classpath:/org/opensaml/spring/credential/cert.pem" />
+
+    <bean id="staticX509Multiple"
+        class="org.opensaml.spring.trust.StaticExplicitKeyFactoryBean"
+        p:certificates="classpath:/org/opensaml/spring/credential/certificate.pem" />
+
+    <bean id="staticMixed"
+        class="org.opensaml.spring.trust.StaticExplicitKeyFactoryBean"
+        p:publicKeys="classpath:/org/opensaml/spring/credential/publicKey.pem"
+        p:certificates="classpath:/org/opensaml/spring/credential/cert.pem" />
+
+</beans>
diff --git a/opensaml-testing/target/classes/META-INF/MANIFEST.MF b/opensaml-testing/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..75e0c0e0b
--- /dev/null
+++ b/opensaml-testing/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Build-Jdk-Spec: 21
+Automatic-Module-Name: org.opensaml.testing
+Created-By: Maven Integration for Eclipse
+Sealed: true
+
diff --git a/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.properties b/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.properties
new file mode 100644
index 000000000..cd4148982
--- /dev/null
+++ b/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Fri Mar 01 18:25:43 EST 2024
+artifactId=opensaml-testing
+groupId=org.opensaml
+m2e.projectLocation=/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing
+m2e.projectName=opensaml-testing
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.xml b/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.xml
new file mode 100644
index 000000000..bd3727a1a
--- /dev/null
+++ b/opensaml-testing/target/classes/META-INF/maven/org.opensaml/opensaml-testing/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.opensaml</groupId>
+        <artifactId>opensaml-parent</artifactId>
+        <version>5.1.0-SNAPSHOT</version>
+    </parent>
+
+    <name>OpenSAML :: Testing</name>
+    <description>Testing APIs</description>
+    <artifactId>opensaml-testing</artifactId>
+    <packaging>jar</packaging>
+
+    <properties>
+        <automatic.module.name>org.opensaml.testing</automatic.module.name>
+    </properties>
+
+    <dependencies>
+        <!-- Compile Dependencies -->
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-core-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-messaging-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-profile-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-saml-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>opensaml-storage-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <!-- Normally test scope. -->
+            <scope>compile</scope>
+        </dependency>        
+        
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-core</artifactId>
+            <!-- Normally test scope. -->
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-matchers</artifactId>
+            <!-- Normally test scope. -->
+            <scope>compile</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk18on</artifactId>
+        </dependency>
+
+        <!-- Provided Dependencies -->
+
+        <!-- Runtime Dependencies -->
+
+        <!-- Test Dependencies -->
+    </dependencies>
+
+</project>
diff --git a/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.ConfigurationPropertiesSource b/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.ConfigurationPropertiesSource
new file mode 100644
index 000000000..9d33d7bdb
--- /dev/null
+++ b/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.ConfigurationPropertiesSource
@@ -0,0 +1 @@
+org.opensaml.core.config.provider.ThreadLocalConfigurationPropertiesSource
\ No newline at end of file
diff --git a/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.Initializer b/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.Initializer
new file mode 100644
index 000000000..55e68ae8c
--- /dev/null
+++ b/opensaml-testing/target/classes/META-INF/services/org.opensaml.core.config.Initializer
@@ -0,0 +1 @@
+org.opensaml.core.testing.TestXMLObjectProviderInitializer
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/InitializerBaseTestCase.class b/opensaml-testing/target/classes/org/opensaml/core/testing/InitializerBaseTestCase.class
new file mode 100644
index 000000000..86e59da67
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/InitializerBaseTestCase.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/OpenSAMLInitBaseTestCase.class b/opensaml-testing/target/classes/org/opensaml/core/testing/OpenSAMLInitBaseTestCase.class
new file mode 100644
index 000000000..67851eb3a
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/OpenSAMLInitBaseTestCase.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/TestXMLObjectProviderInitializer.class b/opensaml-testing/target/classes/org/opensaml/core/testing/TestXMLObjectProviderInitializer.class
new file mode 100644
index 000000000..84e216ee4
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/TestXMLObjectProviderInitializer.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectBaseTestCase.class b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectBaseTestCase.class
new file mode 100644
index 000000000..092edd79d
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectBaseTestCase.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderBaseTestCase.class b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderBaseTestCase.class
new file mode 100644
index 000000000..f21c8d6b4
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderBaseTestCase.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderInitializerBaseTestCase.class b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderInitializerBaseTestCase.class
new file mode 100644
index 000000000..27923ff69
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/testing/XMLObjectProviderInitializerBaseTestCase.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObject.class b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObject.class
new file mode 100644
index 000000000..48ed649b8
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObject.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectBuilder.class b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectBuilder.class
new file mode 100644
index 000000000..e4a3a5582
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectBuilder.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectMarshaller.class b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectMarshaller.class
new file mode 100644
index 000000000..48853d968
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectMarshaller.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectUnmarshaller.class b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectUnmarshaller.class
new file mode 100644
index 000000000..8ebd1a975
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/core/xml/mock/SimpleXMLObjectUnmarshaller.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/profile/testing/ActionTestingSupport.class b/opensaml-testing/target/classes/org/opensaml/profile/testing/ActionTestingSupport.class
new file mode 100644
index 000000000..b63e02e46
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/profile/testing/ActionTestingSupport.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/profile/testing/RequestContextBuilder.class b/opensaml-testing/target/classes/org/opensaml/profile/testing/RequestContextBuilder.class
new file mode 100644
index 000000000..662b395fb
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/profile/testing/RequestContextBuilder.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/saml/saml1/testing/SAML1ActionTestingSupport.class b/opensaml-testing/target/classes/org/opensaml/saml/saml1/testing/SAML1ActionTestingSupport.class
new file mode 100644
index 000000000..3a6fedd7b
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/saml/saml1/testing/SAML1ActionTestingSupport.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/saml/saml2/testing/SAML2ActionTestingSupport.class b/opensaml-testing/target/classes/org/opensaml/saml/saml2/testing/SAML2ActionTestingSupport.class
new file mode 100644
index 000000000..9d3c1e2be
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/saml/saml2/testing/SAML2ActionTestingSupport.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/security/testing/MockTrustEngine.class b/opensaml-testing/target/classes/org/opensaml/security/testing/MockTrustEngine.class
new file mode 100644
index 000000000..f9077903f
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/security/testing/MockTrustEngine.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/security/testing/SecurityProviderTestSupport.class b/opensaml-testing/target/classes/org/opensaml/security/testing/SecurityProviderTestSupport.class
new file mode 100644
index 000000000..57ab962d2
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/security/testing/SecurityProviderTestSupport.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest$AnnotatedObject.class b/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest$AnnotatedObject.class
new file mode 100644
index 000000000..6e7e00a25
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest$AnnotatedObject.class differ
diff --git a/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest.class b/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest.class
new file mode 100644
index 000000000..845251499
Binary files /dev/null and b/opensaml-testing/target/classes/org/opensaml/storage/testing/StorageServiceTest.class differ
diff --git a/opensaml-testing/target/classes/xmltooling-config.xml b/opensaml-testing/target/classes/xmltooling-config.xml
new file mode 100644
index 000000000..84451b888
--- /dev/null
+++ b/opensaml-testing/target/classes/xmltooling-config.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMLTooling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:test="http://www.example.org/testObjects" xmlns="http://www.opensaml.org/xmltooling-config">
+    
+    <ObjectProviders>
+        
+        <!-- SimpleXMLObject object used for testing -->
+        <ObjectProvider qualifiedName="test:SimpleElement">
+            <BuilderClass className="org.opensaml.core.xml.mock.SimpleXMLObjectBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- SimpleXMLObject object used for testing -->
+        <ObjectProvider qualifiedName="test:Response">
+            <BuilderClass className="org.opensaml.core.xml.mock.SimpleXMLObjectBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- SimpleXMLObject object used for testing -->
+        <ObjectProvider qualifiedName="test:Statement">
+            <BuilderClass className="org.opensaml.core.xml.mock.SimpleXMLObjectBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.mock.SimpleXMLObjectUnmarshaller"/>
+        </ObjectProvider>
+        
+        <!-- Default object provider impl for testing -->
+        <ObjectProvider qualifiedName="DEFAULT">
+            <BuilderClass className="org.opensaml.core.xml.schema.impl.XSAnyBuilder"/>
+            <MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
+            <UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
+        </ObjectProvider>
+        
+    </ObjectProviders>
+
+</XMLTooling>
diff --git a/opensaml-testing/target/maven-archiver/pom.properties b/opensaml-testing/target/maven-archiver/pom.properties
new file mode 100644
index 000000000..b6ceb8fa6
--- /dev/null
+++ b/opensaml-testing/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=opensaml-testing
+groupId=org.opensaml
+version=5.1.0-SNAPSHOT
diff --git a/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 000000000..fbddfcf66
--- /dev/null
+++ b/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,18 @@
+org/opensaml/core/testing/InitializerBaseTestCase.class
+org/opensaml/core/xml/mock/SimpleXMLObjectMarshaller.class
+org/opensaml/storage/testing/StorageServiceTest.class
+org/opensaml/profile/testing/ActionTestingSupport.class
+org/opensaml/core/xml/mock/SimpleXMLObject.class
+org/opensaml/core/xml/mock/SimpleXMLObjectUnmarshaller.class
+org/opensaml/core/testing/XMLObjectProviderBaseTestCase.class
+org/opensaml/core/testing/OpenSAMLInitBaseTestCase.class
+org/opensaml/saml/saml1/testing/SAML1ActionTestingSupport.class
+org/opensaml/core/xml/mock/SimpleXMLObjectBuilder.class
+org/opensaml/security/testing/MockTrustEngine.class
+org/opensaml/core/testing/TestXMLObjectProviderInitializer.class
+org/opensaml/security/testing/SecurityProviderTestSupport.class
+org/opensaml/core/testing/XMLObjectBaseTestCase.class
+org/opensaml/core/testing/XMLObjectProviderInitializerBaseTestCase.class
+org/opensaml/saml/saml2/testing/SAML2ActionTestingSupport.class
+org/opensaml/storage/testing/StorageServiceTest$AnnotatedObject.class
+org/opensaml/profile/testing/RequestContextBuilder.class
diff --git a/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 000000000..e125c9977
--- /dev/null
+++ b/opensaml-testing/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,17 @@
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectBaseTestCase.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/xml/mock/SimpleXMLObjectBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/security/testing/MockTrustEngine.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectProviderBaseTestCase.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/InitializerBaseTestCase.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/xml/mock/SimpleXMLObjectUnmarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/OpenSAMLInitBaseTestCase.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/XMLObjectProviderInitializerBaseTestCase.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/storage/testing/StorageServiceTest.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/saml/saml2/testing/SAML2ActionTestingSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/xml/mock/SimpleXMLObject.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/saml/saml1/testing/SAML1ActionTestingSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/profile/testing/RequestContextBuilder.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/profile/testing/ActionTestingSupport.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/testing/TestXMLObjectProviderInitializer.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/core/xml/mock/SimpleXMLObjectMarshaller.java
+/Users/putmanb/Dev/Git/Shib/java-opensaml/opensaml-testing/src/main/java/org/opensaml/security/testing/SecurityProviderTestSupport.java
diff --git a/opensaml-testing/target/opensaml-testing-5.1.0-SNAPSHOT.jar b/opensaml-testing/target/opensaml-testing-5.1.0-SNAPSHOT.jar
new file mode 100644
index 000000000..9489af2ba
Binary files /dev/null and b/opensaml-testing/target/opensaml-testing-5.1.0-SNAPSHOT.jar differ

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


More information about the commits mailing list