<?xml version = '1.0' encoding = 'UTF-8'?>
<!--

    Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<x:root xmlns:x="listOfObjectsNamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="x:listofObjects">
   <empList id="10">
          <firstName>Bob</firstName>
          <lastName>Smith</lastName>
          <responsibilities>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Fix Bugs</responsibility>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write JAXB2.0 Prototype</responsibility>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write Design Spec</responsibility>
         </responsibilities>
   </empList>
   <empList id="100">
          <firstName>Bob2</firstName>
          <lastName>Smith2</lastName>
          <responsibilities>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Fix Bugs</responsibility>
         </responsibilities>
   </empList>
   <integerList>10</integerList>
   <integerList>20</integerList>
   <integerList>30</integerList>
   <integerList>40</integerList>
   <empArray id="10">
          <firstName>Bob</firstName>
          <lastName>Smith</lastName>
          <responsibilities>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Fix Bugs</responsibility>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write JAXB2.0 Prototype</responsibility>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write Design Spec</responsibility>
         </responsibilities>
   </empArray>
   <empArray id="100">
          <firstName>Bob2</firstName>
          <lastName>Smith2</lastName>
          <responsibilities>
             <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Fix Bugs</responsibility>
         </responsibilities>
   </empArray>
   <integerArray>10</integerArray>
   <integerArray>20</integerArray>
   <integerArray>30</integerArray>
   <integerArray>40</integerArray>
   <intArray>1</intArray>
   <intArray>2</intArray>
   <booleanArray>true</booleanArray>
   <booleanArray>true</booleanArray>
   <booleanArray>false</booleanArray>
   <booleanArray>false</booleanArray>
   <stringIntegerHashMap>
      <entry>
         <key>string1</key>
         <value>10</value>
      </entry>
      <entry>
         <key>string2</key>
         <value>20</value>
      </entry>
      <entry>
         <key>string3</key>
        <value>30</value>
      </entry>
   </stringIntegerHashMap>
   <integerLinkedList>5</integerLinkedList>
   <integerLinkedList>15</integerLinkedList>
   <integerLinkedList>25</integerLinkedList>
   <stringEmployeeHashtable>
      <entry>
         <key>string1</key>
         <value id="10">
            <firstName>Bob</firstName>
            <lastName>Smith</lastName>
            <responsibilities>
               <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Fix Bugs</responsibility>
               <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write JAXB2.0 Prototype</responsibility>
               <responsibility xmlns:xsd='http://www.w3.org/2001/XMLSchema' xsi:type="xsd:string">Write Design Spec</responsibility>
            </responsibilities>
         </value>
      </entry>
   </stringEmployeeHashtable>
   <bigDecimalStack>1</bigDecimalStack>
   <bigDecimalStack>5</bigDecimalStack>
   <bigDecimalStack>10</bigDecimalStack>
   <stringMyList>aaa</stringMyList>
   <stringMyList>bbb</stringMyList>
   <stringMyList>ccc</stringMyList>
   <stringIntegerConcurrentMap>
      <entry>
         <key>string1</key>
         <value>10</value>
      </entry>
      <entry>
         <key>string2</key>
         <value>20</value>
      </entry>
      <entry>
         <key>string3</key>
        <value>30</value>
      </entry>
   </stringIntegerConcurrentMap>
   <integerSet>20</integerSet>
   <integerSet>40</integerSet>
   <integerSet>60</integerSet>
   <stringQueue>ddd</stringQueue>
   <stringQueue>eee</stringQueue>
</x:root>
