<?xml version="1.0" encoding="UTF-8"?>
<supplementalDataModels>
  <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
  
  http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed  under the  License is distributed on an "AS IS" BASIS,
  WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
  implied.
  
  See the License for the specific language governing permissions and
  limitations under the License.
  -->
  <supplement>
    <project>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <name>Apache Commons IO</name>
      <url>http://jakarta.apache.org/commons/io/</url>
      <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
      </organization>
      <licenses>
        <license>
          <name>Apache License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
          <distribution>repo</distribution>
        </license>
      </licenses>
    </project>
  </supplement>
  <supplement>
    <project>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <name>JUnit</name>
      <url>http://www.junit.org/</url>
      <organization>
          <name>Kent Beck, Erich Gamma, and David Saff</name>
      </organization>
      <licenses>
        <license>
          <name>Common Public License Version 1.0</name>
          <url>http://www.opensource.org/licenses/cpl.php</url>
        </license>
      </licenses>
    </project>
  </supplement>
</supplementalDataModels>