From dfe21aaf070a481064e42d96e79e9eee528d6257 Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Fri, 5 Oct 2018 13:06:16 -0700
Subject: [PATCH] v. 2.29.25  Derived types, converted unit tests to Py 3

---
 README.rst                               |  13 +
 generateDS.html                          | 343 +++++++++++++++--------
 generateDS.py                            |  30 +-
 generateDS.txt                           | 113 +++++++-
 generateds_gui_notes.html                |   6 +-
 generateds_gui_notes.txt                 |   2 +-
 gui/generateds_gui.py                    |   2 +-
 librarytemplate_howto.html               |   6 +-
 librarytemplate_howto.txt                |   2 +-
 process_includes.py                      |   2 +-
 setup.py                                 |   2 +-
 tests/OnePer/oneperType00_2One.py        |   8 +-
 tests/OnePer/oneperType01_2One.py        |  10 +-
 tests/OnePer/oneperType02_2One.py        |  10 +-
 tests/OnePer/oneperType03_2One.py        |  10 +-
 tests/abstract_type1_sub.py              |   2 +-
 tests/abstract_type1_sup.py              |   6 +-
 tests/annotations1_sub.py                |   2 +-
 tests/annotations1_sup.py                |  18 +-
 tests/anonymous_type1_sub.py             |   2 +-
 tests/anonymous_type1_sup.py             |  16 +-
 tests/anysimpletype1_sub.py              |   2 +-
 tests/anysimpletype1_sup.py              |   6 +-
 tests/anywildcard1_sub.py                |   2 +-
 tests/anywildcard1_sup.py                |  28 +-
 tests/attr_groups1_sub.py                |   2 +-
 tests/attr_groups1_sup.py                |   6 +-
 tests/catalogtest1_sub.py                |   2 +-
 tests/catalogtest1_sup.py                |   4 +-
 tests/cdata1_sub.py                      |   2 +-
 tests/cdata1_sup.py                      |   8 +-
 tests/cleanupname1_sub.py                |   2 +-
 tests/cleanupname1_sup.py                |  24 +-
 tests/copy_all                           |   2 +
 tests/defaults_cases1_sub.py             |   2 +-
 tests/defaults_cases1_sup.py             |  44 +--
 tests/defaults_cases_always1_sub.py      |   2 +-
 tests/defaults_cases_always1_sup.py      |  24 +-
 tests/defaults_cases_always2_sub.py      |   2 +-
 tests/defaults_cases_always2_sup.py      |  24 +-
 tests/defaults_coverage1_sub.py          |   2 +-
 tests/defaults_coverage1_sup.py          |  76 ++---
 tests/disable_xml_super1_sub.py          |   2 +-
 tests/disable_xml_super1_sup.py          |   6 +-
 tests/extensions1_sub.py                 |   2 +-
 tests/extensions1_sup.py                 |  12 +-
 tests/ipo1_sub.py                        |   2 +-
 tests/ipo1_sup.py                        |  38 +--
 tests/ipo2_sub.py                        |   2 +-
 tests/ipo2_sup.py                        |  38 +--
 tests/mapcleanname1_sub.py               |   2 +-
 tests/mapcleanname1_sup.py               |  48 ++--
 tests/mixedcontent1_sub.py               |   2 +-
 tests/mixedcontent1_sup.py               |  24 +-
 tests/mixedcontent2_sub.py               |   2 +-
 tests/mixedcontent2_sup.py               |  24 +-
 tests/nested_def1_sub.py                 |   2 +-
 tests/nested_def1_sup.py                 |  12 +-
 tests/no_namespace_defs1_sub.py          |   2 +-
 tests/no_namespace_defs1_sup.py          |  16 +-
 tests/out1_sub.py                        |   2 +-
 tests/out1_sup.py                        |  92 +++---
 tests/people_procincl1_sub.py            |   2 +-
 tests/people_procincl1_sup.py            | 102 +++----
 tests/prefix_classname1_sub.py           |   2 +-
 tests/prefix_classname1_sup.py           |  92 +++---
 tests/recursive_simpletype1_sub.py       |   2 +-
 tests/recursive_simpletype1_sup.py       |  10 +-
 tests/reference_simpletype1_sub.py       |   2 +-
 tests/reference_simpletype1_sup.py       |   8 +-
 tests/rem_dup_elems1_sub.py              |   2 +-
 tests/rem_dup_elems1_sup.py              |  10 +-
 tests/simplecontent_restriction1_sub.py  |   2 +-
 tests/simplecontent_restriction1_sup.py  |  18 +-
 tests/simpletype_memberspecs1_sub.py     |   2 +-
 tests/simpletype_memberspecs1_sup.py     |   4 +-
 tests/simpletypes_other1_sub.py          |   2 +-
 tests/simpletypes_other1_sup.py          |  48 ++--
 tests/test.py                            |  63 ++++-
 tests/to_etree1_sub.py                   |   2 +-
 tests/to_etree1_sup.py                   | 176 ++++++------
 tests/validate_simpletypes1_sub.py       |   2 +-
 tests/validate_simpletypes1_sup.py       |  74 ++---
 tests/validate_simpletypes1_warnings.txt |  22 +-
 tests/validate_simpletypes2_sub.py       |   2 +-
 tests/validate_simpletypes2_sup.py       |  74 ++---
 tutorial/generateds_tutorial.html        |   6 +-
 tutorial/generateds_tutorial.txt         |   2 +-
 tutorial/generateds_tutorial.zip         | Bin 48771 -> 48770 bytes
 89 files changed, 1098 insertions(+), 834 deletions(-)

diff --git a/README.rst b/README.rst
index 011aaa9..a61ad3e 100644
--- a/README.rst
+++ b/README.rst
@@ -141,6 +141,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.29.25 (10/05/2018)
+
+- Added a section to the documentation (generateDS.txt) for types
+  derived by extension, i.e. types that use the xsi:type attribute
+  in the XML instance document.  Thanks to Justin McManus for
+  motivating me to learn about this and for providing guidance and
+  pointers along the way.
+- Added a unit test for types derived by extension.
+- Converted unit tests so that we can use Python 3 not Python 2.
+- Changes in ``generateDS.py`` so that it uses the ``six``
+  compatibility library to handle the ``urllib`` name changes
+  between Python 2 and 3.
+
 Version 2.29.24 (08/27/2018)
 
 - Changed name of parameter in the export method from "namespace_"
diff --git a/generateDS.html b/generateDS.html
index 5d20287..c1ff2ca 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.24</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.25</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 27, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">October 05, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -303,94 +303,95 @@ to process the contents of an XML document.</td>
 </li>
 <li><a class="reference internal" href="#include-file-processing" id="id41">8.11&nbsp;&nbsp;&nbsp;Include file processing</a></li>
 <li><a class="reference internal" href="#abstract-types" id="id42">8.12&nbsp;&nbsp;&nbsp;Abstract types</a></li>
+<li><a class="reference internal" href="#types-derived-by-extension" id="id43">8.13&nbsp;&nbsp;&nbsp;Types derived by extension</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#the-xml-schema-input-to-generateds" id="id43">9&nbsp;&nbsp;&nbsp;The XML schema input to generateDS</a><ul class="auto-toc">
-<li><a class="reference internal" href="#additional-constructions" id="id44">9.1&nbsp;&nbsp;&nbsp;Additional constructions</a><ul class="auto-toc">
-<li><a class="reference internal" href="#complextype-at-top-level" id="id45">9.1.1&nbsp;&nbsp;&nbsp;&lt;complexType&gt; at top-level</a></li>
-<li><a class="reference internal" href="#use-of-ref-instead-of-name-and-type-attributes" id="id46">9.1.2&nbsp;&nbsp;&nbsp;Use of &quot;ref&quot; instead of &quot;name&quot; and &quot;type&quot; attributes</a></li>
-<li><a class="reference internal" href="#extension-types" id="id47">9.1.3&nbsp;&nbsp;&nbsp;Extension types</a></li>
-<li><a class="reference internal" href="#elements-containing-mixed-content" id="id48">9.1.4&nbsp;&nbsp;&nbsp;Elements containing mixed content</a></li>
+<li><a class="reference internal" href="#the-xml-schema-input-to-generateds" id="id44">9&nbsp;&nbsp;&nbsp;The XML schema input to generateDS</a><ul class="auto-toc">
+<li><a class="reference internal" href="#additional-constructions" id="id45">9.1&nbsp;&nbsp;&nbsp;Additional constructions</a><ul class="auto-toc">
+<li><a class="reference internal" href="#complextype-at-top-level" id="id46">9.1.1&nbsp;&nbsp;&nbsp;&lt;complexType&gt; at top-level</a></li>
+<li><a class="reference internal" href="#use-of-ref-instead-of-name-and-type-attributes" id="id47">9.1.2&nbsp;&nbsp;&nbsp;Use of &quot;ref&quot; instead of &quot;name&quot; and &quot;type&quot; attributes</a></li>
+<li><a class="reference internal" href="#extension-types" id="id48">9.1.3&nbsp;&nbsp;&nbsp;Extension types</a></li>
+<li><a class="reference internal" href="#elements-containing-mixed-content" id="id49">9.1.4&nbsp;&nbsp;&nbsp;Elements containing mixed content</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li><a class="reference internal" href="#id2" id="id49">10&nbsp;&nbsp;&nbsp;XMLBehaviors</a><ul class="auto-toc">
-<li><a class="reference internal" href="#the-xmlbehaviors-input-file" id="id50">10.1&nbsp;&nbsp;&nbsp;The XMLBehaviors input file</a></li>
-<li><a class="reference internal" href="#implementing-other-sources-for-implementation-bodies" id="id51">10.2&nbsp;&nbsp;&nbsp;Implementing other sources for implementation bodies</a></li>
+<li><a class="reference internal" href="#id2" id="id50">10&nbsp;&nbsp;&nbsp;XMLBehaviors</a><ul class="auto-toc">
+<li><a class="reference internal" href="#the-xmlbehaviors-input-file" id="id51">10.1&nbsp;&nbsp;&nbsp;The XMLBehaviors input file</a></li>
+<li><a class="reference internal" href="#implementing-other-sources-for-implementation-bodies" id="id52">10.2&nbsp;&nbsp;&nbsp;Implementing other sources for implementation bodies</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#additional-features" id="id52">11&nbsp;&nbsp;&nbsp;Additional features</a><ul class="auto-toc">
-<li><a class="reference internal" href="#xsd-list-element-support" id="id53">11.1&nbsp;&nbsp;&nbsp;xsd:list element support</a></li>
-<li><a class="reference internal" href="#xsd-enumeration-support" id="id54">11.2&nbsp;&nbsp;&nbsp;xsd:enumeration support</a></li>
-<li><a class="reference internal" href="#xsd-union-support" id="id55">11.3&nbsp;&nbsp;&nbsp;xsd:union support</a></li>
-<li><a class="reference internal" href="#extended-xsd-choice-support" id="id56">11.4&nbsp;&nbsp;&nbsp;Extended xsd:choice support</a></li>
-<li><a class="reference internal" href="#arity-minoccurs-maxoccurs-etc" id="id57">11.5&nbsp;&nbsp;&nbsp;Arity, minOccurs, maxOccurs, etc</a></li>
-<li><a class="reference internal" href="#more-thorough-content-type-and-base-type-resolution" id="id58">11.6&nbsp;&nbsp;&nbsp;More thorough content type and base type resolution</a></li>
-<li><a class="reference internal" href="#making-top-level-simpletypes-available-from-xschemahandler" id="id59">11.7&nbsp;&nbsp;&nbsp;Making top level simpleTypes available from XschemaHandler</a></li>
-<li><a class="reference internal" href="#namespaces-inserting-namespace-definition-in-exported-documents" id="id60">11.8&nbsp;&nbsp;&nbsp;Namespaces -- inserting namespace definition in exported documents</a></li>
-<li><a class="reference internal" href="#support-for-xs-any" id="id61">11.9&nbsp;&nbsp;&nbsp;Support for xs:any</a></li>
-<li><a class="reference internal" href="#generating-lxml-element-tree" id="id62">11.10&nbsp;&nbsp;&nbsp;Generating Lxml Element tree</a><ul class="auto-toc">
-<li><a class="reference internal" href="#mapping-generateds-objects-to-lxml-elements-and-back" id="id63">11.10.1&nbsp;&nbsp;&nbsp;Mapping generateDS objects to Lxml Elements and back</a></li>
+<li><a class="reference internal" href="#additional-features" id="id53">11&nbsp;&nbsp;&nbsp;Additional features</a><ul class="auto-toc">
+<li><a class="reference internal" href="#xsd-list-element-support" id="id54">11.1&nbsp;&nbsp;&nbsp;xsd:list element support</a></li>
+<li><a class="reference internal" href="#xsd-enumeration-support" id="id55">11.2&nbsp;&nbsp;&nbsp;xsd:enumeration support</a></li>
+<li><a class="reference internal" href="#xsd-union-support" id="id56">11.3&nbsp;&nbsp;&nbsp;xsd:union support</a></li>
+<li><a class="reference internal" href="#extended-xsd-choice-support" id="id57">11.4&nbsp;&nbsp;&nbsp;Extended xsd:choice support</a></li>
+<li><a class="reference internal" href="#arity-minoccurs-maxoccurs-etc" id="id58">11.5&nbsp;&nbsp;&nbsp;Arity, minOccurs, maxOccurs, etc</a></li>
+<li><a class="reference internal" href="#more-thorough-content-type-and-base-type-resolution" id="id59">11.6&nbsp;&nbsp;&nbsp;More thorough content type and base type resolution</a></li>
+<li><a class="reference internal" href="#making-top-level-simpletypes-available-from-xschemahandler" id="id60">11.7&nbsp;&nbsp;&nbsp;Making top level simpleTypes available from XschemaHandler</a></li>
+<li><a class="reference internal" href="#namespaces-inserting-namespace-definition-in-exported-documents" id="id61">11.8&nbsp;&nbsp;&nbsp;Namespaces -- inserting namespace definition in exported documents</a></li>
+<li><a class="reference internal" href="#support-for-xs-any" id="id62">11.9&nbsp;&nbsp;&nbsp;Support for xs:any</a></li>
+<li><a class="reference internal" href="#generating-lxml-element-tree" id="id63">11.10&nbsp;&nbsp;&nbsp;Generating Lxml Element tree</a><ul class="auto-toc">
+<li><a class="reference internal" href="#mapping-generateds-objects-to-lxml-elements-and-back" id="id64">11.10.1&nbsp;&nbsp;&nbsp;Mapping generateDS objects to Lxml Elements and back</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#specifying-names-for-anonymous-nested-type-definitions" id="id64">11.11&nbsp;&nbsp;&nbsp;Specifying names for anonymous nested type definitions</a></li>
+<li><a class="reference internal" href="#specifying-names-for-anonymous-nested-type-definitions" id="id65">11.11&nbsp;&nbsp;&nbsp;Specifying names for anonymous nested type definitions</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#how-to-use-the-generated-source-code" id="id65">12&nbsp;&nbsp;&nbsp;How to use the generated source code</a><ul class="auto-toc">
-<li><a class="reference internal" href="#the-parsing-functions" id="id66">12.1&nbsp;&nbsp;&nbsp;The parsing functions</a></li>
-<li><a class="reference internal" href="#recognizing-the-top-level-element" id="id67">12.2&nbsp;&nbsp;&nbsp;Recognizing the top level element</a></li>
-<li><a class="reference internal" href="#the-export-methods" id="id68">12.3&nbsp;&nbsp;&nbsp;The export methods</a><ul class="auto-toc">
-<li><a class="reference internal" href="#method-export" id="id69">12.3.1&nbsp;&nbsp;&nbsp;Method export</a></li>
-<li><a class="reference internal" href="#method-exportliteral" id="id70">12.3.2&nbsp;&nbsp;&nbsp;Method <tt class="docutils literal">exportLiteral</tt></a><ul class="auto-toc">
-<li><a class="reference internal" href="#what-it-does" id="id71">12.3.2.1&nbsp;&nbsp;&nbsp;What It Does</a></li>
-<li><a class="reference internal" href="#why-you-might-care" id="id72">12.3.2.2&nbsp;&nbsp;&nbsp;Why You Might Care</a></li>
-<li><a class="reference internal" href="#how-to-use-it" id="id73">12.3.2.3&nbsp;&nbsp;&nbsp;How to use it</a></li>
+<li><a class="reference internal" href="#how-to-use-the-generated-source-code" id="id66">12&nbsp;&nbsp;&nbsp;How to use the generated source code</a><ul class="auto-toc">
+<li><a class="reference internal" href="#the-parsing-functions" id="id67">12.1&nbsp;&nbsp;&nbsp;The parsing functions</a></li>
+<li><a class="reference internal" href="#recognizing-the-top-level-element" id="id68">12.2&nbsp;&nbsp;&nbsp;Recognizing the top level element</a></li>
+<li><a class="reference internal" href="#the-export-methods" id="id69">12.3&nbsp;&nbsp;&nbsp;The export methods</a><ul class="auto-toc">
+<li><a class="reference internal" href="#method-export" id="id70">12.3.1&nbsp;&nbsp;&nbsp;Method export</a></li>
+<li><a class="reference internal" href="#method-exportliteral" id="id71">12.3.2&nbsp;&nbsp;&nbsp;Method <tt class="docutils literal">exportLiteral</tt></a><ul class="auto-toc">
+<li><a class="reference internal" href="#what-it-does" id="id72">12.3.2.1&nbsp;&nbsp;&nbsp;What It Does</a></li>
+<li><a class="reference internal" href="#why-you-might-care" id="id73">12.3.2.2&nbsp;&nbsp;&nbsp;Why You Might Care</a></li>
+<li><a class="reference internal" href="#how-to-use-it" id="id74">12.3.2.3&nbsp;&nbsp;&nbsp;How to use it</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#exporting-compact-xml-documents" id="id74">12.3.3&nbsp;&nbsp;&nbsp;Exporting compact XML documents</a></li>
+<li><a class="reference internal" href="#exporting-compact-xml-documents" id="id75">12.3.3&nbsp;&nbsp;&nbsp;Exporting compact XML documents</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#building-instances" id="id75">12.4&nbsp;&nbsp;&nbsp;Building instances</a></li>
-<li><a class="reference internal" href="#using-the-subclass-module" id="id76">12.5&nbsp;&nbsp;&nbsp;Using the subclass module</a></li>
-<li><a class="reference internal" href="#elements-with-attributes-but-no-nested-children" id="id77">12.6&nbsp;&nbsp;&nbsp;Elements with attributes but no nested children</a></li>
-<li><a class="reference internal" href="#id4" id="id78">12.7&nbsp;&nbsp;&nbsp;Mixed content</a></li>
-<li><a class="reference internal" href="#id6" id="id79">12.8&nbsp;&nbsp;&nbsp;anyAttribute</a></li>
-<li><a class="reference internal" href="#user-methods" id="id80">12.9&nbsp;&nbsp;&nbsp;User Methods</a></li>
-<li><a class="reference internal" href="#overridable-methods-generatedssuper-py" id="id81">12.10&nbsp;&nbsp;&nbsp;Overridable methods -- generatedssuper.py</a></li>
-<li><a class="reference internal" href="#the-element-name-to-class-name-dictionary" id="id82">12.11&nbsp;&nbsp;&nbsp;The element name to class name dictionary</a></li>
-<li><a class="reference internal" href="#adding-custom-exported-attributes-and-namespace-prefix-definitions" id="id83">12.12&nbsp;&nbsp;&nbsp;Adding custom exported attributes and namespace prefix definitions</a></li>
+<li><a class="reference internal" href="#building-instances" id="id76">12.4&nbsp;&nbsp;&nbsp;Building instances</a></li>
+<li><a class="reference internal" href="#using-the-subclass-module" id="id77">12.5&nbsp;&nbsp;&nbsp;Using the subclass module</a></li>
+<li><a class="reference internal" href="#elements-with-attributes-but-no-nested-children" id="id78">12.6&nbsp;&nbsp;&nbsp;Elements with attributes but no nested children</a></li>
+<li><a class="reference internal" href="#id4" id="id79">12.7&nbsp;&nbsp;&nbsp;Mixed content</a></li>
+<li><a class="reference internal" href="#id6" id="id80">12.8&nbsp;&nbsp;&nbsp;anyAttribute</a></li>
+<li><a class="reference internal" href="#user-methods" id="id81">12.9&nbsp;&nbsp;&nbsp;User Methods</a></li>
+<li><a class="reference internal" href="#overridable-methods-generatedssuper-py" id="id82">12.10&nbsp;&nbsp;&nbsp;Overridable methods -- generatedssuper.py</a></li>
+<li><a class="reference internal" href="#the-element-name-to-class-name-dictionary" id="id83">12.11&nbsp;&nbsp;&nbsp;The element name to class name dictionary</a></li>
+<li><a class="reference internal" href="#adding-custom-exported-attributes-and-namespace-prefix-definitions" id="id84">12.12&nbsp;&nbsp;&nbsp;Adding custom exported attributes and namespace prefix definitions</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#one-per-generating-separate-files-from-imported-included-schemas" id="id84">13&nbsp;&nbsp;&nbsp;&quot;One Per&quot; -- generating separate files from imported/included schemas</a><ul class="auto-toc">
-<li><a class="reference internal" href="#approach-1-command-line-option-one-file-per-xsd" id="id85">13.1&nbsp;&nbsp;&nbsp;Approach 1 -- Command line option --one-file-per-xsd</a></li>
-<li><a class="reference internal" href="#approach-2-extraction-and-generation-utilities" id="id86">13.2&nbsp;&nbsp;&nbsp;Approach 2 -- Extraction and generation utilities</a></li>
+<li><a class="reference internal" href="#one-per-generating-separate-files-from-imported-included-schemas" id="id85">13&nbsp;&nbsp;&nbsp;&quot;One Per&quot; -- generating separate files from imported/included schemas</a><ul class="auto-toc">
+<li><a class="reference internal" href="#approach-1-command-line-option-one-file-per-xsd" id="id86">13.1&nbsp;&nbsp;&nbsp;Approach 1 -- Command line option --one-file-per-xsd</a></li>
+<li><a class="reference internal" href="#approach-2-extraction-and-generation-utilities" id="id87">13.2&nbsp;&nbsp;&nbsp;Approach 2 -- Extraction and generation utilities</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#how-to-modify-the-generated-code" id="id87">14&nbsp;&nbsp;&nbsp;How to modify the generated code</a><ul class="auto-toc">
-<li><a class="reference internal" href="#adding-features-to-class-definitions" id="id88">14.1&nbsp;&nbsp;&nbsp;Adding features to class definitions</a></li>
+<li><a class="reference internal" href="#how-to-modify-the-generated-code" id="id88">14&nbsp;&nbsp;&nbsp;How to modify the generated code</a><ul class="auto-toc">
+<li><a class="reference internal" href="#adding-features-to-class-definitions" id="id89">14.1&nbsp;&nbsp;&nbsp;Adding features to class definitions</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#examples-and-demonstrations" id="id89">15&nbsp;&nbsp;&nbsp;Examples and demonstrations</a><ul class="auto-toc">
-<li><a class="reference internal" href="#django-generating-models-and-forms" id="id90">15.1&nbsp;&nbsp;&nbsp;Django -- Generating Models and Forms</a><ul class="auto-toc">
-<li><a class="reference internal" href="#how-to-generate-django-models-and-forms" id="id91">15.1.1&nbsp;&nbsp;&nbsp;How to generate Django models and forms</a></li>
-<li><a class="reference internal" href="#how-it-works" id="id92">15.1.2&nbsp;&nbsp;&nbsp;How it works</a></li>
+<li><a class="reference internal" href="#examples-and-demonstrations" id="id90">15&nbsp;&nbsp;&nbsp;Examples and demonstrations</a><ul class="auto-toc">
+<li><a class="reference internal" href="#django-generating-models-and-forms" id="id91">15.1&nbsp;&nbsp;&nbsp;Django -- Generating Models and Forms</a><ul class="auto-toc">
+<li><a class="reference internal" href="#how-to-generate-django-models-and-forms" id="id92">15.1.1&nbsp;&nbsp;&nbsp;How to generate Django models and forms</a></li>
+<li><a class="reference internal" href="#how-it-works" id="id93">15.1.2&nbsp;&nbsp;&nbsp;How it works</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li><a class="reference internal" href="#sample-code-and-extensions" id="id93">16&nbsp;&nbsp;&nbsp;Sample code and extensions</a><ul class="auto-toc">
-<li><a class="reference internal" href="#capturing-xs-date-elements-as-dates" id="id94">16.1&nbsp;&nbsp;&nbsp;Capturing xs:date elements as dates</a></li>
+<li><a class="reference internal" href="#sample-code-and-extensions" id="id94">16&nbsp;&nbsp;&nbsp;Sample code and extensions</a><ul class="auto-toc">
+<li><a class="reference internal" href="#capturing-xs-date-elements-as-dates" id="id95">16.1&nbsp;&nbsp;&nbsp;Capturing xs:date elements as dates</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#limitations-of-generateds" id="id95">17&nbsp;&nbsp;&nbsp;Limitations of generateDS</a><ul class="auto-toc">
-<li><a class="reference internal" href="#xml-schema-limitations" id="id96">17.1&nbsp;&nbsp;&nbsp;XML Schema limitations</a></li>
+<li><a class="reference internal" href="#limitations-of-generateds" id="id96">17&nbsp;&nbsp;&nbsp;Limitations of generateDS</a><ul class="auto-toc">
+<li><a class="reference internal" href="#xml-schema-limitations" id="id97">17.1&nbsp;&nbsp;&nbsp;XML Schema limitations</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#includes-the-xml-schema-xs-include-and-xs-import-elements" id="id97">18&nbsp;&nbsp;&nbsp;Includes -- The XML schema xs:include and xs:import elements</a></li>
-<li><a class="reference internal" href="#processing-relaxng-schemas" id="id98">19&nbsp;&nbsp;&nbsp;Processing RelaxNG schemas</a></li>
-<li><a class="reference internal" href="#acknowledgments" id="id99">20&nbsp;&nbsp;&nbsp;Acknowledgments</a></li>
-<li><a class="reference internal" href="#see-also" id="id100">21&nbsp;&nbsp;&nbsp;See also</a></li>
+<li><a class="reference internal" href="#includes-the-xml-schema-xs-include-and-xs-import-elements" id="id98">18&nbsp;&nbsp;&nbsp;Includes -- The XML schema xs:include and xs:import elements</a></li>
+<li><a class="reference internal" href="#processing-relaxng-schemas" id="id99">19&nbsp;&nbsp;&nbsp;Processing RelaxNG schemas</a></li>
+<li><a class="reference internal" href="#acknowledgments" id="id100">20&nbsp;&nbsp;&nbsp;Acknowledgments</a></li>
+<li><a class="reference internal" href="#see-also" id="id101">21&nbsp;&nbsp;&nbsp;See also</a></li>
 </ul>
 </div>
 <div class="section" id="introduction">
@@ -1659,9 +1660,113 @@ this, see:
 <a class="reference external" href="http://www.w3.org/TR/xmlschema-0/#abstract">XML Schema Part 0: Primer Second Edition: Abstract Elements and Types --
 http://www.w3.org/TR/xmlschema-0/#abstract</a>.</p>
 </div>
+<div class="section" id="types-derived-by-extension">
+<h2><a class="toc-backref" href="#id43">8.13&nbsp;&nbsp;&nbsp;Types derived by extension</a></h2>
+<p>This section describes some of the support for types derived by
+extension and also how to use the data bindings generated for those
+types in Python.</p>
+<p>For example, suppose you have an XML schema that looks like this
+(<tt class="docutils literal">example.xsd</tt>):</p>
+<pre class="literal-block">
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; version=&quot;1.0&quot;&gt;
+
+&lt;xs:element name=&quot;animalCollection&quot;&gt;
+  &lt;xs:complexType&gt;
+    &lt;xs:sequence&gt;
+      &lt;xs:element name=&quot;animal&quot; type=&quot;animal&quot; maxOccurs=&quot;unbounded&quot;/&gt;
+    &lt;/xs:sequence&gt;
+  &lt;/xs:complexType&gt;
+&lt;/xs:element&gt;
+
+&lt;xs:complexType name=&quot;animal&quot; abstract=&quot;true&quot;&gt;&lt;/xs:complexType&gt;
+
+&lt;xs:complexType name=&quot;dog&quot;&gt;
+  &lt;xs:complexContent&gt;
+    &lt;xs:extension base=&quot;animal&quot;&gt;
+      &lt;xs:sequence&gt;
+        &lt;xs:element name=&quot;name&quot; type=&quot;xs:string&quot;/&gt;
+      &lt;/xs:sequence&gt;
+    &lt;/xs:extension&gt;
+  &lt;/xs:complexContent&gt;
+&lt;/xs:complexType&gt;
+&lt;/xs:schema&gt;
+</pre>
+<p>An XML instance document for this document type might be the
+following:</p>
+<pre class="literal-block">
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;animalCollection xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
+    &lt;animal xsi:type=&quot;dog&quot;&gt;
+        &lt;name&gt;fido&lt;/name&gt;
+    &lt;/animal&gt;
+&lt;/animalCollection&gt;
+</pre>
+<p>Question: How would you, in Python, using bindings generated by
+<tt class="docutils literal">generateDS.py</tt>, create an instance of type <tt class="docutils literal">dog</tt> that is
+derived from type <tt class="docutils literal">animal</tt> and when exported to XML, appears as an
+animal with attribute <tt class="docutils literal"><span class="pre">xsi:type=&quot;dog&quot;</span></tt>?</p>
+<p>First, we need to generate our bindings:</p>
+<pre class="literal-block">
+$ generateDS.py -o example01.py example.xsd
+</pre>
+<p>And, now, here is Python some code that creates those instances and
+exports them:</p>
+<pre class="literal-block">
+# sample01.py
+
+import sys
+import example01
+
+def test():
+    animal_collection = example01.animalCollection()
+    animal = example01.dog(name='milicent')
+    #
+    # must set original_tagname_ and extensiontype_ for
+    # type derived by extension.  See:
+    # https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt
+    animal.original_tagname_ = 'animal'
+    animal.extensiontype_ = 'dog'
+    animal_collection.add_animal(animal)
+    animal_collection.export(sys.stdout, 0)
+    return animal_collection, animal
+
+test()
+</pre>
+<p>Notes:</p>
+<ul class="simple">
+<li>The above code creates an instance of class <tt class="docutils literal">animalCollection</tt>
+and an instance of class <tt class="docutils literal">dog</tt>.</li>
+<li>Because we want the <tt class="docutils literal">dog</tt> to be represented in XML as a
+&quot;&lt;animal&gt;&quot; with an &quot;xsi:type&quot; attribute, we must set the
+<tt class="docutils literal">original_tagname_</tt> and <tt class="docutils literal">extensiontype_</tt> attributes in the
+instance of class <tt class="docutils literal">dog</tt>.</li>
+<li>Then we add our <tt class="docutils literal">dog</tt> to the <tt class="docutils literal">animalCollection</tt>, and finally,
+we export it.</li>
+<li>We can get some clues about this by reading the code generated for
+classes <tt class="docutils literal">animalCollection</tt>, <tt class="docutils literal">animal</tt>, and <tt class="docutils literal">dog</tt>.</li>
+</ul>
+<p>When we run it, we'll see:</p>
+<pre class="literal-block">
+$ python sample01.py
+&lt;animalCollection&gt;
+    &lt;animal xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;dog&quot;&gt;
+        &lt;name&gt;milicent&lt;/name&gt;
+    &lt;/animal&gt;
+&lt;/animalCollection&gt;
+</pre>
+<p>For more information on types derived by extension, see &quot;XML Schema
+Part 0: Primer Second Edition&quot;, specifically:</p>
+<ul class="simple">
+<li>&quot;Deriving Types by Extension&quot; --
+<a class="reference external" href="https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt">https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt</a></li>
+<li>&quot;Using Derived Types in Instance Documents&quot; --
+<a class="reference external" href="https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#UseDerivInInstDocs">https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#UseDerivInInstDocs</a></li>
+</ul>
+</div>
 </div>
 <div class="section" id="the-xml-schema-input-to-generateds">
-<h1><a class="toc-backref" href="#id43">9&nbsp;&nbsp;&nbsp;The XML schema input to generateDS</a></h1>
+<h1><a class="toc-backref" href="#id44">9&nbsp;&nbsp;&nbsp;The XML schema input to generateDS</a></h1>
 <p><strong>Note:</strong> Quite a bit of work has been done on <tt class="docutils literal">generateDS.py</tt>
 since this section was written.  So, it accepts and processes
 more of features in XML Schema than earlier.  The best advice is to
@@ -1781,11 +1886,11 @@ order to define a member data item that takes an instance or
 list of instances of a Python class.</li>
 </ul>
 <div class="section" id="additional-constructions">
-<h2><a class="toc-backref" href="#id44">9.1&nbsp;&nbsp;&nbsp;Additional constructions</a></h2>
+<h2><a class="toc-backref" href="#id45">9.1&nbsp;&nbsp;&nbsp;Additional constructions</a></h2>
 <p>Here are a few additional constructions that <tt class="docutils literal">generateDS.py</tt>
 understands.</p>
 <div class="section" id="complextype-at-top-level">
-<h3><a class="toc-backref" href="#id45">9.1.1&nbsp;&nbsp;&nbsp;&lt;complexType&gt; at top-level</a></h3>
+<h3><a class="toc-backref" href="#id46">9.1.1&nbsp;&nbsp;&nbsp;&lt;complexType&gt; at top-level</a></h3>
 <p>You can use the &lt;complexType&gt; element at top level (instead of
 &lt;element&gt;) to define an element. So, for example, instead of:</p>
 <pre class="literal-block">
@@ -1809,7 +1914,7 @@ understands.</p>
 </pre>
 </div>
 <div class="section" id="use-of-ref-instead-of-name-and-type-attributes">
-<h3><a class="toc-backref" href="#id46">9.1.2&nbsp;&nbsp;&nbsp;Use of &quot;ref&quot; instead of &quot;name&quot; and &quot;type&quot; attributes</a></h3>
+<h3><a class="toc-backref" href="#id47">9.1.2&nbsp;&nbsp;&nbsp;Use of &quot;ref&quot; instead of &quot;name&quot; and &quot;type&quot; attributes</a></h3>
 <p>You can use the &quot;ref&quot; attribute to refer to another element
 definition, instead of using the &quot;name&quot; and &quot;type&quot; attributes. So,
 for example, you can use the following:</p>
@@ -1834,7 +1939,7 @@ for example, you can use the following:</p>
 </pre>
 </div>
 <div class="section" id="extension-types">
-<h3><a class="toc-backref" href="#id47">9.1.3&nbsp;&nbsp;&nbsp;Extension types</a></h3>
+<h3><a class="toc-backref" href="#id48">9.1.3&nbsp;&nbsp;&nbsp;Extension types</a></h3>
 <p><tt class="docutils literal">generateDS.py</tt> generates a subclass for each element that that
 is defined as the extension of a base element.  So, for the
 following:</p>
@@ -1856,7 +1961,7 @@ class BType(AType):
 </pre>
 </div>
 <div class="section" id="elements-containing-mixed-content">
-<h3><a class="toc-backref" href="#id48">9.1.4&nbsp;&nbsp;&nbsp;Elements containing mixed content</a></h3>
+<h3><a class="toc-backref" href="#id49">9.1.4&nbsp;&nbsp;&nbsp;Elements containing mixed content</a></h3>
 <p><tt class="docutils literal">generateDS.py</tt> generates special code to handle elements
 defined as containing mixed content, that is elements defined with
 attribute <tt class="docutils literal"><span class="pre">mixed=&quot;true&quot;</span></tt>.  See section <a class="reference internal" href="#id3">Mixed content</a> for more
@@ -1865,7 +1970,7 @@ details.</p>
 </div>
 </div>
 <div class="section" id="id2">
-<span id="xmlbehaviors"></span><h1><a class="toc-backref" href="#id49">10&nbsp;&nbsp;&nbsp;XMLBehaviors</a></h1>
+<span id="xmlbehaviors"></span><h1><a class="toc-backref" href="#id50">10&nbsp;&nbsp;&nbsp;XMLBehaviors</a></h1>
 <p>With the use of the &quot;-b&quot; command line option, <tt class="docutils literal">generateDS.py</tt> will
 also accept as input an XML document instance that describes
 behaviors to be added to subclasses when the subclass file is
@@ -1877,7 +1982,7 @@ for the most part, designed by gian paolo ciceri
 (<a class="reference external" href="mailto:gp.ciceri&#64;suddenthinks.com">gp.ciceri&#64;suddenthinks.com</a>).  This work is part of our work on
 our application development project for Quixote.</p>
 <div class="section" id="the-xmlbehaviors-input-file">
-<h2><a class="toc-backref" href="#id50">10.1&nbsp;&nbsp;&nbsp;The XMLBehaviors input file</a></h2>
+<h2><a class="toc-backref" href="#id51">10.1&nbsp;&nbsp;&nbsp;The XMLBehaviors input file</a></h2>
 <p>This section describes the XMLBehavior XML document that is used
 as input to <tt class="docutils literal">generateDS.py</tt>.  The XMLBehavior XML document is an
 XML instance document (given as an argument to the &quot;-b&quot; command
@@ -1950,7 +2055,7 @@ of the base-impl-url.</li>
 </ul>
 </div>
 <div class="section" id="implementing-other-sources-for-implementation-bodies">
-<h2><a class="toc-backref" href="#id51">10.2&nbsp;&nbsp;&nbsp;Implementing other sources for implementation bodies</a></h2>
+<h2><a class="toc-backref" href="#id52">10.2&nbsp;&nbsp;&nbsp;Implementing other sources for implementation bodies</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> contains a function <tt class="docutils literal">get_impl_body()</tt> that
 implements the ability to retrieve implementation bodies.  The
 current implementation retrieves implementation bodies from an
@@ -1991,11 +2096,11 @@ def get_impl_body(classBehavior, baseImplUrl, implUrl):
 </div>
 </div>
 <div class="section" id="additional-features">
-<h1><a class="toc-backref" href="#id52">11&nbsp;&nbsp;&nbsp;Additional features</a></h1>
+<h1><a class="toc-backref" href="#id53">11&nbsp;&nbsp;&nbsp;Additional features</a></h1>
 <p>Here are additional features, contributed by users such as Chris
 Allan.  Many thanks.</p>
 <div class="section" id="xsd-list-element-support">
-<h2><a class="toc-backref" href="#id53">11.1&nbsp;&nbsp;&nbsp;xsd:list element support</a></h2>
+<h2><a class="toc-backref" href="#id54">11.1&nbsp;&nbsp;&nbsp;xsd:list element support</a></h2>
 <p>xsd:list elements can be used with a child xsd:simpleType which
 confuses the XschemaHandler stack unrolling.  xsd:list element
 support should allow the following XML Schema definition to be
@@ -2013,18 +2118,18 @@ supported in <tt class="docutils literal">generateDS.py</tt>:</p>
 </pre>
 </div>
 <div class="section" id="xsd-enumeration-support">
-<h2><a class="toc-backref" href="#id54">11.2&nbsp;&nbsp;&nbsp;xsd:enumeration support</a></h2>
+<h2><a class="toc-backref" href="#id55">11.2&nbsp;&nbsp;&nbsp;xsd:enumeration support</a></h2>
 <p>The enumerated values for the parent element are resolved and made
 available through the instance attribute <tt class="docutils literal">values</tt>.</p>
 </div>
 <div class="section" id="xsd-union-support">
-<h2><a class="toc-backref" href="#id55">11.3&nbsp;&nbsp;&nbsp;xsd:union support</a></h2>
+<h2><a class="toc-backref" href="#id56">11.3&nbsp;&nbsp;&nbsp;xsd:union support</a></h2>
 <p>In order to properly resolve and query types which are unions in
 an XML Schema, an element's membership in an xsd:union is
 available through the instance attribute <tt class="docutils literal">unionOf</tt>.</p>
 </div>
 <div class="section" id="extended-xsd-choice-support">
-<h2><a class="toc-backref" href="#id56">11.4&nbsp;&nbsp;&nbsp;Extended xsd:choice support</a></h2>
+<h2><a class="toc-backref" href="#id57">11.4&nbsp;&nbsp;&nbsp;Extended xsd:choice support</a></h2>
 <p>When a parent xsd:choice is exists, an element's &quot;maxOccurs&quot; and
 &quot;minOccurs&quot; values can be inherited from the xsd:choice rather
 than the element itself. xsd:choice elements have been added to
@@ -2044,7 +2149,7 @@ supported in <tt class="docutils literal">generateDS.py</tt>:</p>
 </pre>
 </div>
 <div class="section" id="arity-minoccurs-maxoccurs-etc">
-<h2><a class="toc-backref" href="#id57">11.5&nbsp;&nbsp;&nbsp;Arity, minOccurs, maxOccurs, etc</a></h2>
+<h2><a class="toc-backref" href="#id58">11.5&nbsp;&nbsp;&nbsp;Arity, minOccurs, maxOccurs, etc</a></h2>
 <p>Some applications require information about the &quot;minOccurs&quot; and
 &quot;maxOccurs&quot; attributes in the XML Schema.  Some of that information
 can be obtained by using the --member-specs= (list|dict) command line
@@ -2053,7 +2158,7 @@ that it generates in each data representation class.  In particular,
 look at the <tt class="docutils literal">get_container</tt> method (from class <tt class="docutils literal">MemberSpec_</tt>).</p>
 </div>
 <div class="section" id="more-thorough-content-type-and-base-type-resolution">
-<h2><a class="toc-backref" href="#id58">11.6&nbsp;&nbsp;&nbsp;More thorough content type and base type resolution</a></h2>
+<h2><a class="toc-backref" href="#id59">11.6&nbsp;&nbsp;&nbsp;More thorough content type and base type resolution</a></h2>
 <p>The previous content type and base type resolution is insufficient
 for some needs.  Basically it was unable to handle more complex
 and shared element and simpleType definitions.  This support has
@@ -2066,7 +2171,7 @@ achieved is available as comments in the source code of
 class <tt class="docutils literal">XschemaElement</tt>.</p>
 </div>
 <div class="section" id="making-top-level-simpletypes-available-from-xschemahandler">
-<h2><a class="toc-backref" href="#id59">11.7&nbsp;&nbsp;&nbsp;Making top level simpleTypes available from XschemaHandler</a></h2>
+<h2><a class="toc-backref" href="#id60">11.7&nbsp;&nbsp;&nbsp;Making top level simpleTypes available from XschemaHandler</a></h2>
 <p>Some developers working to extend the analysis and code generation
 in <tt class="docutils literal">generateDS.py</tt> may be helped by additional information
 collected during the parsing of the XML Schema file.</p>
@@ -2077,7 +2182,7 @@ available as an instance attribute <tt class="docutils literal">topLevelSimpleTy
 <tt class="docutils literal">XschemaHandler</tt>.</p>
 </div>
 <div class="section" id="namespaces-inserting-namespace-definition-in-exported-documents">
-<h2><a class="toc-backref" href="#id60">11.8&nbsp;&nbsp;&nbsp;Namespaces -- inserting namespace definition in exported documents</a></h2>
+<h2><a class="toc-backref" href="#id61">11.8&nbsp;&nbsp;&nbsp;Namespaces -- inserting namespace definition in exported documents</a></h2>
 <p>In some cases, the document produced by a call to an export method
 will contain elements that have namespace prefixes.  For example,
 the following snippet contains namespace prefix &quot;abc&quot;:</p>
@@ -2123,7 +2228,7 @@ generateDS.py --namespacedef='xmlns:abc=&quot;http://www.abc.com/namespace.xsd&q
 <tt class="docutils literal">namespacedef_</tt> argument to the call to export.</p>
 </div>
 <div class="section" id="support-for-xs-any">
-<h2><a class="toc-backref" href="#id61">11.9&nbsp;&nbsp;&nbsp;Support for xs:any</a></h2>
+<h2><a class="toc-backref" href="#id62">11.9&nbsp;&nbsp;&nbsp;Support for xs:any</a></h2>
 <p>There is minimal support for the <tt class="docutils literal">xs:any</tt> wild card declaration.
 Effectively, an element defined by an <tt class="docutils literal">xs:complexType</tt> containing
 <tt class="docutils literal">xs:any</tt> can contain any element type as a child element.  Because
@@ -2150,7 +2255,7 @@ with <tt class="docutils literal">xs:any</tt> should help you understand what is
 copy, paste, and edit code from there.</p>
 </div>
 <div class="section" id="generating-lxml-element-tree">
-<h2><a class="toc-backref" href="#id62">11.10&nbsp;&nbsp;&nbsp;Generating Lxml Element tree</a></h2>
+<h2><a class="toc-backref" href="#id63">11.10&nbsp;&nbsp;&nbsp;Generating Lxml Element tree</a></h2>
 <p>Once you have build the tree of objects that are instances of the
 classes generated by <tt class="docutils literal">generateDS.py</tt>, you can use this to produce
 a tree of instances of the Lxml Element instances.  See
@@ -2180,7 +2285,7 @@ def parseEtree(inFileName):
     return rootObj, rootElement, mapping, reverse_mapping
 </pre>
 <div class="section" id="mapping-generateds-objects-to-lxml-elements-and-back">
-<h3><a class="toc-backref" href="#id63">11.10.1&nbsp;&nbsp;&nbsp;Mapping generateDS objects to Lxml Elements and back</a></h3>
+<h3><a class="toc-backref" href="#id64">11.10.1&nbsp;&nbsp;&nbsp;Mapping generateDS objects to Lxml Elements and back</a></h3>
 <p>Now suppose that you have produced the tree of instances of the
 generated classes, and suppose that you have used that to produce a
 tree of instances of the Element class from Lxml.  It may be useful
@@ -2194,7 +2299,7 @@ convenience method <tt class="docutils literal">gds_reverse_node_mapping</tt> fr
 </div>
 </div>
 <div class="section" id="specifying-names-for-anonymous-nested-type-definitions">
-<h2><a class="toc-backref" href="#id64">11.11&nbsp;&nbsp;&nbsp;Specifying names for anonymous nested type definitions</a></h2>
+<h2><a class="toc-backref" href="#id65">11.11&nbsp;&nbsp;&nbsp;Specifying names for anonymous nested type definitions</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> automatically assigns names for types (and the
 classes generated from them), when that type definition (for
 example, <tt class="docutils literal">xs:complexType</tt>) does not have a name and it is nested
@@ -2255,9 +2360,9 @@ schema.</li>
 </div>
 </div>
 <div class="section" id="how-to-use-the-generated-source-code">
-<h1><a class="toc-backref" href="#id65">12&nbsp;&nbsp;&nbsp;How to use the generated source code</a></h1>
+<h1><a class="toc-backref" href="#id66">12&nbsp;&nbsp;&nbsp;How to use the generated source code</a></h1>
 <div class="section" id="the-parsing-functions">
-<h2><a class="toc-backref" href="#id66">12.1&nbsp;&nbsp;&nbsp;The parsing functions</a></h2>
+<h2><a class="toc-backref" href="#id67">12.1&nbsp;&nbsp;&nbsp;The parsing functions</a></h2>
 <p>The simplest use is to call one of the parsing functions in the
 generated source file. You may be able to use one of these
 functions without change, or can modify one to fit your needs.
@@ -2283,7 +2388,7 @@ rootObject = people.parse('people.xml')
 </pre>
 </div>
 <div class="section" id="recognizing-the-top-level-element">
-<h2><a class="toc-backref" href="#id67">12.2&nbsp;&nbsp;&nbsp;Recognizing the top level element</a></h2>
+<h2><a class="toc-backref" href="#id68">12.2&nbsp;&nbsp;&nbsp;Recognizing the top level element</a></h2>
 <p>It might be that the generated module, when parsing an XML instance
 document, does not, by default, recognize the top level (root)
 element in an instance document.  This might happen because
@@ -2404,14 +2509,14 @@ function can parse and export it.</p>
 </ol>
 </div>
 <div class="section" id="the-export-methods">
-<h2><a class="toc-backref" href="#id68">12.3&nbsp;&nbsp;&nbsp;The export methods</a></h2>
+<h2><a class="toc-backref" href="#id69">12.3&nbsp;&nbsp;&nbsp;The export methods</a></h2>
 <p>The generated classes contain methods <tt class="docutils literal">export</tt> and
 <tt class="docutils literal">exportLiteral</tt> which can be called to export classes to several
 text formats, in particular to an XML instance document and a
 Python module containing Python literals.  See the generated parse
 functions for examples showing how to call the export methods.</p>
 <div class="section" id="method-export">
-<h3><a class="toc-backref" href="#id69">12.3.1&nbsp;&nbsp;&nbsp;Method export</a></h3>
+<h3><a class="toc-backref" href="#id70">12.3.1&nbsp;&nbsp;&nbsp;Method export</a></h3>
 <p>The export method in generated classes writes out an XML document
 that represents the instance that contains it and its child
 elements.  So, for example, if your instance tree was created by
@@ -2420,14 +2525,14 @@ one of the parsing functions described above, then calling
 document, differing only with respect to ignorable white space.</p>
 </div>
 <div class="section" id="method-exportliteral">
-<h3><a class="toc-backref" href="#id70">12.3.2&nbsp;&nbsp;&nbsp;Method <tt class="docutils literal">exportLiteral</tt></a></h3>
+<h3><a class="toc-backref" href="#id71">12.3.2&nbsp;&nbsp;&nbsp;Method <tt class="docutils literal">exportLiteral</tt></a></h3>
 <p><tt class="docutils literal">generateDS.py</tt> generates Python classes that represent the
 elements in an XML document, given an Xschema definition of the
 XML document type. The <tt class="docutils literal">exportLiteral</tt> method will export a
 Python literal representation of the Python instances of the
 classes that represent an XML document.</p>
 <div class="section" id="what-it-does">
-<h4><a class="toc-backref" href="#id71">12.3.2.1&nbsp;&nbsp;&nbsp;What It Does</a></h4>
+<h4><a class="toc-backref" href="#id72">12.3.2.1&nbsp;&nbsp;&nbsp;What It Does</a></h4>
 <p>When <tt class="docutils literal">generateDS.py</tt> generates the Python source code for your
 classes, this new feature also generates an <tt class="docutils literal">exportLiteral</tt>
 method in each class. If you call this method on the root
@@ -2441,7 +2546,7 @@ that you can import to (re-)create instances of the classes that
 represent your XML document.</p>
 </div>
 <div class="section" id="why-you-might-care">
-<h4><a class="toc-backref" href="#id72">12.3.2.2&nbsp;&nbsp;&nbsp;Why You Might Care</a></h4>
+<h4><a class="toc-backref" href="#id73">12.3.2.2&nbsp;&nbsp;&nbsp;Why You Might Care</a></h4>
 <p><tt class="docutils literal">generateDS.py</tt> was designed and built with the assumption that
 we are <em>not</em> interested in marking up text content at all.  What
 we really want is a way to represent structured and nested date in
@@ -2484,13 +2589,13 @@ import.</li>
 </ul>
 </div>
 <div class="section" id="how-to-use-it">
-<h4><a class="toc-backref" href="#id73">12.3.2.3&nbsp;&nbsp;&nbsp;How to use it</a></h4>
+<h4><a class="toc-backref" href="#id74">12.3.2.3&nbsp;&nbsp;&nbsp;How to use it</a></h4>
 <p>See the generated function <tt class="docutils literal">parseLiteral</tt> for an example of how
 to use <tt class="docutils literal">exportLiteral</tt>.</p>
 </div>
 </div>
 <div class="section" id="exporting-compact-xml-documents">
-<h3><a class="toc-backref" href="#id74">12.3.3&nbsp;&nbsp;&nbsp;Exporting compact XML documents</a></h3>
+<h3><a class="toc-backref" href="#id75">12.3.3&nbsp;&nbsp;&nbsp;Exporting compact XML documents</a></h3>
 <p>You can also export &quot;compact&quot; XML documents.  A compact document is
 one that is exported <em>without</em> the ignorable whitespace that is used
 to produce pretty printed documents.  In contrast, a pretty printed
@@ -2504,7 +2609,7 @@ default.</p>
 </div>
 </div>
 <div class="section" id="building-instances">
-<h2><a class="toc-backref" href="#id75">12.4&nbsp;&nbsp;&nbsp;Building instances</a></h2>
+<h2><a class="toc-backref" href="#id76">12.4&nbsp;&nbsp;&nbsp;Building instances</a></h2>
 <p>If you have an instance of a minidom node that represents an
 element in an XML document, you can also use the 'build' member
 function to populate an instance of the corresponding class. Here
@@ -2524,7 +2629,7 @@ for child in rootNode.childNodes:
 </pre>
 </div>
 <div class="section" id="using-the-subclass-module">
-<h2><a class="toc-backref" href="#id76">12.5&nbsp;&nbsp;&nbsp;Using the subclass module</a></h2>
+<h2><a class="toc-backref" href="#id77">12.5&nbsp;&nbsp;&nbsp;Using the subclass module</a></h2>
 <p>If you choose to use the generated subclass module, and I
 encourage you to do so, you may need to edit and modify that
 file. Here are some of the things that you must do (look for
@@ -2551,14 +2656,14 @@ accessed through getter and setter methods in the class in which
 they are referenced.</p>
 </div>
 <div class="section" id="elements-with-attributes-but-no-nested-children">
-<h2><a class="toc-backref" href="#id77">12.6&nbsp;&nbsp;&nbsp;Elements with attributes but no nested children</a></h2>
+<h2><a class="toc-backref" href="#id78">12.6&nbsp;&nbsp;&nbsp;Elements with attributes but no nested children</a></h2>
 <p>Element definitions that contain attributes but <em>no</em> nested child
 elements provide access to their data content through getter and
 setter methods <tt class="docutils literal">getValueOf_</tt> and <tt class="docutils literal">setValueOf_</tt> and member
 variable <tt class="docutils literal">valueOf_</tt>.</p>
 </div>
 <div class="section" id="id4">
-<span id="id3"></span><h2><a class="toc-backref" href="#id78">12.7&nbsp;&nbsp;&nbsp;Mixed content</a></h2>
+<span id="id3"></span><h2><a class="toc-backref" href="#id79">12.7&nbsp;&nbsp;&nbsp;Mixed content</a></h2>
 <p>The goal of <tt class="docutils literal">generateDS.py</tt> is to support data structures
 represented in XML as opposed to text mark-up.  However, it does
 provides some support for mixed content.  But, for mixed content,
@@ -2626,7 +2731,7 @@ elements, character data is captured in a member variable
 <tt class="docutils literal">getValueOf_</tt> and <tt class="docutils literal">setValueOf_</tt>.</p>
 </div>
 <div class="section" id="id6">
-<span id="id5"></span><h2><a class="toc-backref" href="#id79">12.8&nbsp;&nbsp;&nbsp;anyAttribute</a></h2>
+<span id="id5"></span><h2><a class="toc-backref" href="#id80">12.8&nbsp;&nbsp;&nbsp;anyAttribute</a></h2>
 <p>For elements that specify <tt class="docutils literal">anyAttributes</tt>, <tt class="docutils literal">generateDS.py</tt>
 produces a class containing the following:</p>
 <ul class="simple">
@@ -2647,7 +2752,7 @@ are <em>not</em> stored in the dictionary <tt class="docutils literal">anyAttrib
 <tt class="docutils literal">anyAttribute</tt> element in the XML Schema</p>
 </div>
 <div class="section" id="user-methods">
-<h2><a class="toc-backref" href="#id80">12.9&nbsp;&nbsp;&nbsp;User Methods</a></h2>
+<h2><a class="toc-backref" href="#id81">12.9&nbsp;&nbsp;&nbsp;User Methods</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> provides a mechanism that enables you to attach
 user defined methods to specific generated classes.  In order to
 do so, create a Python module containing specifications of those
@@ -2772,7 +2877,7 @@ source code and the class_name pattern in each specification.</li>
 </ol>
 </div>
 <div class="section" id="overridable-methods-generatedssuper-py">
-<h2><a class="toc-backref" href="#id81">12.10&nbsp;&nbsp;&nbsp;Overridable methods -- generatedssuper.py</a></h2>
+<h2><a class="toc-backref" href="#id82">12.10&nbsp;&nbsp;&nbsp;Overridable methods -- generatedssuper.py</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> generates calls to several methods that each have
 a default implementation in a superclass.  The default superclass
 with default implementations is included in the generated code.
@@ -2891,7 +2996,7 @@ option for <tt class="docutils literal">generateDS.py</tt>.</p>
 </ul>
 </div>
 <div class="section" id="the-element-name-to-class-name-dictionary">
-<h2><a class="toc-backref" href="#id82">12.11&nbsp;&nbsp;&nbsp;The element name to class name dictionary</a></h2>
+<h2><a class="toc-backref" href="#id83">12.11&nbsp;&nbsp;&nbsp;The element name to class name dictionary</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> automatically generates a dictionary that maps
 element/complexType names to the names of the class generated for
 that complexType definition.  This dictionary is named
@@ -2899,7 +3004,7 @@ that complexType definition.  This dictionary is named
 with the &quot;-o&quot; option.</p>
 </div>
 <div class="section" id="adding-custom-exported-attributes-and-namespace-prefix-definitions">
-<h2><a class="toc-backref" href="#id83">12.12&nbsp;&nbsp;&nbsp;Adding custom exported attributes and namespace prefix definitions</a></h2>
+<h2><a class="toc-backref" href="#id84">12.12&nbsp;&nbsp;&nbsp;Adding custom exported attributes and namespace prefix definitions</a></h2>
 <p>You can add additional attributes to exported XML content by (1)
 providing a module named <tt class="docutils literal">generatedsnamespaces.py</tt>; (2) placing
 that module somewhere so that it can be imported when you &quot;run&quot; your
@@ -2934,7 +3039,7 @@ section (<tt class="docutils literal">generatedsnamespaces.py</tt>).</li>
 </div>
 </div>
 <div class="section" id="one-per-generating-separate-files-from-imported-included-schemas">
-<h1><a class="toc-backref" href="#id84">13&nbsp;&nbsp;&nbsp;&quot;One Per&quot; -- generating separate files from imported/included schemas</a></h1>
+<h1><a class="toc-backref" href="#id85">13&nbsp;&nbsp;&nbsp;&quot;One Per&quot; -- generating separate files from imported/included schemas</a></h1>
 <p>The <tt class="docutils literal">generateDS.py</tt> project provides support for two approaches to
 this task:</p>
 <ul class="simple">
@@ -2949,7 +3054,7 @@ may be easier to customize or even re-write for your specific
 needs.</li>
 </ul>
 <div class="section" id="approach-1-command-line-option-one-file-per-xsd">
-<h2><a class="toc-backref" href="#id85">13.1&nbsp;&nbsp;&nbsp;Approach 1 -- Command line option --one-file-per-xsd</a></h2>
+<h2><a class="toc-backref" href="#id86">13.1&nbsp;&nbsp;&nbsp;Approach 1 -- Command line option --one-file-per-xsd</a></h2>
 <p>The <tt class="docutils literal"><span class="pre">--one-file-per-xsd</span></tt> command line option enables you to
 generate a separate Python module for each XML schema that is
 imported or included (using <tt class="docutils literal">&lt;xs:import&gt;</tt> or <tt class="docutils literal">&lt;xs:include&gt;</tt>) by
@@ -3002,7 +3107,7 @@ directory into a Python package.</p>
 </ul>
 </div>
 <div class="section" id="approach-2-extraction-and-generation-utilities">
-<h2><a class="toc-backref" href="#id86">13.2&nbsp;&nbsp;&nbsp;Approach 2 -- Extraction and generation utilities</a></h2>
+<h2><a class="toc-backref" href="#id87">13.2&nbsp;&nbsp;&nbsp;Approach 2 -- Extraction and generation utilities</a></h2>
 <p>The <tt class="docutils literal">generateds/utils</tt> subdirectory contains two utility scripts
 that may help with this task.  The procedure is as follows:</p>
 <ol class="arabic simple">
@@ -3044,11 +3149,11 @@ want to add comments or plan to pre-process them in some way.</li>
 </div>
 </div>
 <div class="section" id="how-to-modify-the-generated-code">
-<h1><a class="toc-backref" href="#id87">14&nbsp;&nbsp;&nbsp;How to modify the generated code</a></h1>
+<h1><a class="toc-backref" href="#id88">14&nbsp;&nbsp;&nbsp;How to modify the generated code</a></h1>
 <p>This section attempts to explain how to modify and add features to
 the generated code.</p>
 <div class="section" id="adding-features-to-class-definitions">
-<h2><a class="toc-backref" href="#id88">14.1&nbsp;&nbsp;&nbsp;Adding features to class definitions</a></h2>
+<h2><a class="toc-backref" href="#id89">14.1&nbsp;&nbsp;&nbsp;Adding features to class definitions</a></h2>
 <p>You can add new member definitions to a generated class. Look at
 the 'export' and 'exportLiteral' member functions for examples of
 how to access member variables and how to walk nested
@@ -3093,7 +3198,7 @@ parser, for example, since generating the file.</li>
 </div>
 </div>
 <div class="section" id="examples-and-demonstrations">
-<h1><a class="toc-backref" href="#id89">15&nbsp;&nbsp;&nbsp;Examples and demonstrations</a></h1>
+<h1><a class="toc-backref" href="#id90">15&nbsp;&nbsp;&nbsp;Examples and demonstrations</a></h1>
 <p>Under the directory Demos are several examples:</p>
 <ul class="simple">
 <li>Demos/People provides a simple demonstration of generating
@@ -3119,7 +3224,7 @@ containing explicit control logic, the order in which nodes of
 the parsed XML document are visited is under your control.</li>
 </ul>
 <div class="section" id="django-generating-models-and-forms">
-<h2><a class="toc-backref" href="#id90">15.1&nbsp;&nbsp;&nbsp;Django -- Generating Models and Forms</a></h2>
+<h2><a class="toc-backref" href="#id91">15.1&nbsp;&nbsp;&nbsp;Django -- Generating Models and Forms</a></h2>
 <p><tt class="docutils literal">generateDS.py</tt> can be used to generate Django models and Django
 forms that represent the data structures defined in an XML Schema.</p>
 <p><strong>Note:</strong> In order to use this capability, you must obtain the
@@ -3153,7 +3258,7 @@ use the &quot;-p&quot; command line option.  For more information, do:</p>
 python gends_run_gen_django.py --help
 </pre>
 <div class="section" id="how-to-generate-django-models-and-forms">
-<h3><a class="toc-backref" href="#id91">15.1.1&nbsp;&nbsp;&nbsp;How to generate Django models and forms</a></h3>
+<h3><a class="toc-backref" href="#id92">15.1.1&nbsp;&nbsp;&nbsp;How to generate Django models and forms</a></h3>
 <p><strong>Warning:</strong> Running this script attempts to over-write the
 following files in the current directory:</p>
 <ul class="simple">
@@ -3201,7 +3306,7 @@ Django application.</p>
 </ol>
 </div>
 <div class="section" id="how-it-works">
-<h3><a class="toc-backref" href="#id92">15.1.2&nbsp;&nbsp;&nbsp;How it works</a></h3>
+<h3><a class="toc-backref" href="#id93">15.1.2&nbsp;&nbsp;&nbsp;How it works</a></h3>
 <p>Here are a few notes that might be helpful if and when you need to
 do some debugging or extend the current capabilities or write a new
 &quot;meta-app&quot; that uses the same approach but does something new and
@@ -3228,9 +3333,9 @@ root super class of all generated data representation classes.</p>
 </div>
 </div>
 <div class="section" id="sample-code-and-extensions">
-<h1><a class="toc-backref" href="#id93">16&nbsp;&nbsp;&nbsp;Sample code and extensions</a></h1>
+<h1><a class="toc-backref" href="#id94">16&nbsp;&nbsp;&nbsp;Sample code and extensions</a></h1>
 <div class="section" id="capturing-xs-date-elements-as-dates">
-<h2><a class="toc-backref" href="#id94">16.1&nbsp;&nbsp;&nbsp;Capturing xs:date elements as dates</a></h2>
+<h2><a class="toc-backref" href="#id95">16.1&nbsp;&nbsp;&nbsp;Capturing xs:date elements as dates</a></h2>
 <p>The following extension employs a user method (see <a class="reference internal" href="#user-methods">User
 Methods</a>) in order to capture elements defined as xs:date as date
 objects.</p>
@@ -3299,9 +3404,9 @@ import types
 </div>
 </div>
 <div class="section" id="limitations-of-generateds">
-<h1><a class="toc-backref" href="#id95">17&nbsp;&nbsp;&nbsp;Limitations of generateDS</a></h1>
+<h1><a class="toc-backref" href="#id96">17&nbsp;&nbsp;&nbsp;Limitations of generateDS</a></h1>
 <div class="section" id="xml-schema-limitations">
-<h2><a class="toc-backref" href="#id96">17.1&nbsp;&nbsp;&nbsp;XML Schema limitations</a></h2>
+<h2><a class="toc-backref" href="#id97">17.1&nbsp;&nbsp;&nbsp;XML Schema limitations</a></h2>
 <p>There are things in Xschema that are not supported. You will have
 to use a restricted sub-set of Xschema to define your data
 structures. See above for supported features. See people.xsd and
@@ -3311,7 +3416,7 @@ does not work.</p>
 </div>
 </div>
 <div class="section" id="includes-the-xml-schema-xs-include-and-xs-import-elements">
-<h1><a class="toc-backref" href="#id97">18&nbsp;&nbsp;&nbsp;Includes -- The XML schema xs:include and xs:import elements</a></h1>
+<h1><a class="toc-backref" href="#id98">18&nbsp;&nbsp;&nbsp;Includes -- The XML schema xs:include and xs:import elements</a></h1>
 <p>While <tt class="docutils literal">generateDS.py</tt> itself does not process XML Schema
 <tt class="docutils literal">include</tt> elements, the distribution provides a script
 <tt class="docutils literal">process_includes.py</tt> that can be used as a preprocessor.
@@ -3345,7 +3450,7 @@ $ python process_includes.py --help
 </pre>
 </div>
 <div class="section" id="processing-relaxng-schemas">
-<h1><a class="toc-backref" href="#id98">19&nbsp;&nbsp;&nbsp;Processing RelaxNG schemas</a></h1>
+<h1><a class="toc-backref" href="#id99">19&nbsp;&nbsp;&nbsp;Processing RelaxNG schemas</a></h1>
 <p>RelaxNG is a schema definition language and is an alternative to XML
 Schema.  For more information on RelaxNG, see: <a class="reference external" href="http://relaxng.org/">http://relaxng.org/</a>.</p>
 <p><tt class="docutils literal">generateDS.py</tt> does not understand or process RelaxNG schemas.
@@ -3386,7 +3491,7 @@ through <tt class="docutils literal">generateDS.py</tt>:</p>
 <a class="reference external" href="https://github.com/relaxng/jing-trang">https://github.com/relaxng/jing-trang</a></p>
 </div>
 <div class="section" id="acknowledgments">
-<h1><a class="toc-backref" href="#id99">20&nbsp;&nbsp;&nbsp;Acknowledgments</a></h1>
+<h1><a class="toc-backref" href="#id100">20&nbsp;&nbsp;&nbsp;Acknowledgments</a></h1>
 <p>Many thanks to those who have used <tt class="docutils literal">generateDS.py</tt> and have
 contributed their comments and suggestions.  These comments have
 been valuable both in teaching me about things I needed to know in
@@ -3400,7 +3505,7 @@ following among others:</p>
 </ul>
 </div>
 <div class="section" id="see-also">
-<h1><a class="toc-backref" href="#id100">21&nbsp;&nbsp;&nbsp;See also</a></h1>
+<h1><a class="toc-backref" href="#id101">21&nbsp;&nbsp;&nbsp;See also</a></h1>
 <p><a class="reference external" href="http://www.python.org">Python</a>: The Python home page.</p>
 <p><a class="reference external" href="http://www.davekuhlman.org">Dave's Page</a>: My home page, which contains more Python stuff.</p>
 <!-- vim:ft=rst: -->
@@ -3409,7 +3514,7 @@ following among others:</p>
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateDS.txt">View document source</a>.
-Generated on: 2018-08-27 21:50 UTC.
+Generated on: 2018-10-05 19:59 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateDS.py b/generateDS.py
index 02f8322..57a8507 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -187,6 +187,7 @@ also generates member specifications in each class (in a dictionary).
 
 from __future__ import print_function
 from six.moves import input
+from six.moves import urllib
 import six
 import sys
 import os.path
@@ -202,12 +203,8 @@ import operator
 import re
 
 if sys.version_info.major == 2:
-    import urllib2
     import StringIO
 else:
-    import urllib.request
-    import urllib.error
-    import urllib.parse
     import io
     from functools import reduce
 
@@ -235,7 +232,7 @@ _log = logging.getLogger(__name__)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.24'
+VERSION = '2.29.25'
 ##VERSION##
 
 BaseStrTypes = six.string_types
@@ -2491,7 +2488,7 @@ def generateToEtree(wrt, element, Targetnamespace):
     generateToEtreeAttributes(wrt, element)
     generateToEtreeChildren(wrt, element, Targetnamespace)
     wrt("        if mapping_ is not None:\n")
-    wrt("            mapping_[self] = element\n")
+    wrt("            mapping_[id(self)] = element\n")
     wrt("        return element\n")
 # end generateToEtree
 
@@ -5883,7 +5880,7 @@ def generateHeader(wrt, prefix, options, args, externalImports):
         preserve_cdata_tags_pat = ""
         preserve_cdata_get_text = Preserve_cdata_get_all_text2
     gds_reverse_node_mapping_text = \
-        "return dict(((v, k) for k, v in mapping.iteritems()))"
+        "return dict(((v, k) for k, v in mapping.items()))"
     quote_xml_text = \
         "s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)"
     quote_attrib_text = \
@@ -6206,21 +6203,13 @@ def get_impl_body(classBehavior, baseImplUrl, implUrl):
     if implUrl:
         if baseImplUrl:
             implUrl = '%s%s' % (baseImplUrl, implUrl)
-        if sys.version_info.major == 2:
-            urllib_urlopen = urllib2.urlopen
-            urllib_httperror = urllib2.HTTPError
-            urllib_urlerror = urllib2.URLError
-        else:
-            urllib_urlopen = urllib.request.urlopen
-            urllib_httperror = urllib.error.HTTPError
-            urllib_urlerror = urllib.error.URLError
         try:
-            implFile = urllib_urlopen(implUrl)
+            implFile = urllib.request.urlopen(implUrl)
             impl = implFile.read()
             implFile.close()
-        except urllib_httperror:
+        except urllib.error.HTTPError:
             err_msg('*** Implementation at %s not found.\n' % implUrl)
-        except urllib_urlerror:
+        except urllib.error.URLError:
             err_msg('*** Connection refused for URL: %s\n' % implUrl)
     return impl
 
@@ -7075,16 +7064,17 @@ def parseAndGenerate(
         for path in rootPaths:
             if path.startswith('http:') or path.startswith('ftp:'):
                 try:
-                    urlfile = urllib2.urlopen(path)
+                    urlfile = urllib.request.urlopen(path)
                     content = urlfile.read()
                     urlfile.close()
                     if sys.version_info.major == 2:
                         rootFile = StringIO.StringIO()
                     else:
                         rootFile = io.StringIO()
+                        content = content.decode()
                     rootFile.write(content)
                     rootFile.seek(0)
-                except urllib2.HTTPError:
+                except urllib.error.HTTPError:
                     msg = "Can't find file %s." % (path, )
                     raise IOError(msg)
             else:
diff --git a/generateDS.txt b/generateDS.txt
index ecc0ff3..9b67203 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.29.24
+:revision: 2.29.25
 
 .. version
 
@@ -1449,6 +1449,117 @@ http://www.w3.org/TR/xmlschema-0/#abstract
 <http://www.w3.org/TR/xmlschema-0/#abstract>`_.
 
 
+Types derived by extension
+--------------------------
+
+This section describes some of the support for types derived by
+extension and also how to use the data bindings generated for those
+types in Python.
+
+For example, suppose you have an XML schema that looks like this
+(``example.xsd``)::
+
+    <?xml version="1.0"?>
+    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
+
+    <xs:element name="animalCollection">
+      <xs:complexType>
+        <xs:sequence>
+          <xs:element name="animal" type="animal" maxOccurs="unbounded"/>
+        </xs:sequence>
+      </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="animal" abstract="true"></xs:complexType>
+
+    <xs:complexType name="dog">
+      <xs:complexContent>
+        <xs:extension base="animal">
+          <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+          </xs:sequence>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+    </xs:schema>
+
+An XML instance document for this document type might be the
+following::
+
+    <?xml version="1.0"?>
+    <animalCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <animal xsi:type="dog">
+            <name>fido</name>
+        </animal>
+    </animalCollection>
+
+Question: How would you, in Python, using bindings generated by
+``generateDS.py``, create an instance of type ``dog`` that is
+derived from type ``animal`` and when exported to XML, appears as an
+animal with attribute ``xsi:type="dog"``?
+
+First, we need to generate our bindings::
+
+    $ generateDS.py -o example01.py example.xsd
+
+And, now, here is Python some code that creates those instances and
+exports them::
+
+    # sample01.py
+
+    import sys
+    import example01
+
+    def test():
+        animal_collection = example01.animalCollection()
+        animal = example01.dog(name='milicent')
+        #
+        # must set original_tagname_ and extensiontype_ for
+        # type derived by extension.  See:
+        # https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt
+        animal.original_tagname_ = 'animal'
+        animal.extensiontype_ = 'dog'
+        animal_collection.add_animal(animal)
+        animal_collection.export(sys.stdout, 0)
+        return animal_collection, animal
+
+    test()
+
+Notes:
+
+- The above code creates an instance of class ``animalCollection``
+  and an instance of class ``dog``.
+
+- Because we want the ``dog`` to be represented in XML as a
+  "<animal>" with an "xsi:type" attribute, we must set the
+  ``original_tagname_`` and ``extensiontype_`` attributes in the
+  instance of class ``dog``.
+
+- Then we add our ``dog`` to the ``animalCollection``, and finally,
+  we export it.
+
+- We can get some clues about this by reading the code generated for
+  classes ``animalCollection``, ``animal``, and ``dog``.
+
+When we run it, we'll see::
+
+    $ python sample01.py
+    <animalCollection>
+        <animal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="dog">
+            <name>milicent</name>
+        </animal>
+    </animalCollection>
+
+For more information on types derived by extension, see "XML Schema
+Part 0: Primer Second Edition", specifically:
+
+- "Deriving Types by Extension" --
+  https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt
+
+- "Using Derived Types in Instance Documents" --
+  https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#UseDerivInInstDocs
+
+
 The XML schema input to generateDS
 ==================================
 
diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html
index f7b4cb2..a83f992 100644
--- a/generateds_gui_notes.html
+++ b/generateds_gui_notes.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.24</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.25</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 27, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">October 05, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -401,7 +401,7 @@ $ mv generateds_gui.mo locale/ru/LC_MESSAGES/
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_gui_notes.txt">View document source</a>.
-Generated on: 2018-08-27 21:50 UTC.
+Generated on: 2018-10-05 19:59 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateds_gui_notes.txt b/generateds_gui_notes.txt
index 3aee747..512f03b 100644
--- a/generateds_gui_notes.txt
+++ b/generateds_gui_notes.txt
@@ -12,7 +12,7 @@ GenerateDS GUI Notes
 
 .. version
 
-:revision: 2.29.24
+:revision: 2.29.25
 
 .. version
 
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index b838fab..63e4914 100644
--- a/gui/generateds_gui.py
+++ b/gui/generateds_gui.py
@@ -41,7 +41,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.24'
+VERSION = '2.29.25'
 ##VERSION##
 
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index 6425741..c41beb4 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.24</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.25</td>
 </tr>
 </tbody>
 </table>
@@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 27, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">October 05, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -380,7 +380,7 @@ this command for your needs.  For example, you may need to use
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="librarytemplate_howto.txt">View document source</a>.
-Generated on: 2018-08-27 21:50 UTC.
+Generated on: 2018-10-05 19:59 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt
index 0edddd2..e0d8a3a 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.29.24
+:revision: 2.29.25
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index 23df4f2..7bf5f80 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -40,7 +40,7 @@ except ImportError:
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.24'
+VERSION = '2.29.25'
 ##VERSION##
 
 CatalogDict = {}
diff --git a/setup.py b/setup.py
index 167bf5d..0052045 100644
--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@ setup(
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-    version="2.29.24",
+    version="2.29.25",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@davekuhlman.org",
diff --git a/tests/OnePer/oneperType00_2One.py b/tests/OnePer/oneperType00_2One.py
index 302c340..431ee25 100644
--- a/tests/OnePer/oneperType00_2One.py
+++ b/tests/OnePer/oneperType00_2One.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,8 +731,8 @@ def _cast(typ, value):
 
 class oneperType00_1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('inner01', 'oneperType01_1', 0, 0, {u'type': u'oneperType01_1', u'name': u'inner01'}, None),
-        MemberSpec_('inner02', 'oneperType01_2', 0, 0, {u'type': u'oneperType01_2', u'name': u'inner02'}, None),
+        MemberSpec_('inner01', 'oneperType01_1', 0, 0, {'name': 'inner01', 'type': 'oneperType01_1'}, None),
+        MemberSpec_('inner02', 'oneperType01_2', 0, 0, {'name': 'inner02', 'type': 'oneperType01_2'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/OnePer/oneperType01_2One.py b/tests/OnePer/oneperType01_2One.py
index eb0889b..25f68e7 100644
--- a/tests/OnePer/oneperType01_2One.py
+++ b/tests/OnePer/oneperType01_2One.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,8 +731,8 @@ def _cast(typ, value):
 
 class oneperType01_1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('username', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'username'}, None),
-        MemberSpec_('inner01', 'oneperType01_2', 0, 0, {u'type': u'oneperType01_2', u'name': u'inner01'}, None),
+        MemberSpec_('username', 'xs:string', 0, 0, {'name': 'username', 'type': 'xs:string'}, None),
+        MemberSpec_('inner01', 'oneperType01_2', 0, 0, {'name': 'inner01', 'type': 'oneperType01_2'}, None),
     ]
     subclass = None
     superclass = None
@@ -820,7 +820,7 @@ class oneperType01_1(GeneratedsSuper):
 
 class oneperType01_2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('userdescription', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'userdescription'}, None),
+        MemberSpec_('userdescription', 'xs:string', 0, 0, {'name': 'userdescription', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/OnePer/oneperType02_2One.py b/tests/OnePer/oneperType02_2One.py
index 0533a39..288f23a 100644
--- a/tests/OnePer/oneperType02_2One.py
+++ b/tests/OnePer/oneperType02_2One.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,8 +731,8 @@ def _cast(typ, value):
 
 class oneperType02_1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('clientname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'clientname'}, None),
-        MemberSpec_('inner01', 'oneperType02_2', 0, 0, {u'type': u'oneperType02_2', u'name': u'inner01'}, None),
+        MemberSpec_('clientname', 'xs:string', 0, 0, {'name': 'clientname', 'type': 'xs:string'}, None),
+        MemberSpec_('inner01', 'oneperType02_2', 0, 0, {'name': 'inner01', 'type': 'oneperType02_2'}, None),
     ]
     subclass = None
     superclass = None
@@ -820,7 +820,7 @@ class oneperType02_1(GeneratedsSuper):
 
 class oneperType02_2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('clientdescription', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'clientdescription'}, None),
+        MemberSpec_('clientdescription', 'xs:string', 0, 0, {'name': 'clientdescription', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/OnePer/oneperType03_2One.py b/tests/OnePer/oneperType03_2One.py
index b7a7776..8667701 100644
--- a/tests/OnePer/oneperType03_2One.py
+++ b/tests/OnePer/oneperType03_2One.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,8 +731,8 @@ def _cast(typ, value):
 
 class oneperType03_1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('helpername', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'helpername'}, None),
-        MemberSpec_('inner01', 'oneperType02_2', 0, 0, {u'type': u'oneperType02_2', u'name': u'inner01'}, None),
+        MemberSpec_('helpername', 'xs:string', 0, 0, {'name': 'helpername', 'type': 'xs:string'}, None),
+        MemberSpec_('inner01', 'oneperType02_2', 0, 0, {'name': 'inner01', 'type': 'oneperType02_2'}, None),
     ]
     subclass = None
     superclass = None
@@ -820,7 +820,7 @@ class oneperType03_1(GeneratedsSuper):
 
 class oneperType03_2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('helperdescription', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'helperdescription'}, None),
+        MemberSpec_('helperdescription', 'xs:string', 0, 0, {'name': 'helperdescription', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/abstract_type1_sub.py b/tests/abstract_type1_sub.py
index 43f19ac..48dfa29 100644
--- a/tests/abstract_type1_sub.py
+++ b/tests/abstract_type1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py
index 47335e1..f919e57 100644
--- a/tests/abstract_type1_sup.py
+++ b/tests/abstract_type1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,7 +730,7 @@ def _cast(typ, value):
 
 class carrierType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('fleet', 'Vehicle', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'Vehicle', u'name': u'fleet'}, None),
+        MemberSpec_('fleet', 'Vehicle', 1, 0, {'name': 'fleet', 'type': 'Vehicle', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/annotations1_sub.py b/tests/annotations1_sub.py
index 3db6ece..80946a6 100644
--- a/tests/annotations1_sub.py
+++ b/tests/annotations1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py
index 658ca2f..af28863 100644
--- a/tests/annotations1_sup.py
+++ b/tests/annotations1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -733,8 +733,8 @@ class document1Type(GeneratedsSuper):
     test purposes. It should make a somewhat uninteresting
     docstring."""
     member_data_items_ = [
-        MemberSpec_('comments', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'comments'}, None),
-        MemberSpec_('otherdoc', 'document2Type', 0, 0, {u'type': u'document2Type', u'name': u'otherdoc'}, None),
+        MemberSpec_('comments', 'xs:string', 0, 0, {'name': 'comments', 'type': 'xs:string'}, None),
+        MemberSpec_('otherdoc', 'document2Type', 0, 0, {'name': 'otherdoc', 'type': 'document2Type'}, None),
     ]
     subclass = None
     superclass = None
@@ -825,9 +825,9 @@ class document2Type(GeneratedsSuper):
     test purposes. It should make a somewhat uninteresting
     docstring."""
     member_data_items_ = [
-        MemberSpec_('comments', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'comments'}, None),
-        MemberSpec_('rating', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'rating'}, None),
-        MemberSpec_('anotherdoc', 'document3Type', 0, 0, {u'type': u'document3Type', u'name': u'anotherdoc'}, None),
+        MemberSpec_('comments', 'xs:string', 0, 0, {'name': 'comments', 'type': 'xs:string'}, None),
+        MemberSpec_('rating', 'xs:integer', 0, 0, {'name': 'rating', 'type': 'xs:integer'}, None),
+        MemberSpec_('anotherdoc', 'document3Type', 0, 0, {'name': 'anotherdoc', 'type': 'document3Type'}, None),
     ]
     subclass = None
     superclass = None
@@ -931,8 +931,8 @@ class document2Type(GeneratedsSuper):
 class document3Type(GeneratedsSuper):
     """This is a element of Type 3. It is short."""
     member_data_items_ = [
-        MemberSpec_('comments', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'comments'}, None),
-        MemberSpec_('rating', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'rating'}, None),
+        MemberSpec_('comments', 'xs:string', 0, 0, {'name': 'comments', 'type': 'xs:string'}, None),
+        MemberSpec_('rating', 'xs:integer', 0, 0, {'name': 'rating', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/anonymous_type1_sub.py b/tests/anonymous_type1_sub.py
index 8b03f97..0025627 100644
--- a/tests/anonymous_type1_sub.py
+++ b/tests/anonymous_type1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anonymous_type1_sup.py b/tests/anonymous_type1_sup.py
index cbd741a..1dbdd44 100644
--- a/tests/anonymous_type1_sup.py
+++ b/tests/anonymous_type1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,9 +730,9 @@ def _cast(typ, value):
 
 class FooList(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('Foo', 'FooType1', 0, 0, {u'type': u'FooType1', u'name': u'Foo'}, None),
-        MemberSpec_('Bar', 'BarType2', 0, 0, {u'type': u'BarType2', u'name': u'Bar'}, None),
-        MemberSpec_('Baz', 'BazType3', 0, 0, {u'type': u'BazType3', u'name': u'Baz'}, None),
+        MemberSpec_('Foo', 'FooType1', 0, 0, {'name': 'Foo', 'type': 'FooType1'}, None),
+        MemberSpec_('Bar', 'BarType2', 0, 0, {'name': 'Bar', 'type': 'BarType2'}, None),
+        MemberSpec_('Baz', 'BazType3', 0, 0, {'name': 'Baz', 'type': 'BazType3'}, None),
     ]
     subclass = None
     superclass = None
@@ -831,7 +831,7 @@ class FooList(GeneratedsSuper):
 
 class FooType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('FooType', ['FooTypeType', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'FooType'}, None),
+        MemberSpec_('FooType', ['FooTypeType', 'xs:string'], 0, 0, {'name': 'FooType', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -918,7 +918,7 @@ class FooType1(GeneratedsSuper):
 
 class BarType2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('BarType', ['BarTypeType', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'BarType'}, None),
+        MemberSpec_('BarType', ['BarTypeType', 'xs:string'], 0, 0, {'name': 'BarType', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1005,7 +1005,7 @@ class BarType2(GeneratedsSuper):
 
 class BazType3(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('BazType', ['BazTypeType', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'BazType'}, None),
+        MemberSpec_('BazType', ['BazTypeType', 'xs:string'], 0, 0, {'name': 'BazType', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/anysimpletype1_sub.py b/tests/anysimpletype1_sub.py
index f456d15..18f5e83 100644
--- a/tests/anysimpletype1_sub.py
+++ b/tests/anysimpletype1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py
index d1196d6..b2be9a2 100644
--- a/tests/anysimpletype1_sup.py
+++ b/tests/anysimpletype1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,7 +731,7 @@ def _cast(typ, value):
 class test1element(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('test1attribute', 'cimAnySimpleType', 0, 1, {'use': 'optional'}),
-        MemberSpec_('test1member', 'cimAnySimpleType', 0, 0, {u'type': u'cimAnySimpleType', u'name': u'test1member'}, None),
+        MemberSpec_('test1member', 'cimAnySimpleType', 0, 0, {'name': 'test1member', 'type': 'cimAnySimpleType'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/anywildcard1_sub.py b/tests/anywildcard1_sub.py
index 713a363..079fab7 100644
--- a/tests/anywildcard1_sub.py
+++ b/tests/anywildcard1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py
index 7c8236a..9ccef05 100644
--- a/tests/anywildcard1_sup.py
+++ b/tests/anywildcard1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,9 +730,9 @@ def _cast(typ, value):
 
 class PlantType_single(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('__ANY__', '__ANY__', 0, 0, {u'maxOccurs': u'1', u'minOccurs': u'1'}, None),
-        MemberSpec_('description', 'DescriptionType', 0, 0, {u'type': u'DescriptionType', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('__ANY__', '__ANY__', 0, 0, {'minOccurs': '1', 'maxOccurs': '1'}, None),
+        MemberSpec_('description', 'DescriptionType', 0, 0, {'name': 'description', 'type': 'DescriptionType'}, None),
     ]
     subclass = None
     superclass = None
@@ -830,9 +830,9 @@ class PlantType_single(GeneratedsSuper):
 
 class PlantType_multiple(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('__ANY__', '__ANY__', 1, 0, {u'maxOccurs': u'unbounded', u'minOccurs': u'1'}, None),
-        MemberSpec_('description', 'DescriptionType', 0, 0, {u'type': u'DescriptionType', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('__ANY__', '__ANY__', 1, 0, {'minOccurs': '1', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('description', 'DescriptionType', 0, 0, {'name': 'description', 'type': 'DescriptionType'}, None),
     ]
     subclass = None
     superclass = None
@@ -936,8 +936,8 @@ class PlantType_multiple(GeneratedsSuper):
 class DescriptionType(GeneratedsSuper):
     """A standard complexType."""
     member_data_items_ = [
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('size', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'size'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('size', 'xs:string', 0, 0, {'name': 'size', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1026,8 +1026,8 @@ class DescriptionType(GeneratedsSuper):
 class CatalogType(GeneratedsSuper):
     """A standard complexType."""
     member_data_items_ = [
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('catagory', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'catagory'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('catagory', 'xs:integer', 0, 0, {'name': 'catagory', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -1119,7 +1119,7 @@ class CatalogType(GeneratedsSuper):
 
 class PlantType_single_nochild(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('__ANY__', '__ANY__', 0, 0, {u'maxOccurs': u'1', u'minOccurs': u'1'}, None),
+        MemberSpec_('__ANY__', '__ANY__', 0, 0, {'minOccurs': '1', 'maxOccurs': '1'}, None),
     ]
     subclass = None
     superclass = None
@@ -1194,7 +1194,7 @@ class PlantType_single_nochild(GeneratedsSuper):
 
 class PlantType_multiple_nochild(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('__ANY__', '__ANY__', 1, 0, {u'maxOccurs': u'unbounded', u'minOccurs': u'1'}, None),
+        MemberSpec_('__ANY__', '__ANY__', 1, 0, {'minOccurs': '1', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/attr_groups1_sub.py b/tests/attr_groups1_sub.py
index f04f481..ee22469 100644
--- a/tests/attr_groups1_sub.py
+++ b/tests/attr_groups1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py
index 1cbe23a..5c1c572 100644
--- a/tests/attr_groups1_sup.py
+++ b/tests/attr_groups1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -739,7 +739,7 @@ class GetUserReq(GeneratedsSuper):
         MemberSpec_('value06', 'xsd:integer', 0, 1, {'use': 'optional'}),
         MemberSpec_('value07', 'xsd:integer', 0, 1, {'use': 'optional'}),
         MemberSpec_('value08', 'xsd:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('returnedTags', 'xsd:string', 0, 1, {u'type': u'xsd:string', u'name': u'returnedTags', u'minOccurs': u'0'}, None),
+        MemberSpec_('returnedTags', 'xsd:string', 0, 1, {'name': 'returnedTags', 'type': 'xsd:string', 'minOccurs': '0'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/catalogtest1_sub.py b/tests/catalogtest1_sub.py
index 7da5ec7..96e259a 100644
--- a/tests/catalogtest1_sub.py
+++ b/tests/catalogtest1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/catalogtest1_sup.py b/tests/catalogtest1_sup.py
index 34a7b0b..f6cb15c 100644
--- a/tests/catalogtest1_sup.py
+++ b/tests/catalogtest1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
diff --git a/tests/cdata1_sub.py b/tests/cdata1_sub.py
index aa221fc..0274b90 100644
--- a/tests/cdata1_sub.py
+++ b/tests/cdata1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/cdata1_sup.py b/tests/cdata1_sup.py
index 5e122ff..41f1cb5 100644
--- a/tests/cdata1_sup.py
+++ b/tests/cdata1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,7 +731,7 @@ def _cast(typ, value):
 
 class cdataListType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('cdatalist', 'cdataType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'cdataType', u'name': u'cdatalist', u'minOccurs': u'0'}, None),
+        MemberSpec_('cdatalist', 'cdataType', 1, 1, {'name': 'cdatalist', 'type': 'cdataType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -814,7 +814,7 @@ class cdataListType(GeneratedsSuper):
 
 class cdataType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('script', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'script'}, None),
+        MemberSpec_('script', 'xs:string', 0, 0, {'name': 'script', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/cleanupname1_sub.py b/tests/cleanupname1_sub.py
index 059dacc..06e975f 100644
--- a/tests/cleanupname1_sub.py
+++ b/tests/cleanupname1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/cleanupname1_sup.py b/tests/cleanupname1_sup.py
index 47ae245..da3bddb 100644
--- a/tests/cleanupname1_sup.py
+++ b/tests/cleanupname1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,11 +731,11 @@ def _cast(typ, value):
 
 class dataKind(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('data1', 'data1Type', 0, 0, {u'type': u'data1Type', u'name': u'data1'}, None),
-        MemberSpec_('data2', 'TypeData2', 0, 0, {u'type': u'TypeData2', u'name': u'data2'}, None),
-        MemberSpec_('data3', 'RealTypeData3', 0, 0, {u'type': u'RealTypeData3', u'name': u'data3'}, None),
-        MemberSpec_('data4', 'AABBCCdataType', 0, 0, {u'type': u'AABBCCdataType', u'name': u'data4'}, None),
-        MemberSpec_('data5', 'dataTypeXYZAXYZ', 0, 0, {u'type': u'dataTypeXYZAXYZ', u'name': u'data5'}, None),
+        MemberSpec_('data1', 'data1Type', 0, 0, {'name': 'data1', 'type': 'data1Type'}, None),
+        MemberSpec_('data2', 'TypeData2', 0, 0, {'name': 'data2', 'type': 'TypeData2'}, None),
+        MemberSpec_('data3', 'RealTypeData3', 0, 0, {'name': 'data3', 'type': 'RealTypeData3'}, None),
+        MemberSpec_('data4', 'AABBCCdataType', 0, 0, {'name': 'data4', 'type': 'AABBCCdataType'}, None),
+        MemberSpec_('data5', 'dataTypeXYZAXYZ', 0, 0, {'name': 'data5', 'type': 'dataTypeXYZAXYZ'}, None),
     ]
     subclass = None
     superclass = None
@@ -856,7 +856,7 @@ class dataKind(GeneratedsSuper):
 
 class data1Kind(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('content1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'content1'}, None),
+        MemberSpec_('content1', 'xs:string', 0, 0, {'name': 'content1', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -933,7 +933,7 @@ class data1Kind(GeneratedsSuper):
 
 class MlassData2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('content1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'content1'}, None),
+        MemberSpec_('content1', 'xs:string', 0, 0, {'name': 'content1', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1010,7 +1010,7 @@ class MlassData2(GeneratedsSuper):
 
 class RealTypeData3(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('content1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'content1'}, None),
+        MemberSpec_('content1', 'xs:string', 0, 0, {'name': 'content1', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1087,7 +1087,7 @@ class RealTypeData3(GeneratedsSuper):
 
 class MMMMMMdataKind(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('content1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'content1'}, None),
+        MemberSpec_('content1', 'xs:string', 0, 0, {'name': 'content1', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1164,7 +1164,7 @@ class MMMMMMdataKind(GeneratedsSuper):
 
 class dataTypeNNNMNNN(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('content1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'content1'}, None),
+        MemberSpec_('content1', 'xs:string', 0, 0, {'name': 'content1', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/copy_all b/tests/copy_all
index 06d9909..ecaafeb 100755
--- a/tests/copy_all
+++ b/tests/copy_all
@@ -67,3 +67,5 @@ cp mixedcontent2_sub.py mixedcontent1_sub.py
 cp mixedcontent2_sup.py mixedcontent1_sup.py
 cp no_namespace_defs2_sub.py no_namespace_defs1_sub.py
 cp no_namespace_defs2_sup.py no_namespace_defs1_sup.py
+cp derived_types2_sub.py derived_types1_sub.py
+cp derived_types2_sup.py derived_types1_sup.py
diff --git a/tests/defaults_cases1_sub.py b/tests/defaults_cases1_sub.py
index f34b1f0..02fbe04 100644
--- a/tests/defaults_cases1_sub.py
+++ b/tests/defaults_cases1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_cases1_sup.py b/tests/defaults_cases1_sup.py
index 3dd0935..408973a 100644
--- a/tests/defaults_cases1_sup.py
+++ b/tests/defaults_cases1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -729,10 +729,10 @@ def _cast(typ, value):
 
 class DefaultTypes(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default1', 'DefaultType1', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType1', u'name': u'default1'}, None),
-        MemberSpec_('default2', 'DefaultType2', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType2', u'name': u'default2'}, None),
-        MemberSpec_('fixed1', 'FixedType1', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'FixedType1', u'name': u'fixed1'}, None),
-        MemberSpec_('fixed2', 'FixedType2', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'FixedType2', u'name': u'fixed2'}, None),
+        MemberSpec_('default1', 'DefaultType1', 1, 0, {'name': 'default1', 'type': 'DefaultType1', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('default2', 'DefaultType2', 1, 0, {'name': 'default2', 'type': 'DefaultType2', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('fixed1', 'FixedType1', 1, 0, {'name': 'fixed1', 'type': 'FixedType1', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('fixed2', 'FixedType2', 1, 0, {'name': 'fixed2', 'type': 'FixedType2', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -866,14 +866,14 @@ class DefaultTypes(GeneratedsSuper):
 
 class DefaultType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('normal01', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'normal01', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 1, {u'type': u'xs:string', u'name': u'normal02', u'minOccurs': u'0'}, None),
-        MemberSpec_('default01', 'xs:integer', 0, 1, {u'default': u'23', u'type': u'xs:integer', u'name': u'default01', u'minOccurs': u'0'}, None),
-        MemberSpec_('default02', 'xs:string', 0, 1, {u'default': u'Peach', u'type': u'xs:string', u'name': u'default02', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'normal03', u'minOccurs': u'1'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'normal04', u'minOccurs': u'1'}, None),
-        MemberSpec_('default03', 'xs:float', 0, 0, {u'default': u'23.45', u'type': u'xs:float', u'name': u'default03', u'minOccurs': u'1'}, None),
-        MemberSpec_('default04', 'xs:double', 0, 0, {u'default': u'54.32', u'type': u'xs:double', u'name': u'default04', u'minOccurs': u'1'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 1, {'name': 'normal01', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 1, {'name': 'normal02', 'type': 'xs:string', 'minOccurs': '0'}, None),
+        MemberSpec_('default01', 'xs:integer', 0, 1, {'name': 'default01', 'type': 'xs:integer', 'default': '23', 'minOccurs': '0'}, None),
+        MemberSpec_('default02', 'xs:string', 0, 1, {'name': 'default02', 'type': 'xs:string', 'default': 'Peach', 'minOccurs': '0'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 0, {'name': 'normal03', 'type': 'xs:float', 'minOccurs': '1'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 0, {'name': 'normal04', 'type': 'xs:double', 'minOccurs': '1'}, None),
+        MemberSpec_('default03', 'xs:float', 0, 0, {'name': 'default03', 'type': 'xs:float', 'default': '23.45', 'minOccurs': '1'}, None),
+        MemberSpec_('default04', 'xs:double', 0, 0, {'name': 'default04', 'type': 'xs:double', 'default': '54.32', 'minOccurs': '1'}, None),
     ]
     subclass = None
     superclass = None
@@ -1162,14 +1162,14 @@ class DefaultType2(GeneratedsSuper):
 
 class FixedType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('normal01', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'normal01', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 1, {u'type': u'xs:string', u'name': u'normal02', u'minOccurs': u'0'}, None),
-        MemberSpec_('fixed01', 'xs:integer', 0, 1, {u'fixed': u'23', u'type': u'xs:integer', u'name': u'fixed01', u'minOccurs': u'0'}, None),
-        MemberSpec_('fixed02', 'xs:string', 0, 1, {u'fixed': u'Peach', u'type': u'xs:string', u'name': u'fixed02', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'normal03', u'minOccurs': u'1'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'normal04', u'minOccurs': u'1'}, None),
-        MemberSpec_('fixed03', 'xs:float', 0, 0, {u'fixed': u'23.45', u'type': u'xs:float', u'name': u'fixed03', u'minOccurs': u'1'}, None),
-        MemberSpec_('fixed04', 'xs:double', 0, 0, {u'fixed': u'54.32', u'type': u'xs:double', u'name': u'fixed04', u'minOccurs': u'1'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 1, {'name': 'normal01', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 1, {'name': 'normal02', 'type': 'xs:string', 'minOccurs': '0'}, None),
+        MemberSpec_('fixed01', 'xs:integer', 0, 1, {'name': 'fixed01', 'type': 'xs:integer', 'fixed': '23', 'minOccurs': '0'}, None),
+        MemberSpec_('fixed02', 'xs:string', 0, 1, {'name': 'fixed02', 'type': 'xs:string', 'fixed': 'Peach', 'minOccurs': '0'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 0, {'name': 'normal03', 'type': 'xs:float', 'minOccurs': '1'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 0, {'name': 'normal04', 'type': 'xs:double', 'minOccurs': '1'}, None),
+        MemberSpec_('fixed03', 'xs:float', 0, 0, {'name': 'fixed03', 'type': 'xs:float', 'fixed': '23.45', 'minOccurs': '1'}, None),
+        MemberSpec_('fixed04', 'xs:double', 0, 0, {'name': 'fixed04', 'type': 'xs:double', 'fixed': '54.32', 'minOccurs': '1'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/defaults_cases_always1_sub.py b/tests/defaults_cases_always1_sub.py
index ed21b92..208d50c 100644
--- a/tests/defaults_cases_always1_sub.py
+++ b/tests/defaults_cases_always1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_cases_always1_sup.py b/tests/defaults_cases_always1_sup.py
index 336bd86..400884b 100644
--- a/tests/defaults_cases_always1_sup.py
+++ b/tests/defaults_cases_always1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,8 +730,8 @@ def _cast(typ, value):
 
 class DefaultTypes(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default1', 'DefaultType1', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType1', u'name': u'default1'}, None),
-        MemberSpec_('default2', 'DefaultType2', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType2', u'name': u'default2'}, None),
+        MemberSpec_('default1', 'DefaultType1', 1, 0, {'name': 'default1', 'type': 'DefaultType1', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('default2', 'DefaultType2', 1, 0, {'name': 'default2', 'type': 'DefaultType2', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -831,14 +831,14 @@ class DefaultTypes(GeneratedsSuper):
 
 class DefaultType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('normal01', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'normal01', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 1, {u'type': u'xs:string', u'name': u'normal02', u'minOccurs': u'0'}, None),
-        MemberSpec_('default01', 'xs:integer', 0, 1, {u'default': u'23', u'type': u'xs:integer', u'name': u'default01', u'minOccurs': u'0'}, None),
-        MemberSpec_('default02', 'xs:string', 0, 1, {u'default': u'Peach', u'type': u'xs:string', u'name': u'default02', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'normal03', u'minOccurs': u'1'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'normal04', u'minOccurs': u'1'}, None),
-        MemberSpec_('default03', 'xs:float', 0, 0, {u'default': u'23.45', u'type': u'xs:float', u'name': u'default03', u'minOccurs': u'1'}, None),
-        MemberSpec_('default04', 'xs:double', 0, 0, {u'default': u'54.32', u'type': u'xs:double', u'name': u'default04', u'minOccurs': u'1'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 1, {'name': 'normal01', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 1, {'name': 'normal02', 'type': 'xs:string', 'minOccurs': '0'}, None),
+        MemberSpec_('default01', 'xs:integer', 0, 1, {'name': 'default01', 'type': 'xs:integer', 'default': '23', 'minOccurs': '0'}, None),
+        MemberSpec_('default02', 'xs:string', 0, 1, {'name': 'default02', 'type': 'xs:string', 'default': 'Peach', 'minOccurs': '0'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 0, {'name': 'normal03', 'type': 'xs:float', 'minOccurs': '1'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 0, {'name': 'normal04', 'type': 'xs:double', 'minOccurs': '1'}, None),
+        MemberSpec_('default03', 'xs:float', 0, 0, {'name': 'default03', 'type': 'xs:float', 'default': '23.45', 'minOccurs': '1'}, None),
+        MemberSpec_('default04', 'xs:double', 0, 0, {'name': 'default04', 'type': 'xs:double', 'default': '54.32', 'minOccurs': '1'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/defaults_cases_always2_sub.py b/tests/defaults_cases_always2_sub.py
index ed21b92..208d50c 100644
--- a/tests/defaults_cases_always2_sub.py
+++ b/tests/defaults_cases_always2_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_cases_always2_sup.py b/tests/defaults_cases_always2_sup.py
index 336bd86..400884b 100644
--- a/tests/defaults_cases_always2_sup.py
+++ b/tests/defaults_cases_always2_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,8 +730,8 @@ def _cast(typ, value):
 
 class DefaultTypes(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default1', 'DefaultType1', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType1', u'name': u'default1'}, None),
-        MemberSpec_('default2', 'DefaultType2', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'DefaultType2', u'name': u'default2'}, None),
+        MemberSpec_('default1', 'DefaultType1', 1, 0, {'name': 'default1', 'type': 'DefaultType1', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('default2', 'DefaultType2', 1, 0, {'name': 'default2', 'type': 'DefaultType2', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -831,14 +831,14 @@ class DefaultTypes(GeneratedsSuper):
 
 class DefaultType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('normal01', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'normal01', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 1, {u'type': u'xs:string', u'name': u'normal02', u'minOccurs': u'0'}, None),
-        MemberSpec_('default01', 'xs:integer', 0, 1, {u'default': u'23', u'type': u'xs:integer', u'name': u'default01', u'minOccurs': u'0'}, None),
-        MemberSpec_('default02', 'xs:string', 0, 1, {u'default': u'Peach', u'type': u'xs:string', u'name': u'default02', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'normal03', u'minOccurs': u'1'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'normal04', u'minOccurs': u'1'}, None),
-        MemberSpec_('default03', 'xs:float', 0, 0, {u'default': u'23.45', u'type': u'xs:float', u'name': u'default03', u'minOccurs': u'1'}, None),
-        MemberSpec_('default04', 'xs:double', 0, 0, {u'default': u'54.32', u'type': u'xs:double', u'name': u'default04', u'minOccurs': u'1'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 1, {'name': 'normal01', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 1, {'name': 'normal02', 'type': 'xs:string', 'minOccurs': '0'}, None),
+        MemberSpec_('default01', 'xs:integer', 0, 1, {'name': 'default01', 'type': 'xs:integer', 'default': '23', 'minOccurs': '0'}, None),
+        MemberSpec_('default02', 'xs:string', 0, 1, {'name': 'default02', 'type': 'xs:string', 'default': 'Peach', 'minOccurs': '0'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 0, {'name': 'normal03', 'type': 'xs:float', 'minOccurs': '1'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 0, {'name': 'normal04', 'type': 'xs:double', 'minOccurs': '1'}, None),
+        MemberSpec_('default03', 'xs:float', 0, 0, {'name': 'default03', 'type': 'xs:float', 'default': '23.45', 'minOccurs': '1'}, None),
+        MemberSpec_('default04', 'xs:double', 0, 0, {'name': 'default04', 'type': 'xs:double', 'default': '54.32', 'minOccurs': '1'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/defaults_coverage1_sub.py b/tests/defaults_coverage1_sub.py
index d226c90..6d2a159 100644
--- a/tests/defaults_coverage1_sub.py
+++ b/tests/defaults_coverage1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/defaults_coverage1_sup.py b/tests/defaults_coverage1_sup.py
index 57b3741..e4c1eb7 100644
--- a/tests/defaults_coverage1_sup.py
+++ b/tests/defaults_coverage1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,8 +730,8 @@ def _cast(typ, value):
 
 class DefaultTypes(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default1', 'DefaultType1', 0, 0, {u'type': u'DefaultType1', u'name': u'default1'}, None),
-        MemberSpec_('default2', 'DefaultType2', 0, 0, {u'type': u'DefaultType2', u'name': u'default2'}, None),
+        MemberSpec_('default1', 'DefaultType1', 0, 0, {'name': 'default1', 'type': 'DefaultType1'}, None),
+        MemberSpec_('default2', 'DefaultType2', 0, 0, {'name': 'default2', 'type': 'DefaultType2'}, None),
     ]
     subclass = None
     superclass = None
@@ -819,23 +819,23 @@ class DefaultTypes(GeneratedsSuper):
 
 class DefaultType1(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default01', 'xs:integer', 0, 1, {u'default': u'23', u'type': u'xs:integer', u'name': u'default01', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal01', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'normal01', u'minOccurs': u'0'}, None),
-        MemberSpec_('default02', 'xs:string', 0, 1, {u'default': u'Peach', u'type': u'xs:string', u'name': u'default02', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 1, {u'type': u'xs:string', u'name': u'normal02', u'minOccurs': u'0'}, None),
-        MemberSpec_('default03', 'xs:float', 0, 1, {u'default': u'23.45', u'type': u'xs:float', u'name': u'default03', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 1, {u'type': u'xs:float', u'name': u'normal03', u'minOccurs': u'0'}, None),
-        MemberSpec_('default04', 'xs:double', 0, 1, {u'default': u'54.32', u'type': u'xs:double', u'name': u'default04', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 1, {u'type': u'xs:double', u'name': u'normal04', u'minOccurs': u'0'}, None),
-        MemberSpec_('default05a', 'xs:boolean', 0, 1, {u'default': u'true', u'type': u'xs:boolean', u'name': u'default05a', u'minOccurs': u'0'}, None),
-        MemberSpec_('default05b', 'xs:boolean', 0, 1, {u'default': u'false', u'type': u'xs:boolean', u'name': u'default05b', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal05', 'xs:boolean', 0, 1, {u'type': u'xs:boolean', u'name': u'normal05', u'minOccurs': u'0'}, None),
-        MemberSpec_('default06', 'xs:date', 0, 1, {u'default': u'2015-06-21', u'type': u'xs:date', u'name': u'default06', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal06', 'xs:date', 0, 1, {u'type': u'xs:date', u'name': u'normal06', u'minOccurs': u'0'}, None),
-        MemberSpec_('default07', 'xs:time', 0, 1, {u'default': u'11:10:09', u'type': u'xs:time', u'name': u'default07', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal07', 'xs:date', 0, 1, {u'type': u'xs:date', u'name': u'normal07', u'minOccurs': u'0'}, None),
-        MemberSpec_('default08', 'xs:dateTime', 0, 1, {u'default': u'2015-06-21T14:13:12', u'type': u'xs:dateTime', u'name': u'default08', u'minOccurs': u'0'}, None),
-        MemberSpec_('normal08', 'xs:dateTime', 0, 1, {u'type': u'xs:dateTime', u'name': u'normal08', u'minOccurs': u'0'}, None),
+        MemberSpec_('default01', 'xs:integer', 0, 1, {'name': 'default01', 'type': 'xs:integer', 'default': '23', 'minOccurs': '0'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 1, {'name': 'normal01', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('default02', 'xs:string', 0, 1, {'name': 'default02', 'type': 'xs:string', 'default': 'Peach', 'minOccurs': '0'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 1, {'name': 'normal02', 'type': 'xs:string', 'minOccurs': '0'}, None),
+        MemberSpec_('default03', 'xs:float', 0, 1, {'name': 'default03', 'type': 'xs:float', 'default': '23.45', 'minOccurs': '0'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 1, {'name': 'normal03', 'type': 'xs:float', 'minOccurs': '0'}, None),
+        MemberSpec_('default04', 'xs:double', 0, 1, {'name': 'default04', 'type': 'xs:double', 'default': '54.32', 'minOccurs': '0'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 1, {'name': 'normal04', 'type': 'xs:double', 'minOccurs': '0'}, None),
+        MemberSpec_('default05a', 'xs:boolean', 0, 1, {'name': 'default05a', 'type': 'xs:boolean', 'default': 'true', 'minOccurs': '0'}, None),
+        MemberSpec_('default05b', 'xs:boolean', 0, 1, {'name': 'default05b', 'type': 'xs:boolean', 'default': 'false', 'minOccurs': '0'}, None),
+        MemberSpec_('normal05', 'xs:boolean', 0, 1, {'name': 'normal05', 'type': 'xs:boolean', 'minOccurs': '0'}, None),
+        MemberSpec_('default06', 'xs:date', 0, 1, {'name': 'default06', 'type': 'xs:date', 'default': '2015-06-21', 'minOccurs': '0'}, None),
+        MemberSpec_('normal06', 'xs:date', 0, 1, {'name': 'normal06', 'type': 'xs:date', 'minOccurs': '0'}, None),
+        MemberSpec_('default07', 'xs:time', 0, 1, {'name': 'default07', 'type': 'xs:time', 'default': '11:10:09', 'minOccurs': '0'}, None),
+        MemberSpec_('normal07', 'xs:date', 0, 1, {'name': 'normal07', 'type': 'xs:date', 'minOccurs': '0'}, None),
+        MemberSpec_('default08', 'xs:dateTime', 0, 1, {'name': 'default08', 'type': 'xs:dateTime', 'default': '2015-06-21T14:13:12', 'minOccurs': '0'}, None),
+        MemberSpec_('normal08', 'xs:dateTime', 0, 1, {'name': 'normal08', 'type': 'xs:dateTime', 'minOccurs': '0'}, None),
     ]
     subclass = None
     superclass = None
@@ -1154,23 +1154,23 @@ class DefaultType1(GeneratedsSuper):
 
 class DefaultType2(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('default01', 'xs:integer', 0, 0, {u'default': u'23', u'type': u'xs:integer', u'name': u'default01'}, None),
-        MemberSpec_('normal01', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'normal01'}, None),
-        MemberSpec_('default02', 'xs:string', 0, 0, {u'default': u'Peach', u'type': u'xs:string', u'name': u'default02'}, None),
-        MemberSpec_('normal02', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'normal02'}, None),
-        MemberSpec_('default03', 'xs:float', 0, 0, {u'default': u'23.45', u'type': u'xs:float', u'name': u'default03'}, None),
-        MemberSpec_('normal03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'normal03'}, None),
-        MemberSpec_('default04', 'xs:double', 0, 0, {u'default': u'54.32', u'type': u'xs:double', u'name': u'default04'}, None),
-        MemberSpec_('normal04', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'normal04'}, None),
-        MemberSpec_('default05a', 'xs:boolean', 0, 0, {u'default': u'true', u'type': u'xs:boolean', u'name': u'default05a'}, None),
-        MemberSpec_('default05b', 'xs:boolean', 0, 0, {u'default': u'false', u'type': u'xs:boolean', u'name': u'default05b'}, None),
-        MemberSpec_('normal05', 'xs:boolean', 0, 0, {u'type': u'xs:boolean', u'name': u'normal05'}, None),
-        MemberSpec_('default06', 'xs:date', 0, 0, {u'default': u'2015-06-21', u'type': u'xs:date', u'name': u'default06'}, None),
-        MemberSpec_('normal06', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'normal06'}, None),
-        MemberSpec_('default07', 'xs:time', 0, 0, {u'default': u'11:10:09', u'type': u'xs:time', u'name': u'default07'}, None),
-        MemberSpec_('normal07', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'normal07'}, None),
-        MemberSpec_('default08', 'xs:dateTime', 0, 0, {u'default': u'2015-06-21T14:13:12', u'type': u'xs:dateTime', u'name': u'default08'}, None),
-        MemberSpec_('normal08', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'normal08'}, None),
+        MemberSpec_('default01', 'xs:integer', 0, 0, {'name': 'default01', 'type': 'xs:integer', 'default': '23'}, None),
+        MemberSpec_('normal01', 'xs:integer', 0, 0, {'name': 'normal01', 'type': 'xs:integer'}, None),
+        MemberSpec_('default02', 'xs:string', 0, 0, {'name': 'default02', 'type': 'xs:string', 'default': 'Peach'}, None),
+        MemberSpec_('normal02', 'xs:string', 0, 0, {'name': 'normal02', 'type': 'xs:string'}, None),
+        MemberSpec_('default03', 'xs:float', 0, 0, {'name': 'default03', 'type': 'xs:float', 'default': '23.45'}, None),
+        MemberSpec_('normal03', 'xs:float', 0, 0, {'name': 'normal03', 'type': 'xs:float'}, None),
+        MemberSpec_('default04', 'xs:double', 0, 0, {'name': 'default04', 'type': 'xs:double', 'default': '54.32'}, None),
+        MemberSpec_('normal04', 'xs:double', 0, 0, {'name': 'normal04', 'type': 'xs:double'}, None),
+        MemberSpec_('default05a', 'xs:boolean', 0, 0, {'name': 'default05a', 'type': 'xs:boolean', 'default': 'true'}, None),
+        MemberSpec_('default05b', 'xs:boolean', 0, 0, {'name': 'default05b', 'type': 'xs:boolean', 'default': 'false'}, None),
+        MemberSpec_('normal05', 'xs:boolean', 0, 0, {'name': 'normal05', 'type': 'xs:boolean'}, None),
+        MemberSpec_('default06', 'xs:date', 0, 0, {'name': 'default06', 'type': 'xs:date', 'default': '2015-06-21'}, None),
+        MemberSpec_('normal06', 'xs:date', 0, 0, {'name': 'normal06', 'type': 'xs:date'}, None),
+        MemberSpec_('default07', 'xs:time', 0, 0, {'name': 'default07', 'type': 'xs:time', 'default': '11:10:09'}, None),
+        MemberSpec_('normal07', 'xs:date', 0, 0, {'name': 'normal07', 'type': 'xs:date'}, None),
+        MemberSpec_('default08', 'xs:dateTime', 0, 0, {'name': 'default08', 'type': 'xs:dateTime', 'default': '2015-06-21T14:13:12'}, None),
+        MemberSpec_('normal08', 'xs:dateTime', 0, 0, {'name': 'normal08', 'type': 'xs:dateTime'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/disable_xml_super1_sub.py b/tests/disable_xml_super1_sub.py
index 979831c..71d10bc 100644
--- a/tests/disable_xml_super1_sub.py
+++ b/tests/disable_xml_super1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/disable_xml_super1_sup.py b/tests/disable_xml_super1_sup.py
index 72e0e94..ba27ded 100644
--- a/tests/disable_xml_super1_sup.py
+++ b/tests/disable_xml_super1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ class GeneratedsSuper(object):
         return None
     @classmethod
     def gds_reverse_node_mapping(cls, mapping):
-        return dict(((v, k) for k, v in mapping.iteritems()))
+        return dict(((v, k) for k, v in mapping.items()))
     @staticmethod
     def gds_encode(instring):
         if sys.version_info.major == 2:
@@ -730,7 +730,7 @@ def _cast(typ, value):
 
 class PackageType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('Address', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'Address', u'minOccurs': u'0'}, None),
+        MemberSpec_('Address', 'xs:string', 1, 1, {'name': 'Address', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/extensions1_sub.py b/tests/extensions1_sub.py
index 9d97ad5..4525d83 100644
--- a/tests/extensions1_sub.py
+++ b/tests/extensions1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py
index c26096a..72bc707 100644
--- a/tests/extensions1_sup.py
+++ b/tests/extensions1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -979,8 +979,8 @@ class singleExtremeDate(GeneratedsSuper):
 
 class containerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simplefactoid', 'simpleFactoidType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleFactoidType', u'name': u'simplefactoid'}, None),
-        MemberSpec_('mixedfactoid', 'mixedFactoidType', 0, 0, {u'type': u'mixedFactoidType', u'name': u'mixedfactoid'}, None),
+        MemberSpec_('simplefactoid', 'simpleFactoidType', 1, 0, {'name': 'simplefactoid', 'type': 'simpleFactoidType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('mixedfactoid', 'mixedFactoidType', 0, 0, {'name': 'mixedfactoid', 'type': 'mixedFactoidType'}, None),
     ]
     subclass = None
     superclass = None
@@ -1074,7 +1074,7 @@ class containerType(GeneratedsSuper):
 
 class simpleFactoidType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('relation', ['RelationType', 'RelationType2', 'RelationType3', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'relation'}, None),
+        MemberSpec_('relation', ['RelationType', 'RelationType2', 'RelationType3', 'xs:string'], 0, 0, {'name': 'relation', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1184,7 +1184,7 @@ class simpleFactoidType(GeneratedsSuper):
 
 class mixedFactoidType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('relation', ['RelationType', 'RelationType2', 'RelationType3', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'relation'}, None),
+        MemberSpec_('relation', ['RelationType', 'RelationType2', 'RelationType3', 'xs:string'], 0, 0, {'name': 'relation', 'type': 'xs:string'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
diff --git a/tests/ipo1_sub.py b/tests/ipo1_sub.py
index 708a162..73d91e1 100644
--- a/tests/ipo1_sub.py
+++ b/tests/ipo1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py
index 2fca052..a76bef7 100644
--- a/tests/ipo1_sup.py
+++ b/tests/ipo1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,10 +737,10 @@ class USState(object):
 class PurchaseOrderType(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('orderDate', 'date', 0, 1, {'use': 'optional'}),
-        MemberSpec_('shipTo', 'Address', 0, 0, {u'type': u'Address', u'name': u'shipTo'}, None),
-        MemberSpec_('billTo', 'Address', 0, 0, {u'type': u'Address', u'name': u'billTo'}, None),
-        MemberSpec_('comment', 'string', 0, 1, {'type': u'string', u'ref': u'comment', 'name': u'comment', u'minOccurs': u'0'}, None),
-        MemberSpec_('items', 'Items', 0, 0, {u'type': u'Items', u'name': u'items'}, None),
+        MemberSpec_('shipTo', 'Address', 0, 0, {'name': 'shipTo', 'type': 'Address'}, None),
+        MemberSpec_('billTo', 'Address', 0, 0, {'name': 'billTo', 'type': 'Address'}, None),
+        MemberSpec_('comment', 'string', 0, 1, {'ref': 'comment', 'minOccurs': '0', 'name': 'comment', 'type': 'string'}, None),
+        MemberSpec_('items', 'Items', 0, 0, {'name': 'items', 'type': 'Items'}, None),
     ]
     subclass = None
     superclass = None
@@ -867,7 +867,7 @@ class PurchaseOrderType(GeneratedsSuper):
 
 class Items(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('item', 'item', 1, 1, {u'maxOccurs': u'unbounded', 'type': u'item', u'name': u'item', u'minOccurs': u'0'}, None),
+        MemberSpec_('item', 'item', 1, 1, {'name': 'item', 'minOccurs': '0', 'maxOccurs': 'unbounded', 'type': 'item'}, None),
     ]
     subclass = None
     superclass = None
@@ -950,12 +950,12 @@ class Items(GeneratedsSuper):
 
 class item(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('partNum', 'ipo:SKU', 0, 0, {'use': u'required'}),
-        MemberSpec_('productName', 'string', 0, 0, {u'type': u'string', u'name': u'productName'}, None),
-        MemberSpec_('quantity', ['quantity', 'positiveInteger'], 0, 0, {'type': u'positiveInteger', u'name': u'quantity'}, None),
-        MemberSpec_('USPrice', 'decimal', 0, 0, {u'type': u'decimal', u'name': u'USPrice'}, None),
-        MemberSpec_('comment', 'string', 0, 1, {'type': u'string', u'ref': u'comment', 'name': u'comment', u'minOccurs': u'0'}, None),
-        MemberSpec_('shipDate', 'date', 0, 1, {u'type': u'date', u'name': u'shipDate', u'minOccurs': u'0'}, None),
+        MemberSpec_('partNum', 'ipo:SKU', 0, 0, {'use': 'required'}),
+        MemberSpec_('productName', 'string', 0, 0, {'name': 'productName', 'type': 'string'}, None),
+        MemberSpec_('quantity', ['quantity', 'positiveInteger'], 0, 0, {'name': 'quantity', 'type': 'positiveInteger'}, None),
+        MemberSpec_('USPrice', 'decimal', 0, 0, {'name': 'USPrice', 'type': 'decimal'}, None),
+        MemberSpec_('comment', 'string', 0, 1, {'ref': 'comment', 'minOccurs': '0', 'name': 'comment', 'type': 'string'}, None),
+        MemberSpec_('shipDate', 'date', 0, 1, {'name': 'shipDate', 'type': 'date', 'minOccurs': '0'}, None),
     ]
     subclass = None
     superclass = None
@@ -1162,9 +1162,9 @@ class quantity(GeneratedsSuper):
 
 class Address(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('name', 'string', 0, 0, {u'type': u'string', u'name': u'name'}, None),
-        MemberSpec_('street', 'string', 0, 0, {u'type': u'string', u'name': u'street'}, None),
-        MemberSpec_('city', 'string', 0, 0, {u'type': u'string', u'name': u'city'}, None),
+        MemberSpec_('name', 'string', 0, 0, {'name': 'name', 'type': 'string'}, None),
+        MemberSpec_('street', 'string', 0, 0, {'name': 'street', 'type': 'string'}, None),
+        MemberSpec_('city', 'string', 0, 0, {'name': 'city', 'type': 'string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1273,8 +1273,8 @@ class Address(GeneratedsSuper):
 
 class USAddress(Address):
     member_data_items_ = [
-        MemberSpec_('state', ['USState', 'string'], 0, 0, {u'type': u'string', u'name': u'state'}, None),
-        MemberSpec_('zip', 'positiveInteger', 0, 0, {u'type': u'positiveInteger', u'name': u'zip'}, None),
+        MemberSpec_('state', ['USState', 'string'], 0, 0, {'name': 'state', 'type': 'string'}, None),
+        MemberSpec_('zip', 'positiveInteger', 0, 0, {'name': 'zip', 'type': 'positiveInteger'}, None),
     ]
     subclass = None
     superclass = Address
@@ -1388,7 +1388,7 @@ class USAddress(Address):
 class UKAddress(Address):
     member_data_items_ = [
         MemberSpec_('exportCode', 'positiveInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('postcode', 'string', 0, 0, {u'type': 'string', u'name': u'postcode'}, None),
+        MemberSpec_('postcode', 'string', 0, 0, {'name': 'postcode', 'type': 'string'}, None),
     ]
     subclass = None
     superclass = Address
diff --git a/tests/ipo2_sub.py b/tests/ipo2_sub.py
index 708a162..73d91e1 100644
--- a/tests/ipo2_sub.py
+++ b/tests/ipo2_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py
index 2fca052..a76bef7 100644
--- a/tests/ipo2_sup.py
+++ b/tests/ipo2_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,10 +737,10 @@ class USState(object):
 class PurchaseOrderType(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('orderDate', 'date', 0, 1, {'use': 'optional'}),
-        MemberSpec_('shipTo', 'Address', 0, 0, {u'type': u'Address', u'name': u'shipTo'}, None),
-        MemberSpec_('billTo', 'Address', 0, 0, {u'type': u'Address', u'name': u'billTo'}, None),
-        MemberSpec_('comment', 'string', 0, 1, {'type': u'string', u'ref': u'comment', 'name': u'comment', u'minOccurs': u'0'}, None),
-        MemberSpec_('items', 'Items', 0, 0, {u'type': u'Items', u'name': u'items'}, None),
+        MemberSpec_('shipTo', 'Address', 0, 0, {'name': 'shipTo', 'type': 'Address'}, None),
+        MemberSpec_('billTo', 'Address', 0, 0, {'name': 'billTo', 'type': 'Address'}, None),
+        MemberSpec_('comment', 'string', 0, 1, {'ref': 'comment', 'minOccurs': '0', 'name': 'comment', 'type': 'string'}, None),
+        MemberSpec_('items', 'Items', 0, 0, {'name': 'items', 'type': 'Items'}, None),
     ]
     subclass = None
     superclass = None
@@ -867,7 +867,7 @@ class PurchaseOrderType(GeneratedsSuper):
 
 class Items(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('item', 'item', 1, 1, {u'maxOccurs': u'unbounded', 'type': u'item', u'name': u'item', u'minOccurs': u'0'}, None),
+        MemberSpec_('item', 'item', 1, 1, {'name': 'item', 'minOccurs': '0', 'maxOccurs': 'unbounded', 'type': 'item'}, None),
     ]
     subclass = None
     superclass = None
@@ -950,12 +950,12 @@ class Items(GeneratedsSuper):
 
 class item(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('partNum', 'ipo:SKU', 0, 0, {'use': u'required'}),
-        MemberSpec_('productName', 'string', 0, 0, {u'type': u'string', u'name': u'productName'}, None),
-        MemberSpec_('quantity', ['quantity', 'positiveInteger'], 0, 0, {'type': u'positiveInteger', u'name': u'quantity'}, None),
-        MemberSpec_('USPrice', 'decimal', 0, 0, {u'type': u'decimal', u'name': u'USPrice'}, None),
-        MemberSpec_('comment', 'string', 0, 1, {'type': u'string', u'ref': u'comment', 'name': u'comment', u'minOccurs': u'0'}, None),
-        MemberSpec_('shipDate', 'date', 0, 1, {u'type': u'date', u'name': u'shipDate', u'minOccurs': u'0'}, None),
+        MemberSpec_('partNum', 'ipo:SKU', 0, 0, {'use': 'required'}),
+        MemberSpec_('productName', 'string', 0, 0, {'name': 'productName', 'type': 'string'}, None),
+        MemberSpec_('quantity', ['quantity', 'positiveInteger'], 0, 0, {'name': 'quantity', 'type': 'positiveInteger'}, None),
+        MemberSpec_('USPrice', 'decimal', 0, 0, {'name': 'USPrice', 'type': 'decimal'}, None),
+        MemberSpec_('comment', 'string', 0, 1, {'ref': 'comment', 'minOccurs': '0', 'name': 'comment', 'type': 'string'}, None),
+        MemberSpec_('shipDate', 'date', 0, 1, {'name': 'shipDate', 'type': 'date', 'minOccurs': '0'}, None),
     ]
     subclass = None
     superclass = None
@@ -1162,9 +1162,9 @@ class quantity(GeneratedsSuper):
 
 class Address(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('name', 'string', 0, 0, {u'type': u'string', u'name': u'name'}, None),
-        MemberSpec_('street', 'string', 0, 0, {u'type': u'string', u'name': u'street'}, None),
-        MemberSpec_('city', 'string', 0, 0, {u'type': u'string', u'name': u'city'}, None),
+        MemberSpec_('name', 'string', 0, 0, {'name': 'name', 'type': 'string'}, None),
+        MemberSpec_('street', 'string', 0, 0, {'name': 'street', 'type': 'string'}, None),
+        MemberSpec_('city', 'string', 0, 0, {'name': 'city', 'type': 'string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1273,8 +1273,8 @@ class Address(GeneratedsSuper):
 
 class USAddress(Address):
     member_data_items_ = [
-        MemberSpec_('state', ['USState', 'string'], 0, 0, {u'type': u'string', u'name': u'state'}, None),
-        MemberSpec_('zip', 'positiveInteger', 0, 0, {u'type': u'positiveInteger', u'name': u'zip'}, None),
+        MemberSpec_('state', ['USState', 'string'], 0, 0, {'name': 'state', 'type': 'string'}, None),
+        MemberSpec_('zip', 'positiveInteger', 0, 0, {'name': 'zip', 'type': 'positiveInteger'}, None),
     ]
     subclass = None
     superclass = Address
@@ -1388,7 +1388,7 @@ class USAddress(Address):
 class UKAddress(Address):
     member_data_items_ = [
         MemberSpec_('exportCode', 'positiveInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('postcode', 'string', 0, 0, {u'type': 'string', u'name': u'postcode'}, None),
+        MemberSpec_('postcode', 'string', 0, 0, {'name': 'postcode', 'type': 'string'}, None),
     ]
     subclass = None
     superclass = Address
diff --git a/tests/mapcleanname1_sub.py b/tests/mapcleanname1_sub.py
index 5d22096..ccf6f08 100644
--- a/tests/mapcleanname1_sub.py
+++ b/tests/mapcleanname1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/mapcleanname1_sup.py b/tests/mapcleanname1_sup.py
index 6cc5905..7cde1fe 100644
--- a/tests/mapcleanname1_sup.py
+++ b/tests/mapcleanname1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,10 +730,10 @@ def _cast(typ, value):
 
 class complex_type01(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('string_value01', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value01'}, None),
-        MemberSpec_('integer_value01', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value01', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value01', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value01'}, None),
-        MemberSpec_('field01', 'complex-type02', 0, 0, {u'type': u'complex-type02', u'name': u'field01'}, None),
+        MemberSpec_('string_value01', 'xs:string', 0, 0, {'name': 'string_value01', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value01', 'xs:integer', 1, 1, {'name': 'integer_value01', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value01', 'xs:float', 0, 0, {'name': 'float_value01', 'type': 'xs:float'}, None),
+        MemberSpec_('field01', 'complex-type02', 0, 0, {'name': 'field01', 'type': 'complex-type02'}, None),
     ]
     subclass = None
     superclass = None
@@ -857,9 +857,9 @@ class complex_type01(GeneratedsSuper):
 
 class complex_type02(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('string_value02', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value02'}, None),
-        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value02', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value02', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value02'}, None),
+        MemberSpec_('string_value02', 'xs:string', 0, 0, {'name': 'string_value02', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {'name': 'integer_value02', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value02', 'xs:float', 0, 0, {'name': 'float_value02', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = None
@@ -982,9 +982,9 @@ class complex_type02(GeneratedsSuper):
 
 class complex_type03(complex_type02):
     member_data_items_ = [
-        MemberSpec_('string_value03', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value03'}, None),
-        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value03', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value03'}, None),
+        MemberSpec_('string_value03', 'xs:string', 0, 0, {'name': 'string_value03', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {'name': 'integer_value03', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value03', 'xs:float', 0, 0, {'name': 'float_value03', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = complex_type02
@@ -1101,9 +1101,9 @@ class complex_type03(complex_type02):
 
 class type_(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('string_value02', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value02'}, None),
-        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value02', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value02', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value02'}, None),
+        MemberSpec_('string_value02', 'xs:string', 0, 0, {'name': 'string_value02', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {'name': 'integer_value02', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value02', 'xs:float', 0, 0, {'name': 'float_value02', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = None
@@ -1226,9 +1226,9 @@ class type_(GeneratedsSuper):
 
 class complex_type04(type_):
     member_data_items_ = [
-        MemberSpec_('string_value03', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value03'}, None),
-        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value03', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value03'}, None),
+        MemberSpec_('string_value03', 'xs:string', 0, 0, {'name': 'string_value03', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {'name': 'integer_value03', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value03', 'xs:float', 0, 0, {'name': 'float_value03', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = type_
@@ -1345,9 +1345,9 @@ class complex_type04(type_):
 
 class build_(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('string_value02', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value02'}, None),
-        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value02', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value02', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value02'}, None),
+        MemberSpec_('string_value02', 'xs:string', 0, 0, {'name': 'string_value02', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value02', 'xs:integer', 1, 1, {'name': 'integer_value02', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value02', 'xs:float', 0, 0, {'name': 'float_value02', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = None
@@ -1470,9 +1470,9 @@ class build_(GeneratedsSuper):
 
 class complex_type05(build_):
     member_data_items_ = [
-        MemberSpec_('string_value03', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'string_value03'}, None),
-        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integer_value03', u'minOccurs': u'0'}, None),
-        MemberSpec_('float_value03', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'float_value03'}, None),
+        MemberSpec_('string_value03', 'xs:string', 0, 0, {'name': 'string_value03', 'type': 'xs:string'}, None),
+        MemberSpec_('integer_value03', 'xs:integer', 1, 1, {'name': 'integer_value03', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('float_value03', 'xs:float', 0, 0, {'name': 'float_value03', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = build_
diff --git a/tests/mixedcontent1_sub.py b/tests/mixedcontent1_sub.py
index 86f0a36..fd6dc09 100644
--- a/tests/mixedcontent1_sub.py
+++ b/tests/mixedcontent1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/mixedcontent1_sup.py b/tests/mixedcontent1_sup.py
index 50da494..0474ea1 100644
--- a/tests/mixedcontent1_sup.py
+++ b/tests/mixedcontent1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -729,7 +729,7 @@ def _cast(typ, value):
 
 class rootType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('markup', 'markupType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'markupType', u'name': u'markup'}, None),
+        MemberSpec_('markup', 'markupType', 1, 0, {'name': 'markup', 'type': 'markupType', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -812,8 +812,8 @@ class rootType(GeneratedsSuper):
 
 class markupType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('embedded', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'embedded', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested', 'nestedType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nestedType', u'name': u'nested', u'minOccurs': u'0'}, None),
+        MemberSpec_('embedded', 'xs:string', 1, 1, {'name': 'embedded', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested', 'nestedType', 1, 1, {'name': 'nested', 'type': 'nestedType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -945,9 +945,9 @@ class markupType(GeneratedsSuper):
 
 class nestedType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nested1', 'nested1Type', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1Type', u'name': u'nested1', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested2', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nested2', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested3', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'nested3', u'minOccurs': u'0'}, None),
+        MemberSpec_('nested1', 'nested1Type', 1, 1, {'name': 'nested1', 'type': 'nested1Type', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested2', 'xs:string', 1, 1, {'name': 'nested2', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested3', 'xs:integer', 1, 1, {'name': 'nested3', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -1068,8 +1068,8 @@ class nestedType(GeneratedsSuper):
 
 class nested1Type(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nestedA1', 'nested1AType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1AType', u'name': u'nestedA1', u'minOccurs': u'0'}, None),
-        MemberSpec_('nestedA2', 'nested1AType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1AType', u'name': u'nestedA2', u'minOccurs': u'0'}, None),
+        MemberSpec_('nestedA1', 'nested1AType', 1, 1, {'name': 'nestedA1', 'type': 'nested1AType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nestedA2', 'nested1AType', 1, 1, {'name': 'nestedA2', 'type': 'nested1AType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -1169,8 +1169,8 @@ class nested1Type(GeneratedsSuper):
 
 class nested1AType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nestedB1', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nestedB1'}, None),
-        MemberSpec_('nestedB2', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nestedB2'}, None),
+        MemberSpec_('nestedB1', 'xs:string', 1, 0, {'name': 'nestedB1', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nestedB2', 'xs:string', 1, 0, {'name': 'nestedB2', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/mixedcontent2_sub.py b/tests/mixedcontent2_sub.py
index 86f0a36..fd6dc09 100644
--- a/tests/mixedcontent2_sub.py
+++ b/tests/mixedcontent2_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/mixedcontent2_sup.py b/tests/mixedcontent2_sup.py
index 50da494..0474ea1 100644
--- a/tests/mixedcontent2_sup.py
+++ b/tests/mixedcontent2_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -729,7 +729,7 @@ def _cast(typ, value):
 
 class rootType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('markup', 'markupType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'markupType', u'name': u'markup'}, None),
+        MemberSpec_('markup', 'markupType', 1, 0, {'name': 'markup', 'type': 'markupType', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -812,8 +812,8 @@ class rootType(GeneratedsSuper):
 
 class markupType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('embedded', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'embedded', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested', 'nestedType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nestedType', u'name': u'nested', u'minOccurs': u'0'}, None),
+        MemberSpec_('embedded', 'xs:string', 1, 1, {'name': 'embedded', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested', 'nestedType', 1, 1, {'name': 'nested', 'type': 'nestedType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -945,9 +945,9 @@ class markupType(GeneratedsSuper):
 
 class nestedType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nested1', 'nested1Type', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1Type', u'name': u'nested1', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested2', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nested2', u'minOccurs': u'0'}, None),
-        MemberSpec_('nested3', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'nested3', u'minOccurs': u'0'}, None),
+        MemberSpec_('nested1', 'nested1Type', 1, 1, {'name': 'nested1', 'type': 'nested1Type', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested2', 'xs:string', 1, 1, {'name': 'nested2', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nested3', 'xs:integer', 1, 1, {'name': 'nested3', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -1068,8 +1068,8 @@ class nestedType(GeneratedsSuper):
 
 class nested1Type(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nestedA1', 'nested1AType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1AType', u'name': u'nestedA1', u'minOccurs': u'0'}, None),
-        MemberSpec_('nestedA2', 'nested1AType', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'nested1AType', u'name': u'nestedA2', u'minOccurs': u'0'}, None),
+        MemberSpec_('nestedA1', 'nested1AType', 1, 1, {'name': 'nestedA1', 'type': 'nested1AType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nestedA2', 'nested1AType', 1, 1, {'name': 'nestedA2', 'type': 'nested1AType', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -1169,8 +1169,8 @@ class nested1Type(GeneratedsSuper):
 
 class nested1AType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('nestedB1', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nestedB1'}, None),
-        MemberSpec_('nestedB2', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'nestedB2'}, None),
+        MemberSpec_('nestedB1', 'xs:string', 1, 0, {'name': 'nestedB1', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('nestedB2', 'xs:string', 1, 0, {'name': 'nestedB2', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/nested_def1_sub.py b/tests/nested_def1_sub.py
index 52d8852..d072ac4 100644
--- a/tests/nested_def1_sub.py
+++ b/tests/nested_def1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/nested_def1_sup.py b/tests/nested_def1_sup.py
index 5db145f..cebf677 100644
--- a/tests/nested_def1_sup.py
+++ b/tests/nested_def1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -402,7 +402,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -729,8 +729,8 @@ def _cast(typ, value):
 
 class containerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('item1', 'classAType', 0, 0, {u'type': u'classAType', u'name': u'item1'}, None),
-        MemberSpec_('item2', 'classBType', 0, 0, {u'type': u'classBType', u'name': u'item2'}, None),
+        MemberSpec_('item1', 'classAType', 0, 0, {'name': 'item1', 'type': 'classAType'}, None),
+        MemberSpec_('item2', 'classBType', 0, 0, {'name': 'item2', 'type': 'classBType'}, None),
     ]
     subclass = None
     superclass = None
@@ -818,7 +818,7 @@ class containerType(GeneratedsSuper):
 
 class classAType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('inner', 'innerType', 0, 0, {u'type': u'innerType', u'name': u'inner'}, None),
+        MemberSpec_('inner', 'innerType', 0, 0, {'name': 'inner', 'type': 'innerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -895,7 +895,7 @@ class classAType(GeneratedsSuper):
 
 class classBType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('inner', 'innerType1', 0, 0, {u'type': u'innerType1', u'name': u'inner'}, None),
+        MemberSpec_('inner', 'innerType1', 0, 0, {'name': 'inner', 'type': 'innerType1'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/no_namespace_defs1_sub.py b/tests/no_namespace_defs1_sub.py
index 50925f0..73ffb5a 100644
--- a/tests/no_namespace_defs1_sub.py
+++ b/tests/no_namespace_defs1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/no_namespace_defs1_sup.py b/tests/no_namespace_defs1_sup.py
index 001afd8..2e2b940 100644
--- a/tests/no_namespace_defs1_sup.py
+++ b/tests/no_namespace_defs1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ class GeneratedsSuper(object):
         return None
     @classmethod
     def gds_reverse_node_mapping(cls, mapping):
-        return dict(((v, k) for k, v in mapping.iteritems()))
+        return dict(((v, k) for k, v in mapping.items()))
     @staticmethod
     def gds_encode(instring):
         if sys.version_info.major == 2:
@@ -730,8 +730,8 @@ def _cast(typ, value):
 
 class peopleType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('person', 'personType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'personType', u'name': u'person'}, None),
-        MemberSpec_('specialperson', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'specialperson'}, None),
+        MemberSpec_('person', 'personType', 1, 0, {'name': 'person', 'maxOccurs': 'unbounded', 'type': 'personType'}, None),
+        MemberSpec_('specialperson', 'xs:string', 1, 0, {'name': 'specialperson', 'maxOccurs': 'unbounded', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -782,10 +782,10 @@ class personType(GeneratedsSuper):
         MemberSpec_('value', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('id', 'xs:integer', 0, 1, {'use': 'optional'}),
         MemberSpec_('ratio', 'xs:float', 0, 1, {'use': 'optional'}),
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('interest', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'interest'}, None),
-        MemberSpec_('category', 'xs:integer', 0, 1, {u'type': u'xs:integer', u'name': u'category', u'minOccurs': u'0'}, None),
-        MemberSpec_('description', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('interest', 'xs:string', 1, 0, {'name': 'interest', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('category', 'xs:integer', 0, 1, {'name': 'category', 'type': 'xs:integer', 'minOccurs': '0'}, None),
+        MemberSpec_('description', 'xs:string', 0, 0, {'name': 'description', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/out1_sub.py b/tests/out1_sub.py
index 2bbad95..46c3357 100644
--- a/tests/out1_sub.py
+++ b/tests/out1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/out1_sup.py b/tests/out1_sup.py
index 0068b57..92067c3 100644
--- a/tests/out1_sup.py
+++ b/tests/out1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,11 +737,11 @@ class ArrayTypes(object):
 
 class people(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('comments', 'comments', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'comments', u'name': u'comments'}, None),
-        MemberSpec_('person', 'person', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'person', u'name': u'person'}, None),
-        MemberSpec_('programmer', 'programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'programmer', u'name': u'programmer'}, None),
-        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'python-programmer', u'name': u'python-programmer'}, None),
-        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'java-programmer', u'name': u'java-programmer'}, None),
+        MemberSpec_('comments', 'comments', 1, 0, {'name': 'comments', 'type': 'comments', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('person', 'person', 1, 0, {'name': 'person', 'maxOccurs': 'unbounded', 'type': 'person'}, None),
+        MemberSpec_('programmer', 'programmer', 1, 0, {'name': 'programmer', 'maxOccurs': 'unbounded', 'type': 'programmer'}, None),
+        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {'name': 'python-programmer', 'maxOccurs': 'unbounded', 'type': 'python-programmer'}, None),
+        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {'name': 'java-programmer', 'maxOccurs': 'unbounded', 'type': 'java-programmer'}, None),
     ]
     subclass = None
     superclass = None
@@ -1014,7 +1014,7 @@ class people(GeneratedsSuper):
 
 class comments(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('emp', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'emp'}, None),
+        MemberSpec_('emp', 'xs:string', 1, 0, {'name': 'emp', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -1193,12 +1193,12 @@ class person(GeneratedsSuper):
         MemberSpec_('ratio', 'xs:float', 0, 1, {'use': 'optional'}),
         MemberSpec_('fruit', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('vegetable', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('interest', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'interest'}, None),
-        MemberSpec_('category', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'category'}, None),
-        MemberSpec_('agent', 'agent', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'agent', u'name': u'agent'}, None),
-        MemberSpec_('promoter', 'booster', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'booster', u'name': u'promoter'}, None),
-        MemberSpec_('description', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('interest', 'xs:string', 1, 0, {'name': 'interest', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('category', 'xs:integer', 0, 0, {'name': 'category', 'type': 'xs:integer'}, None),
+        MemberSpec_('agent', 'agent', 1, 0, {'name': 'agent', 'type': 'agent', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('promoter', 'booster', 1, 0, {'name': 'promoter', 'type': 'booster', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('description', 'xs:string', 0, 0, {'name': 'description', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1539,18 +1539,18 @@ class programmer(person):
         MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnegint', 'xs:negativeInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('email', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'email'}, None),
-        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {u'type': u'xs:positiveInteger', u'name': u'elposint'}, None),
-        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {u'type': u'xs:nonPositiveInteger', u'name': u'elnonposint'}, None),
-        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {u'type': u'xs:negativeInteger', u'name': u'elnegint'}, None),
-        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {u'type': u'xs:nonNegativeInteger', u'name': u'elnonnegint'}, None),
-        MemberSpec_('eldate', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'eldate'}, None),
-        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'eldatetime'}, None),
-        MemberSpec_('eltoken', 'xs:token', 0, 0, {u'type': u'xs:token', u'name': u'eltoken'}, None),
-        MemberSpec_('elshort', 'xs:short', 0, 0, {u'type': u'xs:short', u'name': u'elshort'}, None),
-        MemberSpec_('ellong', 'xs:long', 0, 0, {u'type': u'xs:long', u'name': u'ellong'}, None),
-        MemberSpec_('elparam', 'param', 0, 0, {u'type': u'param', u'name': u'elparam'}, None),
-        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'elarraytypes'}, None),
+        MemberSpec_('email', 'xs:string', 0, 0, {'name': 'email', 'type': 'xs:string'}, None),
+        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {'name': 'elposint', 'type': 'xs:positiveInteger'}, None),
+        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {'name': 'elnonposint', 'type': 'xs:nonPositiveInteger'}, None),
+        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {'name': 'elnegint', 'type': 'xs:negativeInteger'}, None),
+        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {'name': 'elnonnegint', 'type': 'xs:nonNegativeInteger'}, None),
+        MemberSpec_('eldate', 'xs:date', 0, 0, {'name': 'eldate', 'type': 'xs:date'}, None),
+        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {'name': 'eldatetime', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('eltoken', 'xs:token', 0, 0, {'name': 'eltoken', 'type': 'xs:token'}, None),
+        MemberSpec_('elshort', 'xs:short', 0, 0, {'name': 'elshort', 'type': 'xs:short'}, None),
+        MemberSpec_('ellong', 'xs:long', 0, 0, {'name': 'ellong', 'type': 'xs:long'}, None),
+        MemberSpec_('elparam', 'param', 0, 0, {'name': 'elparam', 'type': 'param'}, None),
+        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {'name': 'elarraytypes', 'type': 'xs:NMTOKEN'}, None),
     ]
     subclass = None
     superclass = person
@@ -2028,7 +2028,7 @@ class param(GeneratedsSuper):
         MemberSpec_('sid', 'xs:NCName', 0, 1, {'use': 'optional'}),
         MemberSpec_('flow', 'FlowType', 0, 1, {'use': 'optional'}),
         MemberSpec_('semantic', 'xs:token', 0, 1, {'use': 'optional'}),
-        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': u'required'}),
+        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': 'required'}),
         MemberSpec_('valueOf_', 'xs:string', 0),
     ]
     subclass = None
@@ -2239,7 +2239,7 @@ class param(GeneratedsSuper):
 class python_programmer(programmer):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = programmer
@@ -2395,7 +2395,7 @@ class java_programmer(programmer):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('status', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = programmer
@@ -2563,10 +2563,10 @@ class java_programmer(programmer):
 
 class agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
     ]
     subclass = None
     superclass = None
@@ -2750,10 +2750,10 @@ class agent(GeneratedsSuper):
 
 class special_agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
     ]
     subclass = None
     superclass = None
@@ -2937,13 +2937,13 @@ class special_agent(GeneratedsSuper):
 
 class booster(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('other_name', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'other-name'}, None),
-        MemberSpec_('class_', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'class'}, None),
-        MemberSpec_('other_value', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'other-value'}, None),
-        MemberSpec_('type_', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'type'}, None),
-        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'client-handlerType', u'name': u'client-handler'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('other_name', 'xs:float', 0, 0, {'name': 'other-name', 'type': 'xs:float'}, None),
+        MemberSpec_('class_', 'xs:float', 0, 0, {'name': 'class', 'type': 'xs:float'}, None),
+        MemberSpec_('other_value', 'xs:float', 1, 0, {'name': 'other-value', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('type_', 'xs:float', 1, 0, {'name': 'type', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {'name': 'client-handler', 'maxOccurs': 'unbounded', 'type': 'client-handlerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -3384,8 +3384,8 @@ class info(GeneratedsSuper):
 
 class client_handlerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('fullname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'fullname'}, None),
-        MemberSpec_('refid', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'refid'}, None),
+        MemberSpec_('fullname', 'xs:string', 0, 0, {'name': 'fullname', 'type': 'xs:string'}, None),
+        MemberSpec_('refid', 'xs:integer', 0, 0, {'name': 'refid', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/people_procincl1_sub.py b/tests/people_procincl1_sub.py
index a80091a..b42234b 100644
--- a/tests/people_procincl1_sub.py
+++ b/tests/people_procincl1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py
index 55b08cc..6128da9 100644
--- a/tests/people_procincl1_sup.py
+++ b/tests/people_procincl1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -738,12 +738,12 @@ class ArrayTypes(object):
 class people(GeneratedsSuper):
     """A list of people."""
     member_data_items_ = [
-        MemberSpec_('comments', 'comments', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'comments', u'name': u'comments'}, None),
-        MemberSpec_('person', 'person', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'person', u'name': u'person'}, None),
-        MemberSpec_('specialperson', 'specialperson', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'specialperson', u'name': u'specialperson'}, None),
-        MemberSpec_('programmer', 'programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'programmer', u'name': u'programmer'}, None),
-        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'python-programmer', u'name': u'python-programmer'}, None),
-        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'java-programmer', u'name': u'java-programmer'}, None),
+        MemberSpec_('comments', 'comments', 1, 0, {'name': 'comments', 'type': 'comments', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('person', 'person', 1, 0, {'name': 'person', 'maxOccurs': 'unbounded', 'type': 'person'}, None),
+        MemberSpec_('specialperson', 'specialperson', 1, 0, {'name': 'specialperson', 'maxOccurs': 'unbounded', 'type': 'specialperson'}, None),
+        MemberSpec_('programmer', 'programmer', 1, 0, {'name': 'programmer', 'maxOccurs': 'unbounded', 'type': 'programmer'}, None),
+        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {'name': 'python-programmer', 'maxOccurs': 'unbounded', 'type': 'python-programmer'}, None),
+        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {'name': 'java-programmer', 'maxOccurs': 'unbounded', 'type': 'java-programmer'}, None),
     ]
     subclass = None
     superclass = None
@@ -913,8 +913,8 @@ class people(GeneratedsSuper):
 
 class comments(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('emp', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'emp'}, None),
-        MemberSpec_('bold', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'bold'}, None),
+        MemberSpec_('emp', 'xs:string', 1, 0, {'name': 'emp', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('bold', 'xs:string', 1, 0, {'name': 'bold', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -1050,12 +1050,12 @@ class person(GeneratedsSuper):
         MemberSpec_('ratio', 'xs:float', 0, 1, {'use': 'optional'}),
         MemberSpec_('fruit', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('vegetable', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('interest', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'interest'}, None),
-        MemberSpec_('category', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'category'}, None),
-        MemberSpec_('agent', 'agent', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'agent', u'name': u'agent'}, None),
-        MemberSpec_('promoter', 'booster', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'booster', u'name': u'promoter'}, None),
-        MemberSpec_('description', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('interest', 'xs:string', 1, 0, {'name': 'interest', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('category', 'xs:integer', 0, 0, {'name': 'category', 'type': 'xs:integer'}, None),
+        MemberSpec_('agent', 'agent', 1, 0, {'name': 'agent', 'type': 'agent', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('promoter', 'booster', 1, 0, {'name': 'promoter', 'type': 'booster', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('description', 'xs:string', 0, 0, {'name': 'description', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1347,7 +1347,7 @@ class param(GeneratedsSuper):
         MemberSpec_('sid', 'xs:NCName', 0, 1, {'use': 'optional'}),
         MemberSpec_('flow', 'FlowType', 0, 1, {'use': 'optional'}),
         MemberSpec_('semantic', 'xs:token', 0, 1, {'use': 'optional'}),
-        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': u'required'}),
+        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': 'required'}),
         MemberSpec_('valueOf_', 'xs:string', 0),
     ]
     subclass = None
@@ -1476,11 +1476,11 @@ class param(GeneratedsSuper):
 
 class agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
-        MemberSpec_('vehicle', 'vehicle', 1, 1, {u'maxOccurs': u'unbounded', 'type': u'vehicle', u'ref': u'vehicle', 'name': u'vehicle', u'minOccurs': u'0'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
+        MemberSpec_('vehicle', 'vehicle', 1, 1, {'ref': 'vehicle', 'minOccurs': '0', 'maxOccurs': 'unbounded', 'name': 'vehicle', 'type': 'vehicle'}, None),
     ]
     subclass = None
     superclass = None
@@ -1627,10 +1627,10 @@ class special_agent(GeneratedsSuper):
     """This is a good kind of agent for testing the generation of Python
     bindings for an XML schema."""
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
     ]
     subclass = None
     superclass = None
@@ -1745,13 +1745,13 @@ class special_agent(GeneratedsSuper):
 class booster(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('member-id', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('other_name', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'other-name'}, None),
-        MemberSpec_('class_', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'class'}, None),
-        MemberSpec_('other_value', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'other-value'}, None),
-        MemberSpec_('type_', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'type'}, None),
-        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'client-handlerType', u'name': u'client-handler'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('other_name', 'xs:float', 0, 0, {'name': 'other-name', 'type': 'xs:float'}, None),
+        MemberSpec_('class_', 'xs:float', 0, 0, {'name': 'class', 'type': 'xs:float'}, None),
+        MemberSpec_('other_value', 'xs:float', 1, 0, {'name': 'other-value', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('type_', 'xs:float', 1, 0, {'name': 'type', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {'name': 'client-handler', 'maxOccurs': 'unbounded', 'type': 'client-handlerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -2036,7 +2036,7 @@ class info(GeneratedsSuper):
 
 class vehicle(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('wheelcount', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'wheelcount'}, None),
+        MemberSpec_('wheelcount', 'xs:integer', 0, 0, {'name': 'wheelcount', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -2127,7 +2127,7 @@ class vehicle(GeneratedsSuper):
 
 class automobile(vehicle):
     member_data_items_ = [
-        MemberSpec_('drivername', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'drivername'}, None),
+        MemberSpec_('drivername', 'xs:string', 0, 0, {'name': 'drivername', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = vehicle
@@ -2208,7 +2208,7 @@ class automobile(vehicle):
 
 class airplane(vehicle):
     member_data_items_ = [
-        MemberSpec_('pilotname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'pilotname'}, None),
+        MemberSpec_('pilotname', 'xs:string', 0, 0, {'name': 'pilotname', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = vehicle
@@ -2297,17 +2297,17 @@ class programmer(person):
         MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnegint', 'xs:negativeInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('email', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'email'}, None),
-        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {u'type': u'xs:positiveInteger', u'name': u'elposint'}, None),
-        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {u'type': u'xs:nonPositiveInteger', u'name': u'elnonposint'}, None),
-        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {u'type': u'xs:negativeInteger', u'name': u'elnegint'}, None),
-        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {u'type': u'xs:nonNegativeInteger', u'name': u'elnonnegint'}, None),
-        MemberSpec_('eldate', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'eldate'}, None),
-        MemberSpec_('eltoken', 'xs:token', 0, 0, {u'type': u'xs:token', u'name': u'eltoken'}, None),
-        MemberSpec_('elshort', 'xs:short', 0, 0, {u'type': u'xs:short', u'name': u'elshort'}, None),
-        MemberSpec_('ellong', 'xs:long', 0, 0, {u'type': u'xs:long', u'name': u'ellong'}, None),
-        MemberSpec_('elparam', 'param', 0, 0, {u'type': u'param', u'name': u'elparam'}, None),
-        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'elarraytypes'}, None),
+        MemberSpec_('email', 'xs:string', 0, 0, {'name': 'email', 'type': 'xs:string'}, None),
+        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {'name': 'elposint', 'type': 'xs:positiveInteger'}, None),
+        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {'name': 'elnonposint', 'type': 'xs:nonPositiveInteger'}, None),
+        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {'name': 'elnegint', 'type': 'xs:negativeInteger'}, None),
+        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {'name': 'elnonnegint', 'type': 'xs:nonNegativeInteger'}, None),
+        MemberSpec_('eldate', 'xs:date', 0, 0, {'name': 'eldate', 'type': 'xs:date'}, None),
+        MemberSpec_('eltoken', 'xs:token', 0, 0, {'name': 'eltoken', 'type': 'xs:token'}, None),
+        MemberSpec_('elshort', 'xs:short', 0, 0, {'name': 'elshort', 'type': 'xs:short'}, None),
+        MemberSpec_('ellong', 'xs:long', 0, 0, {'name': 'ellong', 'type': 'xs:long'}, None),
+        MemberSpec_('elparam', 'param', 0, 0, {'name': 'elparam', 'type': 'param'}, None),
+        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {'name': 'elarraytypes', 'type': 'xs:NMTOKEN'}, None),
     ]
     subclass = None
     superclass = person
@@ -2644,8 +2644,8 @@ class programmer(person):
 
 class client_handlerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('fullname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'fullname'}, None),
-        MemberSpec_('refid', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'refid'}, None),
+        MemberSpec_('fullname', 'xs:string', 0, 0, {'name': 'fullname', 'type': 'xs:string'}, None),
+        MemberSpec_('refid', 'xs:integer', 0, 0, {'name': 'refid', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -2742,7 +2742,7 @@ class java_programmer(programmer):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('status', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = programmer
@@ -2846,7 +2846,7 @@ class python_programmer(programmer):
     Python programmers are especially wonderful kinds of people."""
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = programmer
diff --git a/tests/prefix_classname1_sub.py b/tests/prefix_classname1_sub.py
index a0c9591..c071792 100644
--- a/tests/prefix_classname1_sub.py
+++ b/tests/prefix_classname1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/prefix_classname1_sup.py b/tests/prefix_classname1_sup.py
index 67187ca..02a07bf 100644
--- a/tests/prefix_classname1_sup.py
+++ b/tests/prefix_classname1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,11 +737,11 @@ class ArrayTypes(object):
 
 class tomato_people(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('comments', 'comments', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'comments', u'name': u'comments'}, None),
-        MemberSpec_('person', 'person', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'person', u'name': u'person'}, None),
-        MemberSpec_('programmer', 'programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'programmer', u'name': u'programmer'}, None),
-        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'python-programmer', u'name': u'python-programmer'}, None),
-        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'java-programmer', u'name': u'java-programmer'}, None),
+        MemberSpec_('comments', 'comments', 1, 0, {'name': 'comments', 'type': 'comments', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('person', 'person', 1, 0, {'name': 'person', 'maxOccurs': 'unbounded', 'type': 'person'}, None),
+        MemberSpec_('programmer', 'programmer', 1, 0, {'name': 'programmer', 'maxOccurs': 'unbounded', 'type': 'programmer'}, None),
+        MemberSpec_('python_programmer', 'python-programmer', 1, 0, {'name': 'python-programmer', 'maxOccurs': 'unbounded', 'type': 'python-programmer'}, None),
+        MemberSpec_('java_programmer', 'java-programmer', 1, 0, {'name': 'java-programmer', 'maxOccurs': 'unbounded', 'type': 'java-programmer'}, None),
     ]
     subclass = None
     superclass = None
@@ -894,7 +894,7 @@ class tomato_people(GeneratedsSuper):
 
 class tomato_comments(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('emp', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'emp'}, None),
+        MemberSpec_('emp', 'xs:string', 1, 0, {'name': 'emp', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -1009,12 +1009,12 @@ class tomato_person(GeneratedsSuper):
         MemberSpec_('ratio', 'xs:float', 0, 1, {'use': 'optional'}),
         MemberSpec_('fruit', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('vegetable', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('interest', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'interest'}, None),
-        MemberSpec_('category', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'category'}, None),
-        MemberSpec_('agent', 'agent', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'agent', u'name': u'agent'}, None),
-        MemberSpec_('promoter', 'booster', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'booster', u'name': u'promoter'}, None),
-        MemberSpec_('description', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'description'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('interest', 'xs:string', 1, 0, {'name': 'interest', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('category', 'xs:integer', 0, 0, {'name': 'category', 'type': 'xs:integer'}, None),
+        MemberSpec_('agent', 'agent', 1, 0, {'name': 'agent', 'type': 'agent', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('promoter', 'booster', 1, 0, {'name': 'promoter', 'type': 'booster', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('description', 'xs:string', 0, 0, {'name': 'description', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
@@ -1239,18 +1239,18 @@ class tomato_programmer(tomato_person):
         MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnegint', 'xs:negativeInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('email', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'email'}, None),
-        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {u'type': u'xs:positiveInteger', u'name': u'elposint'}, None),
-        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {u'type': u'xs:nonPositiveInteger', u'name': u'elnonposint'}, None),
-        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {u'type': u'xs:negativeInteger', u'name': u'elnegint'}, None),
-        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {u'type': u'xs:nonNegativeInteger', u'name': u'elnonnegint'}, None),
-        MemberSpec_('eldate', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'eldate'}, None),
-        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'eldatetime'}, None),
-        MemberSpec_('eltoken', 'xs:token', 0, 0, {u'type': u'xs:token', u'name': u'eltoken'}, None),
-        MemberSpec_('elshort', 'xs:short', 0, 0, {u'type': u'xs:short', u'name': u'elshort'}, None),
-        MemberSpec_('ellong', 'xs:long', 0, 0, {u'type': u'xs:long', u'name': u'ellong'}, None),
-        MemberSpec_('elparam', 'param', 0, 0, {u'type': u'param', u'name': u'elparam'}, None),
-        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'elarraytypes'}, None),
+        MemberSpec_('email', 'xs:string', 0, 0, {'name': 'email', 'type': 'xs:string'}, None),
+        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {'name': 'elposint', 'type': 'xs:positiveInteger'}, None),
+        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {'name': 'elnonposint', 'type': 'xs:nonPositiveInteger'}, None),
+        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {'name': 'elnegint', 'type': 'xs:negativeInteger'}, None),
+        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {'name': 'elnonnegint', 'type': 'xs:nonNegativeInteger'}, None),
+        MemberSpec_('eldate', 'xs:date', 0, 0, {'name': 'eldate', 'type': 'xs:date'}, None),
+        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {'name': 'eldatetime', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('eltoken', 'xs:token', 0, 0, {'name': 'eltoken', 'type': 'xs:token'}, None),
+        MemberSpec_('elshort', 'xs:short', 0, 0, {'name': 'elshort', 'type': 'xs:short'}, None),
+        MemberSpec_('ellong', 'xs:long', 0, 0, {'name': 'ellong', 'type': 'xs:long'}, None),
+        MemberSpec_('elparam', 'param', 0, 0, {'name': 'elparam', 'type': 'param'}, None),
+        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {'name': 'elarraytypes', 'type': 'xs:NMTOKEN'}, None),
     ]
     subclass = None
     superclass = tomato_person
@@ -1609,7 +1609,7 @@ class tomato_param(GeneratedsSuper):
         MemberSpec_('sid', 'xs:NCName', 0, 1, {'use': 'optional'}),
         MemberSpec_('flow', 'FlowType', 0, 1, {'use': 'optional'}),
         MemberSpec_('semantic', 'xs:token', 0, 1, {'use': 'optional'}),
-        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': u'required'}),
+        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': 'required'}),
         MemberSpec_('valueOf_', 'xs:string', 0),
     ]
     subclass = None
@@ -1739,7 +1739,7 @@ class tomato_param(GeneratedsSuper):
 class tomato_python_programmer(tomato_programmer):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = tomato_programmer
@@ -1832,7 +1832,7 @@ class tomato_java_programmer(tomato_programmer):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('status', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = tomato_programmer
@@ -1933,10 +1933,10 @@ class tomato_java_programmer(tomato_programmer):
 
 class tomato_agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
     ]
     subclass = None
     superclass = None
@@ -2050,10 +2050,10 @@ class tomato_agent(GeneratedsSuper):
 
 class tomato_special_agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'info', 0, 0, {u'type': u'info', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'info', 0, 0, {'name': 'info', 'type': 'info'}, None),
     ]
     subclass = None
     superclass = None
@@ -2167,13 +2167,13 @@ class tomato_special_agent(GeneratedsSuper):
 
 class tomato_booster(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('other_name', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'other-name'}, None),
-        MemberSpec_('class_', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'class'}, None),
-        MemberSpec_('other_value', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'other-value'}, None),
-        MemberSpec_('type_', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'type'}, None),
-        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'client-handlerType', u'name': u'client-handler'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('other_name', 'xs:float', 0, 0, {'name': 'other-name', 'type': 'xs:float'}, None),
+        MemberSpec_('class_', 'xs:float', 0, 0, {'name': 'class', 'type': 'xs:float'}, None),
+        MemberSpec_('other_value', 'xs:float', 1, 0, {'name': 'other-value', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('type_', 'xs:float', 1, 0, {'name': 'type', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {'name': 'client-handler', 'maxOccurs': 'unbounded', 'type': 'client-handlerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -2450,8 +2450,8 @@ class tomato_info(GeneratedsSuper):
 
 class tomato_client_handlerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('fullname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'fullname'}, None),
-        MemberSpec_('refid', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'refid'}, None),
+        MemberSpec_('fullname', 'xs:string', 0, 0, {'name': 'fullname', 'type': 'xs:string'}, None),
+        MemberSpec_('refid', 'xs:integer', 0, 0, {'name': 'refid', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/recursive_simpletype1_sub.py b/tests/recursive_simpletype1_sub.py
index bc0c88f..a963f46 100644
--- a/tests/recursive_simpletype1_sub.py
+++ b/tests/recursive_simpletype1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py
index f30cf0c..6e52f20 100644
--- a/tests/recursive_simpletype1_sup.py
+++ b/tests/recursive_simpletype1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,9 +730,9 @@ def _cast(typ, value):
 
 class PersonType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('personId', 'xs:integer', 0, 0, {u'maxOccurs': u'1', 'type': u'personId', u'ref': u'personId', 'name': u'personId', u'minOccurs': u'1'}, None),
-        MemberSpec_('fname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'fname'}, None),
-        MemberSpec_('lname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lname'}, None),
+        MemberSpec_('personId', 'xs:integer', 0, 0, {'ref': 'personId', 'minOccurs': '1', 'maxOccurs': '1', 'name': 'personId', 'type': 'personId'}, None),
+        MemberSpec_('fname', 'xs:string', 0, 0, {'name': 'fname', 'type': 'xs:string'}, None),
+        MemberSpec_('lname', 'xs:string', 0, 0, {'name': 'lname', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/reference_simpletype1_sub.py b/tests/reference_simpletype1_sub.py
index 3931476..7ee21c2 100644
--- a/tests/reference_simpletype1_sub.py
+++ b/tests/reference_simpletype1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/reference_simpletype1_sup.py b/tests/reference_simpletype1_sup.py
index 72b5bd5..1f8ea4f 100644
--- a/tests/reference_simpletype1_sup.py
+++ b/tests/reference_simpletype1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -733,8 +733,8 @@ class dummy(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('test_ref_attr', 'xs:integer', 0, 1, {'use': 'optional'}),
         MemberSpec_('test_normal_attr', 'xs:integer', 0, 1, {'use': 'optional'}),
-        MemberSpec_('test_ref_element', 'xs:integer', 0, 0, {'type': u'xs:integer', u'ref': u'test_ref_element', 'name': u'test_ref_element'}, None),
-        MemberSpec_('test_normal_element', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'test_normal_element'}, None),
+        MemberSpec_('test_ref_element', 'xs:integer', 0, 0, {'ref': 'test_ref_element', 'name': 'test_ref_element', 'type': 'xs:integer'}, None),
+        MemberSpec_('test_normal_element', 'xs:integer', 0, 0, {'name': 'test_normal_element', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/rem_dup_elems1_sub.py b/tests/rem_dup_elems1_sub.py
index e3c07ab..4d0a8bd 100644
--- a/tests/rem_dup_elems1_sub.py
+++ b/tests/rem_dup_elems1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/rem_dup_elems1_sup.py b/tests/rem_dup_elems1_sup.py
index 7de66a2..6f36d97 100644
--- a/tests/rem_dup_elems1_sup.py
+++ b/tests/rem_dup_elems1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -404,7 +404,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -731,8 +731,8 @@ def _cast(typ, value):
 
 class authorsType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('author', 'author', 1, 1, {'type': u'author', u'ref': u'author', 'name': u'author'}, 1),
-        MemberSpec_('cooperation', 'xsd:string', 1, 1, {u'type': u'xsd:string', u'name': u'cooperation'}, 1),
+        MemberSpec_('author', 'author', 1, 1, {'ref': 'author', 'name': 'author', 'type': 'author'}, 1),
+        MemberSpec_('cooperation', 'xsd:string', 1, 1, {'name': 'cooperation', 'type': 'xsd:string'}, 1),
     ]
     subclass = None
     superclass = None
@@ -832,7 +832,7 @@ class authorsType(GeneratedsSuper):
 
 class author(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('description', 'xsd:string', 0, 0, {u'type': u'xsd:string', u'name': u'description'}, None),
+        MemberSpec_('description', 'xsd:string', 0, 0, {'name': 'description', 'type': 'xsd:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/simplecontent_restriction1_sub.py b/tests/simplecontent_restriction1_sub.py
index f5877c0..a202c70 100644
--- a/tests/simplecontent_restriction1_sub.py
+++ b/tests/simplecontent_restriction1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py
index c413af8..a780bba 100644
--- a/tests/simplecontent_restriction1_sup.py
+++ b/tests/simplecontent_restriction1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,13 +730,13 @@ def _cast(typ, value):
 
 class IdentifierType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('schemeID', 'xsd:normalizedString', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeName', 'xsd:string', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeAgencyID', 'xsd:normalizedString', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeAgencyName', 'xsd:string', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeVersionID', 'xsd:normalizedString', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeDataURI', 'xsd:anyURI', 0, 1, {'use': u'optional'}),
-        MemberSpec_('schemeURI', 'xsd:anyURI', 0, 1, {'use': u'optional'}),
+        MemberSpec_('schemeID', 'xsd:normalizedString', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeName', 'xsd:string', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeAgencyID', 'xsd:normalizedString', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeAgencyName', 'xsd:string', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeVersionID', 'xsd:normalizedString', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeDataURI', 'xsd:anyURI', 0, 1, {'use': 'optional'}),
+        MemberSpec_('schemeURI', 'xsd:anyURI', 0, 1, {'use': 'optional'}),
         MemberSpec_('valueOf_', 'xsd:normalizedString', 0),
     ]
     subclass = None
diff --git a/tests/simpletype_memberspecs1_sub.py b/tests/simpletype_memberspecs1_sub.py
index f14d0ff..3e81f5c 100644
--- a/tests/simpletype_memberspecs1_sub.py
+++ b/tests/simpletype_memberspecs1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py
index 2f5acbe..da39d25 100644
--- a/tests/simpletype_memberspecs1_sup.py
+++ b/tests/simpletype_memberspecs1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
diff --git a/tests/simpletypes_other1_sub.py b/tests/simpletypes_other1_sub.py
index 2dda7fb..1b35158 100644
--- a/tests/simpletypes_other1_sub.py
+++ b/tests/simpletypes_other1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py
index df679f8..7e3b7f3 100644
--- a/tests/simpletypes_other1_sup.py
+++ b/tests/simpletypes_other1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -730,7 +730,7 @@ def _cast(typ, value):
 
 class simpleTypeTestsType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simpleTypeTest', 'simpleTypeTestDefs', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleTypeTestDefs', u'name': u'simpleTypeTest'}, None),
+        MemberSpec_('simpleTypeTest', 'simpleTypeTestDefs', 1, 0, {'name': 'simpleTypeTest', 'maxOccurs': 'unbounded', 'type': 'simpleTypeTestDefs'}, None),
     ]
     subclass = None
     superclass = None
@@ -813,27 +813,27 @@ class simpleTypeTestsType(GeneratedsSuper):
 
 class simpleTypeTestDefs(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('datetime1', 'xs:gYear', 0, 0, {u'type': u'xs:gYear', u'name': u'datetime1'}, None),
-        MemberSpec_('datetime2', 'xs:gYearMonth', 0, 0, {u'type': u'xs:gYearMonth', u'name': u'datetime2'}, None),
-        MemberSpec_('datetime3', 'xs:gMonth', 0, 0, {u'type': u'xs:gMonth', u'name': u'datetime3'}, None),
-        MemberSpec_('datetime4', 'xs:gMonthDay', 0, 0, {u'type': u'xs:gMonthDay', u'name': u'datetime4'}, None),
-        MemberSpec_('datetime5', 'xs:gDay', 0, 0, {u'type': u'xs:gDay', u'name': u'datetime5'}, None),
-        MemberSpec_('integerVal1', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'integerVal1'}, None),
-        MemberSpec_('integerVal2', 'xs:integer', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:integer', u'name': u'integerVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('stringVal1', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'stringVal1'}, None),
-        MemberSpec_('stringVal2', 'xs:string', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'stringVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('booleanVal1', 'xs:boolean', 0, 0, {u'type': u'xs:boolean', u'name': u'booleanVal1'}, None),
-        MemberSpec_('booleanVal2', 'xs:boolean', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:boolean', u'name': u'booleanVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('decimalVal1', 'xs:decimal', 0, 0, {u'type': u'xs:decimal', u'name': u'decimalVal1'}, None),
-        MemberSpec_('decimalVal2', 'xs:decimal', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:decimal', u'name': u'decimalVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('doubleVal1', 'xs:double', 0, 0, {u'type': u'xs:double', u'name': u'doubleVal1'}, None),
-        MemberSpec_('doubleVal2', 'xs:double', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:double', u'name': u'doubleVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('floatVal1', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'floatVal1'}, None),
-        MemberSpec_('floatVal2', 'xs:float', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'floatVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('dateVal1', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'dateVal1'}, None),
-        MemberSpec_('dateVal2', 'xs:date', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:date', u'name': u'dateVal2', u'minOccurs': u'0'}, None),
-        MemberSpec_('dateTimeVal1', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'dateTimeVal1'}, None),
-        MemberSpec_('dateTimeVal2', 'xs:dateTime', 1, 1, {u'maxOccurs': u'unbounded', u'type': u'xs:dateTime', u'name': u'dateTimeVal2', u'minOccurs': u'0'}, None),
+        MemberSpec_('datetime1', 'xs:gYear', 0, 0, {'name': 'datetime1', 'type': 'xs:gYear'}, None),
+        MemberSpec_('datetime2', 'xs:gYearMonth', 0, 0, {'name': 'datetime2', 'type': 'xs:gYearMonth'}, None),
+        MemberSpec_('datetime3', 'xs:gMonth', 0, 0, {'name': 'datetime3', 'type': 'xs:gMonth'}, None),
+        MemberSpec_('datetime4', 'xs:gMonthDay', 0, 0, {'name': 'datetime4', 'type': 'xs:gMonthDay'}, None),
+        MemberSpec_('datetime5', 'xs:gDay', 0, 0, {'name': 'datetime5', 'type': 'xs:gDay'}, None),
+        MemberSpec_('integerVal1', 'xs:integer', 0, 0, {'name': 'integerVal1', 'type': 'xs:integer'}, None),
+        MemberSpec_('integerVal2', 'xs:integer', 1, 1, {'name': 'integerVal2', 'type': 'xs:integer', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('stringVal1', 'xs:string', 0, 0, {'name': 'stringVal1', 'type': 'xs:string'}, None),
+        MemberSpec_('stringVal2', 'xs:string', 1, 1, {'name': 'stringVal2', 'type': 'xs:string', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('booleanVal1', 'xs:boolean', 0, 0, {'name': 'booleanVal1', 'type': 'xs:boolean'}, None),
+        MemberSpec_('booleanVal2', 'xs:boolean', 1, 1, {'name': 'booleanVal2', 'type': 'xs:boolean', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('decimalVal1', 'xs:decimal', 0, 0, {'name': 'decimalVal1', 'type': 'xs:decimal'}, None),
+        MemberSpec_('decimalVal2', 'xs:decimal', 1, 1, {'name': 'decimalVal2', 'type': 'xs:decimal', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('doubleVal1', 'xs:double', 0, 0, {'name': 'doubleVal1', 'type': 'xs:double'}, None),
+        MemberSpec_('doubleVal2', 'xs:double', 1, 1, {'name': 'doubleVal2', 'type': 'xs:double', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('floatVal1', 'xs:float', 0, 0, {'name': 'floatVal1', 'type': 'xs:float'}, None),
+        MemberSpec_('floatVal2', 'xs:float', 1, 1, {'name': 'floatVal2', 'type': 'xs:float', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('dateVal1', 'xs:date', 0, 0, {'name': 'dateVal1', 'type': 'xs:date'}, None),
+        MemberSpec_('dateVal2', 'xs:date', 1, 1, {'name': 'dateVal2', 'type': 'xs:date', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('dateTimeVal1', 'xs:dateTime', 0, 0, {'name': 'dateTimeVal1', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('dateTimeVal2', 'xs:dateTime', 1, 1, {'name': 'dateTimeVal2', 'type': 'xs:dateTime', 'minOccurs': '0', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/test.py b/tests/test.py
index 780132f..274c707 100755
--- a/tests/test.py
+++ b/tests/test.py
@@ -77,12 +77,15 @@ class GenTest(unittest.TestCase):
         self.executeClean(cmd, cwd='..')
         # Verify the structure
         cmdTempl = (
-            'python -c "import %s_sub; print '
-            '[ x.name for x in %s_sub.node1TypeSub.member_data_items_ ]; '
-            'print [ x.name for x in %s_sub.node2TypeSub.member_data_items_ ]"'
+            'python -c "import %s_sub; print('
+            '[ x.name for x in %s_sub.node1TypeSub.member_data_items_ ]); '
+            'print([ x.name for x in '
+            '%s_sub.node2TypeSub.member_data_items_ ])"'
         )
         cmd = cmdTempl % (t_, t_, t_)
         result, err = self.execute(cmd)
+        if sys.version_info.major != 2:
+            result = result.decode()
         self.failUnlessEqual(result, """\
 ['node1node1', 'group1', 'group2', 'node1node2']
 ['node2node1', 'group1', 'group2', 'node2node2']
@@ -92,12 +95,14 @@ class GenTest(unittest.TestCase):
             'python -c "import %s_sub; obj = '
             '%s_sub.parse(\'%s.xml\'); fields = '
             '[ x.name for x in obj.node1.member_data_items_ ]; '
-            'print [ getattr(obj.node1, x) for x in fields ]; '
+            'print([ getattr(obj.node1, x) for x in fields ]); '
             'fields = [ x.name for x in obj.node2.member_data_items_ ]; '
-            'print [ getattr(obj.node2, x) for x in fields ]"'
+            'print([ getattr(obj.node2, x) for x in fields ])"'
         )
         cmd = cmdTempl % (t_, t_, t_)
         result, err = self.execute(cmd)
+        if sys.version_info.major != 2:
+            result = result.decode()
         self.failUnlessEqual(result, """\
 ['value 1 1', 'group1 1', 'group2 1', 'value 1 2']
 ['value 2 1', 'group1 2', 'group2 2', 'value 2 2']
@@ -126,10 +131,12 @@ class GenTest(unittest.TestCase):
         cmdTempl = (
             'python -c "import %s_sub; obj = '
             '%s_sub.parse(\'%s.xml\'); children = obj.get_child(); '
-            'print [ (x.get_name(), x.get_valueOf_()) for x in children ]"'
+            'print([ (x.get_name(), x.get_valueOf_()) for x in children ])"'
         )
         cmd = cmdTempl % (t_, t_, t_)
         result, err = self.execute(cmd)
+        if sys.version_info.major != 2:
+            result = result.decode()
         self.failUnlessEqual(result, """\
 [('child1', 'value1'), ('child1', 'value2')]
 """)
@@ -145,12 +152,14 @@ class GenTest(unittest.TestCase):
             'python -c "import %s_sub; '
             'node = %s_sub.childTypeSub.factory(name=\'child1\', '
             'valueOf_ = \'value1\'); '
-            'print (node.get_name(), node.get_valueOf_())"'
+            'print((node.get_name(), node.get_valueOf_()))"'
         )
         cmd = cmdTempl % (t_, t_)
-        #print 'cmd:', cmd
+        #print('cmd:', cmd)
         result, err = self.execute(cmd)
-        #print 'result: %s' % result
+        #print('result: %s' % result)
+        if sys.version_info.major != 2:
+            result = result.decode()
         self.failUnlessEqual(result, """\
 ('child1', 'value1')
 """)
@@ -194,6 +203,8 @@ class GenTest(unittest.TestCase):
             root1.append(child.__copy__())
         #print etree.tostring(root1, pretty_print = True)
         result = etree.tostring(root1, pretty_print=True)
+        if sys.version_info.major != 2:
+            result = result.decode()
         self.failUnlessEqual(GenTest.ns_for_import_xml_result, result)
 
     def test_006_anysimpletype(self):
@@ -482,6 +493,8 @@ class GenTest(unittest.TestCase):
             rootElement, pretty_print=True,
             xml_declaration=True, encoding="utf-8")
         outfile = open('to_etree2.xml', 'w')
+        if sys.version_info.major != 2:
+            content = content.decode()
         outfile.write(content)
         outfile.close()
         self.compareFiles('{}1.xml'.format(t_), '{}2.xml'.format(t_))
@@ -924,6 +937,35 @@ class GenTest(unittest.TestCase):
         #self.remove('{}2_sub.py'.format(t_))
         #self.remove('{}2_out.xml'.format(t_))
 
+    #
+    # Test for types derived by extension.  See:
+    # https://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#DerivExt
+    def test_037_derived_types(self):
+        cmdTempl = (
+            'python generateDS.py --no-dates --no-versions '
+            '--member-specs=list -f '
+            '-o tests/%s2_sup.py -s tests/%s2_sub.py '
+            '--super=%s2_sup '
+            '--always-export-default '
+            'tests/%s.xsd'
+        )
+        t_ = 'derived_types'
+        cmd = cmdTempl % (t_, t_, t_, t_, )
+        self.executeClean(cmd, cwd='..')
+        self.compareFiles(
+            '{}1_sup.py'.format(t_),
+            '{}2_sup.py'.format(t_),
+            ('sys.stdout.write',))
+        self.compareFiles('{}1_sub.py'.format(t_), '{}2_sub.py'.format(t_))
+        cmdTempl = 'python tests/%s2_sup.py tests/%s.xml > tests/%s2_out.xml'
+        cmd = cmdTempl % (t_, t_, t_, )
+        self.executeClean(cmd, cwd='..')
+        self.compareFiles('{}1_out.xml'.format(t_), '{}2_out.xml'.format(t_))
+        # cleanup generated files
+        self.remove('{}2_sup.py'.format(t_))
+        self.remove('{}2_sub.py'.format(t_))
+        self.remove('{}2_out.xml'.format(t_))
+
     def compareFiles(self, left, right, ignore=None):
         with open(left) as left_file:
             with open(right) as right_file:
@@ -933,7 +975,8 @@ class GenTest(unittest.TestCase):
         diffs = list(diffs)
         if diffs:
             diffs = ''.join(diffs[2:12])
-            self.fail("Files '{}' and '{}' differed:\n{}".format(left, right, diffs))
+            self.fail("Files '{}' and '{}' differed:\n{}".format(
+                left, right, diffs))
 
     def remove(self, filename):
         if False:
diff --git a/tests/to_etree1_sub.py b/tests/to_etree1_sub.py
index 00bea0a..6856382 100644
--- a/tests/to_etree1_sub.py
+++ b/tests/to_etree1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py
index 93dfd28..eea078f 100644
--- a/tests/to_etree1_sup.py
+++ b/tests/to_etree1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -405,7 +405,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -739,12 +739,12 @@ class ArrayTypes(object):
 
 class peopleType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('comments', 'commentsType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'commentsType', u'name': u'comments'}, None),
-        MemberSpec_('person', 'personType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'personType', u'name': u'person'}, None),
-        MemberSpec_('specialperson', 'specialperson', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'specialperson', u'name': u'specialperson'}, None),
-        MemberSpec_('programmer', 'programmerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'programmerType', u'name': u'programmer'}, None),
-        MemberSpec_('python_programmer', 'python-programmerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'python-programmerType', u'name': u'python-programmer'}, None),
-        MemberSpec_('java_programmer', 'java-programmerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'java-programmerType', u'name': u'java-programmer'}, None),
+        MemberSpec_('comments', 'commentsType', 1, 0, {'name': 'comments', 'type': 'commentsType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('person', 'personType', 1, 0, {'name': 'person', 'maxOccurs': 'unbounded', 'type': 'personType'}, None),
+        MemberSpec_('specialperson', 'specialperson', 1, 0, {'name': 'specialperson', 'maxOccurs': 'unbounded', 'type': 'specialperson'}, None),
+        MemberSpec_('programmer', 'programmerType', 1, 0, {'name': 'programmer', 'maxOccurs': 'unbounded', 'type': 'programmerType'}, None),
+        MemberSpec_('python_programmer', 'python-programmerType', 1, 0, {'name': 'python-programmer', 'maxOccurs': 'unbounded', 'type': 'python-programmerType'}, None),
+        MemberSpec_('java_programmer', 'java-programmerType', 1, 0, {'name': 'java-programmer', 'maxOccurs': 'unbounded', 'type': 'java-programmerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -845,7 +845,7 @@ class peopleType(GeneratedsSuper):
         for java_programmer_ in self.java_programmer:
             java_programmer_.to_etree(element, name_='java-programmer', mapping_=mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -894,8 +894,8 @@ class peopleType(GeneratedsSuper):
 
 class commentsType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('emp', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'emp'}, None),
-        MemberSpec_('bold', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'bold'}, None),
+        MemberSpec_('emp', 'xs:string', 1, 0, {'name': 'emp', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('bold', 'xs:string', 1, 0, {'name': 'bold', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
         MemberSpec_('valueOf_', [], 0),
     ]
     subclass = None
@@ -960,7 +960,7 @@ class commentsType(GeneratedsSuper):
         for item_ in self.content_:
             item_.to_etree(element)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1001,14 +1001,14 @@ class personType(GeneratedsSuper):
         MemberSpec_('ratio', 'xs:float', 0, 1, {'use': 'optional'}),
         MemberSpec_('fruit', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('vegetable', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('name', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'name'}, None),
-        MemberSpec_('interest', 'xs:string', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:string', u'name': u'interest'}, None),
-        MemberSpec_('category', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'category'}, None),
-        MemberSpec_('hot_agent', 'hot.agent', 0, 0, {u'type': u'hot.agent', u'name': u'hot.agent'}, None),
-        MemberSpec_('agent', 'agentType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'agentType', u'name': u'agent'}, None),
-        MemberSpec_('promoter', 'boosterType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'boosterType', u'name': u'promoter'}, None),
-        MemberSpec_('description', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'description'}, None),
-        MemberSpec_('range_', ['RangeType', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'range'}, None),
+        MemberSpec_('name', 'xs:string', 0, 0, {'name': 'name', 'type': 'xs:string'}, None),
+        MemberSpec_('interest', 'xs:string', 1, 0, {'name': 'interest', 'type': 'xs:string', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('category', 'xs:integer', 0, 0, {'name': 'category', 'type': 'xs:integer'}, None),
+        MemberSpec_('hot_agent', 'hot.agent', 0, 0, {'name': 'hot.agent', 'type': 'hot.agent'}, None),
+        MemberSpec_('agent', 'agentType', 1, 0, {'name': 'agent', 'type': 'agentType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('promoter', 'boosterType', 1, 0, {'name': 'promoter', 'type': 'boosterType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('description', 'xs:string', 0, 0, {'name': 'description', 'type': 'xs:string'}, None),
+        MemberSpec_('range_', ['RangeType', 'xs:integer'], 0, 0, {'name': 'range', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -1143,7 +1143,7 @@ class personType(GeneratedsSuper):
             range__ = self.range_
             etree_.SubElement(element, '{}range').text = self.gds_format_integer(range__)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1262,7 +1262,7 @@ class specialperson(personType):
     def to_etree(self, parent_element=None, name_='specialperson', mapping_=None):
         element = super(specialperson, self).to_etree(parent_element, name_, mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1287,19 +1287,19 @@ class programmerType(personType):
         MemberSpec_('attrnonposint', 'xs:nonPositiveInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnegint', 'xs:negativeInteger', 0, 1, {'use': 'optional'}),
         MemberSpec_('attrnonnegint', 'xs:nonNegativeInteger', 0, 1, {'use': 'optional'}),
-        MemberSpec_('email', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'email'}, None),
-        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {u'type': u'xs:positiveInteger', u'name': u'elposint'}, None),
-        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {u'type': u'xs:nonPositiveInteger', u'name': u'elnonposint'}, None),
-        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {u'type': u'xs:negativeInteger', u'name': u'elnegint'}, None),
-        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {u'type': u'xs:nonNegativeInteger', u'name': u'elnonnegint'}, None),
-        MemberSpec_('eldate', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'eldate'}, None),
-        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'eldatetime'}, None),
-        MemberSpec_('eldatetime1', 'xs:dateTime', 0, 0, {u'type': u'xs:dateTime', u'name': u'eldatetime1'}, None),
-        MemberSpec_('eltoken', 'xs:token', 0, 0, {u'type': u'xs:token', u'name': u'eltoken'}, None),
-        MemberSpec_('elshort', 'xs:short', 0, 0, {u'type': u'xs:short', u'name': u'elshort'}, None),
-        MemberSpec_('ellong', 'xs:long', 0, 0, {u'type': u'xs:long', u'name': u'ellong'}, None),
-        MemberSpec_('elparam', 'paramType', 0, 0, {u'type': u'paramType', u'name': u'elparam'}, None),
-        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'elarraytypes'}, None),
+        MemberSpec_('email', 'xs:string', 0, 0, {'name': 'email', 'type': 'xs:string'}, None),
+        MemberSpec_('elposint', 'xs:positiveInteger', 0, 0, {'name': 'elposint', 'type': 'xs:positiveInteger'}, None),
+        MemberSpec_('elnonposint', 'xs:nonPositiveInteger', 0, 0, {'name': 'elnonposint', 'type': 'xs:nonPositiveInteger'}, None),
+        MemberSpec_('elnegint', 'xs:negativeInteger', 0, 0, {'name': 'elnegint', 'type': 'xs:negativeInteger'}, None),
+        MemberSpec_('elnonnegint', 'xs:nonNegativeInteger', 0, 0, {'name': 'elnonnegint', 'type': 'xs:nonNegativeInteger'}, None),
+        MemberSpec_('eldate', 'xs:date', 0, 0, {'name': 'eldate', 'type': 'xs:date'}, None),
+        MemberSpec_('eldatetime', 'xs:dateTime', 0, 0, {'name': 'eldatetime', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('eldatetime1', 'xs:dateTime', 0, 0, {'name': 'eldatetime1', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('eltoken', 'xs:token', 0, 0, {'name': 'eltoken', 'type': 'xs:token'}, None),
+        MemberSpec_('elshort', 'xs:short', 0, 0, {'name': 'elshort', 'type': 'xs:short'}, None),
+        MemberSpec_('ellong', 'xs:long', 0, 0, {'name': 'ellong', 'type': 'xs:long'}, None),
+        MemberSpec_('elparam', 'paramType', 0, 0, {'name': 'elparam', 'type': 'paramType'}, None),
+        MemberSpec_('elarraytypes', ['ArrayTypes', 'xs:NMTOKEN'], 0, 0, {'name': 'elarraytypes', 'type': 'xs:NMTOKEN'}, None),
     ]
     subclass = None
     superclass = personType
@@ -1478,7 +1478,7 @@ class programmerType(personType):
             elarraytypes_ = self.elarraytypes
             etree_.SubElement(element, '{}elarraytypes').text = self.gds_format_string(elarraytypes_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1640,7 +1640,7 @@ class paramType(GeneratedsSuper):
         MemberSpec_('sid', 'xs:NCName', 0, 1, {'use': 'optional'}),
         MemberSpec_('flow', 'FlowType', 0, 1, {'use': 'optional'}),
         MemberSpec_('semantic', 'xs:token', 0, 1, {'use': 'optional'}),
-        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': u'required'}),
+        MemberSpec_('type_', 'xs:NMTOKEN', 0, 0, {'use': 'required'}),
         MemberSpec_('valueOf_', 'xs:string', 0),
     ]
     subclass = None
@@ -1710,7 +1710,7 @@ class paramType(GeneratedsSuper):
         if self.hasContent_():
             element.text = self.gds_format_string(self.get_valueOf_())
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1760,9 +1760,9 @@ class python_programmerType(programmerType):
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('drcs_attr', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('gui_developer', 'xs:boolean', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
-        MemberSpec_('flowvalue', ['FlowType', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'flowvalue'}, None),
-        MemberSpec_('drcs', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'drcs'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
+        MemberSpec_('flowvalue', ['FlowType', 'xs:integer'], 0, 0, {'name': 'flowvalue', 'type': 'xs:integer'}, None),
+        MemberSpec_('drcs', 'xs:string', 0, 0, {'name': 'drcs', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = programmerType
@@ -1831,7 +1831,7 @@ class python_programmerType(programmerType):
             drcs_ = self.drcs
             etree_.SubElement(element, '{}drcs').text = self.gds_format_string(drcs_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -1886,12 +1886,12 @@ class java_programmerType(programmerType):
     member_data_items_ = [
         MemberSpec_('nick-name', 'xs:string', 0, 1, {'use': 'optional'}),
         MemberSpec_('status', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'favorite-editor'}, None),
-        MemberSpec_('datetime1', 'xs:gYear', 0, 0, {u'type': u'xs:gYear', u'name': u'datetime1'}, None),
-        MemberSpec_('datetime2', 'xs:gYearMonth', 0, 0, {u'type': u'xs:gYearMonth', u'name': u'datetime2'}, None),
-        MemberSpec_('datetime3', 'xs:gMonth', 0, 0, {u'type': u'xs:gMonth', u'name': u'datetime3'}, None),
-        MemberSpec_('datetime4', 'xs:gMonthDay', 0, 0, {u'type': u'xs:gMonthDay', u'name': u'datetime4'}, None),
-        MemberSpec_('datetime5', 'xs:gDay', 0, 0, {u'type': u'xs:gDay', u'name': u'datetime5'}, None),
+        MemberSpec_('favorite_editor', 'xs:string', 0, 0, {'name': 'favorite-editor', 'type': 'xs:string'}, None),
+        MemberSpec_('datetime1', 'xs:gYear', 0, 0, {'name': 'datetime1', 'type': 'xs:gYear'}, None),
+        MemberSpec_('datetime2', 'xs:gYearMonth', 0, 0, {'name': 'datetime2', 'type': 'xs:gYearMonth'}, None),
+        MemberSpec_('datetime3', 'xs:gMonth', 0, 0, {'name': 'datetime3', 'type': 'xs:gMonth'}, None),
+        MemberSpec_('datetime4', 'xs:gMonthDay', 0, 0, {'name': 'datetime4', 'type': 'xs:gMonthDay'}, None),
+        MemberSpec_('datetime5', 'xs:gDay', 0, 0, {'name': 'datetime5', 'type': 'xs:gDay'}, None),
     ]
     subclass = None
     superclass = programmerType
@@ -1971,7 +1971,7 @@ class java_programmerType(programmerType):
             datetime5_ = self.datetime5
             etree_.SubElement(element, '{}datetime5').text = self.gds_format_string(datetime5_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2021,11 +2021,11 @@ class java_programmerType(programmerType):
 
 class agentType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'infoType', 0, 0, {u'type': u'infoType', u'name': u'info'}, None),
-        MemberSpec_('vehicle', 'vehicleType', 1, 1, {u'maxOccurs': u'unbounded', 'type': u'vehicle', u'ref': u'vehicle', 'name': u'vehicle', u'minOccurs': u'0'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'infoType', 0, 0, {'name': 'info', 'type': 'infoType'}, None),
+        MemberSpec_('vehicle', 'vehicleType', 1, 1, {'ref': 'vehicle', 'minOccurs': '0', 'maxOccurs': 'unbounded', 'name': 'vehicle', 'type': 'vehicle'}, None),
     ]
     subclass = None
     superclass = None
@@ -2099,7 +2099,7 @@ class agentType(GeneratedsSuper):
         for vehicle_ in self.vehicle:
             vehicle_.to_etree(element, name_='vehicle', mapping_=mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2161,10 +2161,10 @@ class special_agentType(agentType):
     """This is a good kind of agent for testing the generation of Python
     bindings for an XML schema."""
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'infoType', 0, 0, {u'type': u'infoType', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'infoType', 0, 0, {'name': 'info', 'type': 'infoType'}, None),
     ]
     subclass = None
     superclass = agentType
@@ -2220,7 +2220,7 @@ class special_agentType(agentType):
             info_ = self.info
             info_.to_etree(element, name_='info', mapping_=mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2261,10 +2261,10 @@ class weird_agentType(agentType):
     """This is a good kind of agent for testing the generation of Python
     bindings for an XML schema."""
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('info', 'infoType', 0, 0, {u'type': u'infoType', u'name': u'info'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('info', 'infoType', 0, 0, {'name': 'info', 'type': 'infoType'}, None),
     ]
     subclass = None
     superclass = agentType
@@ -2320,7 +2320,7 @@ class weird_agentType(agentType):
             info_ = self.info
             info_.to_etree(element, name_='info', mapping_=mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2360,13 +2360,13 @@ class weird_agentType(agentType):
 class boosterType(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('member-id', 'xs:string', 0, 1, {'use': 'optional'}),
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('other_name', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'other-name'}, None),
-        MemberSpec_('class_', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'class'}, None),
-        MemberSpec_('other_value', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'other-value'}, None),
-        MemberSpec_('type_', 'xs:float', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'xs:float', u'name': u'type'}, None),
-        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'client-handlerType', u'name': u'client-handler'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string'}, None),
+        MemberSpec_('other_name', 'xs:float', 0, 0, {'name': 'other-name', 'type': 'xs:float'}, None),
+        MemberSpec_('class_', 'xs:float', 0, 0, {'name': 'class', 'type': 'xs:float'}, None),
+        MemberSpec_('other_value', 'xs:float', 1, 0, {'name': 'other-value', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('type_', 'xs:float', 1, 0, {'name': 'type', 'type': 'xs:float', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('client_handler', 'client-handlerType', 1, 0, {'name': 'client-handler', 'maxOccurs': 'unbounded', 'type': 'client-handlerType'}, None),
     ]
     subclass = None
     superclass = None
@@ -2464,7 +2464,7 @@ class boosterType(GeneratedsSuper):
         for client_handler_ in self.client_handler:
             client_handler_.to_etree(element, name_='client-handler', mapping_=mapping_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2576,7 +2576,7 @@ class infoType(GeneratedsSuper):
         if self.rating is not None:
             element.set('rating', self.gds_format_float(self.rating))
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2611,7 +2611,7 @@ class infoType(GeneratedsSuper):
 
 class vehicleType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('wheelcount', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'wheelcount'}, None),
+        MemberSpec_('wheelcount', 'xs:integer', 0, 0, {'name': 'wheelcount', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -2652,7 +2652,7 @@ class vehicleType(GeneratedsSuper):
             wheelcount_ = self.wheelcount
             etree_.SubElement(element, '{}wheelcount').text = self.gds_format_integer(wheelcount_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2680,7 +2680,7 @@ class vehicleType(GeneratedsSuper):
 
 class automobile(vehicleType):
     member_data_items_ = [
-        MemberSpec_('drivername', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'drivername'}, None),
+        MemberSpec_('drivername', 'xs:string', 0, 0, {'name': 'drivername', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = vehicleType
@@ -2715,7 +2715,7 @@ class automobile(vehicleType):
             drivername_ = self.drivername
             etree_.SubElement(element, '{}drivername').text = self.gds_format_string(drivername_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2737,7 +2737,7 @@ class automobile(vehicleType):
 
 class airplane(vehicleType):
     member_data_items_ = [
-        MemberSpec_('pilotname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'pilotname'}, None),
+        MemberSpec_('pilotname', 'xs:string', 0, 0, {'name': 'pilotname', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = vehicleType
@@ -2772,7 +2772,7 @@ class airplane(vehicleType):
             pilotname_ = self.pilotname
             etree_.SubElement(element, '{}pilotname').text = self.gds_format_string(pilotname_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2794,10 +2794,10 @@ class airplane(vehicleType):
 
 class hot_agent(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('firstname', 'xs:string', 0, 0, {u'default': u'empty\\name', u'type': u'xs:string', u'name': u'firstname'}, None),
-        MemberSpec_('lastname', 'xs:string', 0, 0, {u'default': u"no 'last' name", u'type': u'xs:string', u'name': u'lastname'}, None),
-        MemberSpec_('priority', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'priority'}, None),
-        MemberSpec_('startDate', 'xs:date', 0, 0, {u'type': u'xs:date', u'name': u'startDate'}, None),
+        MemberSpec_('firstname', 'xs:string', 0, 0, {'name': 'firstname', 'type': 'xs:string', 'default': 'empty\\name'}, None),
+        MemberSpec_('lastname', 'xs:string', 0, 0, {'name': 'lastname', 'type': 'xs:string', 'default': "no 'last' name"}, None),
+        MemberSpec_('priority', 'xs:float', 0, 0, {'name': 'priority', 'type': 'xs:float'}, None),
+        MemberSpec_('startDate', 'xs:date', 0, 0, {'name': 'startDate', 'type': 'xs:date'}, None),
     ]
     subclass = None
     superclass = None
@@ -2861,7 +2861,7 @@ class hot_agent(GeneratedsSuper):
             startDate_ = self.startDate
             etree_.SubElement(element, '{}startDate').text = self.gds_format_date(startDate_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
@@ -2901,8 +2901,8 @@ class hot_agent(GeneratedsSuper):
 
 class client_handlerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('fullname', 'xs:string', 0, 0, {u'type': u'xs:string', u'name': u'fullname'}, None),
-        MemberSpec_('refid', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'refid'}, None),
+        MemberSpec_('fullname', 'xs:string', 0, 0, {'name': 'fullname', 'type': 'xs:string'}, None),
+        MemberSpec_('refid', 'xs:integer', 0, 0, {'name': 'refid', 'type': 'xs:integer'}, None),
     ]
     subclass = None
     superclass = None
@@ -2945,7 +2945,7 @@ class client_handlerType(GeneratedsSuper):
             refid_ = self.refid
             etree_.SubElement(element, '{}refid').text = self.gds_format_integer(refid_)
         if mapping_ is not None:
-            mapping_[self] = element
+            mapping_[id(self)] = element
         return element
     def build(self, node):
         already_processed = set()
diff --git a/tests/validate_simpletypes1_sub.py b/tests/validate_simpletypes1_sub.py
index b029b32..59e74fa 100644
--- a/tests/validate_simpletypes1_sub.py
+++ b/tests/validate_simpletypes1_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes1_sup.py b/tests/validate_simpletypes1_sup.py
index 95122b1..e491f27 100644
--- a/tests/validate_simpletypes1_sup.py
+++ b/tests/validate_simpletypes1_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,11 +737,11 @@ class token_enum_st(object):
 
 class containerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('sample1', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample1'}, None),
-        MemberSpec_('sample2_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample2_bad'}, None),
-        MemberSpec_('sample3_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample3_bad'}, None),
-        MemberSpec_('sample4_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample4_bad'}, None),
-        MemberSpec_('sample2', 'simpleTwoType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleTwoType', u'name': u'sample2'}, None),
+        MemberSpec_('sample1', 'simpleOneType', 1, 0, {'name': 'sample1', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample2_bad', 'simpleOneType', 1, 0, {'name': 'sample2_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample3_bad', 'simpleOneType', 1, 0, {'name': 'sample3_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample4_bad', 'simpleOneType', 1, 0, {'name': 'sample4_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample2', 'simpleTwoType', 1, 0, {'name': 'sample2', 'type': 'simpleTwoType', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -893,31 +893,31 @@ class containerType(GeneratedsSuper):
 class simpleOneType(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('integer_range_1_value_with_default', 'integer_range_1_st', 0, 1, {'use': 'optional'}),
-        MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'default': u'5', u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None),
-        MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'pattern_value'}, None),
-        MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'token_enum_value'}, None),
-        MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_incl_value'}, None),
-        MemberSpec_('integer_range_excl_value', ['integer_range_excl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_excl_value'}, None),
-        MemberSpec_('min_max_length_value', ['min_max_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'min_max_length_value'}, None),
-        MemberSpec_('length_value', ['length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'length_value'}, None),
-        MemberSpec_('totalDigits_value', ['totalDigits_st', 'xs:decimal'], 0, 0, {u'type': u'xs:decimal', u'name': u'totalDigits_value'}, None),
-        MemberSpec_('date_minincl_value', ['date_minincl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_minincl_value'}, None),
-        MemberSpec_('date_maxincl_value', ['date_maxincl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_maxincl_value'}, None),
-        MemberSpec_('date_minexcl_value', ['date_minexcl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_minexcl_value'}, None),
-        MemberSpec_('date_maxexcl_value', ['date_maxexcl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_maxexcl_value'}, None),
-        MemberSpec_('time_minincl_value', ['time_minincl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_minincl_value'}, None),
-        MemberSpec_('time_maxincl_value', ['time_maxincl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_maxincl_value'}, None),
-        MemberSpec_('time_minexcl_value', ['time_minexcl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_minexcl_value'}, None),
-        MemberSpec_('time_maxexcl_value', ['time_maxexcl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_maxexcl_value'}, None),
-        MemberSpec_('datetime_minincl_value', ['datetime_minincl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_minincl_value'}, None),
-        MemberSpec_('datetime_maxincl_value', ['datetime_maxincl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_maxincl_value'}, None),
-        MemberSpec_('datetime_minexcl_value', ['datetime_minexcl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_minexcl_value'}, None),
-        MemberSpec_('datetime_maxexcl_value', ['datetime_maxexcl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_maxexcl_value'}, None),
-        MemberSpec_('vbar_pattern_value', ['vbar_pattern_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'vbar_pattern_value'}, None),
-        MemberSpec_('unicode_pattern_value', ['unicode_pattern_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'unicode_pattern_value'}, None),
-        MemberSpec_('anonymous_float_value', ['anonymous_float_valueType', 'xs:float'], 0, 0, {u'type': u'xs:float', u'name': u'anonymous_float_value'}, None),
-        MemberSpec_('primative_integer', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'primative_integer'}, None),
-        MemberSpec_('primative_float', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'primative_float'}, None),
+        MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {'name': 'integer_range_1_value', 'type': 'xs:integer', 'default': '5'}, None),
+        MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {'name': 'pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {'name': 'token_enum_value', 'type': 'xs:NMTOKEN'}, None),
+        MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {'name': 'integer_range_incl_value', 'type': 'xs:integer'}, None),
+        MemberSpec_('integer_range_excl_value', ['integer_range_excl_st', 'xs:integer'], 0, 0, {'name': 'integer_range_excl_value', 'type': 'xs:integer'}, None),
+        MemberSpec_('min_max_length_value', ['min_max_length_st', 'xs:string'], 0, 0, {'name': 'min_max_length_value', 'type': 'xs:string'}, None),
+        MemberSpec_('length_value', ['length_st', 'xs:string'], 0, 0, {'name': 'length_value', 'type': 'xs:string'}, None),
+        MemberSpec_('totalDigits_value', ['totalDigits_st', 'xs:decimal'], 0, 0, {'name': 'totalDigits_value', 'type': 'xs:decimal'}, None),
+        MemberSpec_('date_minincl_value', ['date_minincl_st', 'xs:date'], 0, 0, {'name': 'date_minincl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_maxincl_value', ['date_maxincl_st', 'xs:date'], 0, 0, {'name': 'date_maxincl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_minexcl_value', ['date_minexcl_st', 'xs:date'], 0, 0, {'name': 'date_minexcl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_maxexcl_value', ['date_maxexcl_st', 'xs:date'], 0, 0, {'name': 'date_maxexcl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('time_minincl_value', ['time_minincl_st', 'xs:time'], 0, 0, {'name': 'time_minincl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_maxincl_value', ['time_maxincl_st', 'xs:time'], 0, 0, {'name': 'time_maxincl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_minexcl_value', ['time_minexcl_st', 'xs:time'], 0, 0, {'name': 'time_minexcl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_maxexcl_value', ['time_maxexcl_st', 'xs:time'], 0, 0, {'name': 'time_maxexcl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('datetime_minincl_value', ['datetime_minincl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_minincl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_maxincl_value', ['datetime_maxincl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_maxincl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_minexcl_value', ['datetime_minexcl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_minexcl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_maxexcl_value', ['datetime_maxexcl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_maxexcl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('vbar_pattern_value', ['vbar_pattern_st', 'xs:string'], 0, 0, {'name': 'vbar_pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('unicode_pattern_value', ['unicode_pattern_st', 'xs:string'], 0, 0, {'name': 'unicode_pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('anonymous_float_value', ['anonymous_float_valueType', 'xs:float'], 0, 0, {'name': 'anonymous_float_value', 'type': 'xs:float'}, None),
+        MemberSpec_('primative_integer', 'xs:integer', 0, 0, {'name': 'primative_integer', 'type': 'xs:integer'}, None),
+        MemberSpec_('primative_float', 'xs:float', 0, 0, {'name': 'primative_float', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = None
@@ -1086,7 +1086,7 @@ class simpleOneType(GeneratedsSuper):
             if not self.gds_validate_simple_patterns(
                     self.validate_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, ))
-    validate_pattern_st_patterns_ = [[u'^aaa.*zzz$', u'^bbb.*xxx$'], [u'^.*123.*$', u'^.*456.*$']]
+    validate_pattern_st_patterns_ = [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
     def validate_token_enum_st(self, value):
         # Validate type token_enum_st, a restriction on xs:NMTOKEN.
         if value is not None and Validate_simpletypes_:
@@ -1196,14 +1196,14 @@ class simpleOneType(GeneratedsSuper):
             if not self.gds_validate_simple_patterns(
                     self.validate_vbar_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_vbar_pattern_st_patterns_, ))
-    validate_vbar_pattern_st_patterns_ = [[u'^abcd|ef\\|gh$']]
+    validate_vbar_pattern_st_patterns_ = [['^abcd|ef\\|gh$']]
     def validate_unicode_pattern_st(self, value):
         # Validate type unicode_pattern_st, a restriction on xs:string.
         if value is not None and Validate_simpletypes_:
             if not self.gds_validate_simple_patterns(
                     self.validate_unicode_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_unicode_pattern_st_patterns_, ))
-    validate_unicode_pattern_st_patterns_ = [[u'^ab\xe7d|ef\\|gh$']]
+    validate_unicode_pattern_st_patterns_ = [['^abçd|ef\\|gh$']]
     def validate_anonymous_float_valueType(self, value):
         # Validate type anonymous_float_valueType, a restriction on xs:float.
         if value is not None and Validate_simpletypes_:
@@ -1540,7 +1540,7 @@ class simpleOneType(GeneratedsSuper):
 
 class simpleTwoType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simpleTwoElementOne', 'simpleTwoElementOneType', 0, 0, {u'type': u'simpleTwoElementOneType', u'name': u'simpleTwoElementOne'}, None),
+        MemberSpec_('simpleTwoElementOne', 'simpleTwoElementOneType', 0, 0, {'name': 'simpleTwoElementOne', 'type': 'simpleTwoElementOneType'}, None),
     ]
     subclass = None
     superclass = None
@@ -1617,7 +1617,7 @@ class simpleTwoType(GeneratedsSuper):
 
 class simpleTwoElementOneType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simpleTwoElementTwo', ['simpleTwoElementTwoType', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'simpleTwoElementTwo'}, None),
+        MemberSpec_('simpleTwoElementTwo', ['simpleTwoElementTwoType', 'xs:string'], 0, 0, {'name': 'simpleTwoElementTwo', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tests/validate_simpletypes1_warnings.txt b/tests/validate_simpletypes1_warnings.txt
index 503ad4e..c225dcd 100644
--- a/tests/validate_simpletypes1_warnings.txt
+++ b/tests/validate_simpletypes1_warnings.txt
@@ -1,32 +1,32 @@
 tests/validate_simpletypes2_sup.py:1078: UserWarning: Value "2" does not match xsd minExclusive restriction on integer_range_1_st
   warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on integer_range_1_st' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "mmaaa1234mnopzzz" does not match xsd pattern restrictions: [[u'^aaa.*zzz$', u'^bbb.*xxx$'], [u'^.*123.*$', u'^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "b'mmaaa1234mnopzzz'" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
   warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, ))
-tests/validate_simpletypes2_sup.py:1101: UserWarning: Value "floatxx" does not match xsd enumeration restriction on token_enum_st
+tests/validate_simpletypes2_sup.py:1101: UserWarning: Value "b'floatxx'" does not match xsd enumeration restriction on token_enum_st
   warnings_.warn('Value "%(value)s" does not match xsd enumeration restriction on token_enum_st' % {"value" : value.encode("utf-8")} )
 tests/validate_simpletypes2_sup.py:1108: UserWarning: Value "22" does not match xsd maxInclusive restriction on integer_range_incl_st
   warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on integer_range_incl_st' % {"value" : value} )
 tests/validate_simpletypes2_sup.py:1113: UserWarning: Value "-40" does not match xsd minExclusive restriction on integer_range_excl_st
   warnings_.warn('Value "%(value)s" does not match xsd minExclusive restriction on integer_range_excl_st' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1122: UserWarning: Value "mno pqr" does not match xsd minLength restriction on min_max_length_st
+tests/validate_simpletypes2_sup.py:1122: UserWarning: Value "b'mno pqr'" does not match xsd minLength restriction on min_max_length_st
   warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on min_max_length_st' % {"value" : value.encode("utf-8")} )
-tests/validate_simpletypes2_sup.py:1127: UserWarning: Value "012345" does not match xsd length restriction on length_st
+tests/validate_simpletypes2_sup.py:1127: UserWarning: Value "b'012345'" does not match xsd length restriction on length_st
   warnings_.warn('Value "%(value)s" does not match xsd length restriction on length_st' % {"value" : value.encode("utf-8")} )
 tests/validate_simpletypes2_sup.py:1211: UserWarning: Value "0.2" does not match xsd minInclusive restriction on anonymous_float_valueType
   warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on anonymous_float_valueType' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1198: UserWarning: Value "efgh" does not match xsd pattern restrictions: [[u'^abcd|ef\\|gh$']]
+tests/validate_simpletypes2_sup.py:1198: UserWarning: Value "b'efgh'" does not match xsd pattern restrictions: [['^abcd|ef\\|gh$']]
   warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_vbar_pattern_st_patterns_, ))
-tests/validate_simpletypes2_sup.py:1205: UserWarning: Value "efÄŸh" does not match xsd pattern restrictions: [[u'^ab\xe7d|ef\\|gh$']]
+tests/validate_simpletypes2_sup.py:1205: UserWarning: Value "b'ef\xc4\x9fh'" does not match xsd pattern restrictions: [['^abçd|ef\\|gh$']]
   warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_unicode_pattern_st_patterns_, ))
 tests/validate_simpletypes2_sup.py:1080: UserWarning: Value "9" does not match xsd maxExclusive restriction on integer_range_1_st
   warnings_.warn('Value "%(value)s" does not match xsd maxExclusive restriction on integer_range_1_st' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "aaa1234mnopzzzbcd" does not match xsd pattern restrictions: [[u'^aaa.*zzz$', u'^bbb.*xxx$'], [u'^.*123.*$', u'^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "b'aaa1234mnopzzzbcd'" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
   warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, ))
 tests/validate_simpletypes2_sup.py:1106: UserWarning: Value "-50" does not match xsd minInclusive restriction on integer_range_incl_st
   warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on integer_range_incl_st' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1120: UserWarning: Value "asdf asdf asdf asdf asdf asdf" does not match xsd maxLength restriction on min_max_length_st
+tests/validate_simpletypes2_sup.py:1120: UserWarning: Value "b'asdf asdf asdf asdf asdf asdf'" does not match xsd maxLength restriction on min_max_length_st
   warnings_.warn('Value "%(value)s" does not match xsd maxLength restriction on min_max_length_st' % {"value" : value.encode("utf-8")} )
-tests/validate_simpletypes2_sup.py:1127: UserWarning: Value "01234567890" does not match xsd length restriction on length_st
+tests/validate_simpletypes2_sup.py:1127: UserWarning: Value "b'01234567890'" does not match xsd length restriction on length_st
   warnings_.warn('Value "%(value)s" does not match xsd length restriction on length_st' % {"value" : value.encode("utf-8")} )
 tests/validate_simpletypes2_sup.py:1137: UserWarning: Value "2015-05-01" does not match xsd minInclusive restriction on date_minincl_st
   warnings_.warn('Value "%(value)s" does not match xsd minInclusive restriction on date_minincl_st' % {"value" : value} )
@@ -56,7 +56,7 @@ tests/validate_simpletypes2_sup.py:1213: UserWarning: Value "6.6" does not match
   warnings_.warn('Value "%(value)s" does not match xsd maxInclusive restriction on anonymous_float_valueType' % {"value" : value} )
 tests/validate_simpletypes2_sup.py:1085: UserWarning: Value "aaa12zzz" does not match xsd minLength restriction on pattern_st
   warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on pattern_st' % {"value" : value} )
-tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "aaa12zzz" does not match xsd pattern restrictions: [[u'^aaa.*zzz$', u'^bbb.*xxx$'], [u'^.*123.*$', u'^.*456.*$']]
+tests/validate_simpletypes2_sup.py:1088: UserWarning: Value "b'aaa12zzz'" does not match xsd pattern restrictions: [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
   warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, ))
-tests/validate_simpletypes2_sup.py:1647: UserWarning: Value "pqrst" does not match xsd minLength restriction on simpleTwoElementTwoType
+tests/validate_simpletypes2_sup.py:1647: UserWarning: Value "b'pqrst'" does not match xsd minLength restriction on simpleTwoElementTwoType
   warnings_.warn('Value "%(value)s" does not match xsd minLength restriction on simpleTwoElementTwoType' % {"value" : value.encode("utf-8")} )
diff --git a/tests/validate_simpletypes2_sub.py b/tests/validate_simpletypes2_sub.py
index b029b32..59e74fa 100644
--- a/tests/validate_simpletypes2_sub.py
+++ b/tests/validate_simpletypes2_sub.py
@@ -2,7 +2,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
diff --git a/tests/validate_simpletypes2_sup.py b/tests/validate_simpletypes2_sup.py
index 95122b1..e491f27 100644
--- a/tests/validate_simpletypes2_sup.py
+++ b/tests/validate_simpletypes2_sup.py
@@ -3,7 +3,7 @@
 
 #
 # Generated  by generateDS.py.
-# Python 2.7.15 |Anaconda custom (64-bit)| (default, May  1 2018, 23:32:55)  [GCC 7.2.0]
+# Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)  [GCC 7.2.0]
 #
 # Command line options:
 #   ('--no-dates', '')
@@ -403,7 +403,7 @@ except ImportError as exp:
             return None
         @classmethod
         def gds_reverse_node_mapping(cls, mapping):
-            return dict(((v, k) for k, v in mapping.iteritems()))
+            return dict(((v, k) for k, v in mapping.items()))
         @staticmethod
         def gds_encode(instring):
             if sys.version_info.major == 2:
@@ -737,11 +737,11 @@ class token_enum_st(object):
 
 class containerType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('sample1', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample1'}, None),
-        MemberSpec_('sample2_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample2_bad'}, None),
-        MemberSpec_('sample3_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample3_bad'}, None),
-        MemberSpec_('sample4_bad', 'simpleOneType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleOneType', u'name': u'sample4_bad'}, None),
-        MemberSpec_('sample2', 'simpleTwoType', 1, 0, {u'maxOccurs': u'unbounded', u'type': u'simpleTwoType', u'name': u'sample2'}, None),
+        MemberSpec_('sample1', 'simpleOneType', 1, 0, {'name': 'sample1', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample2_bad', 'simpleOneType', 1, 0, {'name': 'sample2_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample3_bad', 'simpleOneType', 1, 0, {'name': 'sample3_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample4_bad', 'simpleOneType', 1, 0, {'name': 'sample4_bad', 'type': 'simpleOneType', 'maxOccurs': 'unbounded'}, None),
+        MemberSpec_('sample2', 'simpleTwoType', 1, 0, {'name': 'sample2', 'type': 'simpleTwoType', 'maxOccurs': 'unbounded'}, None),
     ]
     subclass = None
     superclass = None
@@ -893,31 +893,31 @@ class containerType(GeneratedsSuper):
 class simpleOneType(GeneratedsSuper):
     member_data_items_ = [
         MemberSpec_('integer_range_1_value_with_default', 'integer_range_1_st', 0, 1, {'use': 'optional'}),
-        MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {u'default': u'5', u'type': u'xs:integer', u'name': u'integer_range_1_value'}, None),
-        MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'pattern_value'}, None),
-        MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {u'type': u'xs:NMTOKEN', u'name': u'token_enum_value'}, None),
-        MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_incl_value'}, None),
-        MemberSpec_('integer_range_excl_value', ['integer_range_excl_st', 'xs:integer'], 0, 0, {u'type': u'xs:integer', u'name': u'integer_range_excl_value'}, None),
-        MemberSpec_('min_max_length_value', ['min_max_length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'min_max_length_value'}, None),
-        MemberSpec_('length_value', ['length_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'length_value'}, None),
-        MemberSpec_('totalDigits_value', ['totalDigits_st', 'xs:decimal'], 0, 0, {u'type': u'xs:decimal', u'name': u'totalDigits_value'}, None),
-        MemberSpec_('date_minincl_value', ['date_minincl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_minincl_value'}, None),
-        MemberSpec_('date_maxincl_value', ['date_maxincl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_maxincl_value'}, None),
-        MemberSpec_('date_minexcl_value', ['date_minexcl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_minexcl_value'}, None),
-        MemberSpec_('date_maxexcl_value', ['date_maxexcl_st', 'xs:date'], 0, 0, {u'type': u'xs:date', u'name': u'date_maxexcl_value'}, None),
-        MemberSpec_('time_minincl_value', ['time_minincl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_minincl_value'}, None),
-        MemberSpec_('time_maxincl_value', ['time_maxincl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_maxincl_value'}, None),
-        MemberSpec_('time_minexcl_value', ['time_minexcl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_minexcl_value'}, None),
-        MemberSpec_('time_maxexcl_value', ['time_maxexcl_st', 'xs:time'], 0, 0, {u'type': u'xs:time', u'name': u'time_maxexcl_value'}, None),
-        MemberSpec_('datetime_minincl_value', ['datetime_minincl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_minincl_value'}, None),
-        MemberSpec_('datetime_maxincl_value', ['datetime_maxincl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_maxincl_value'}, None),
-        MemberSpec_('datetime_minexcl_value', ['datetime_minexcl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_minexcl_value'}, None),
-        MemberSpec_('datetime_maxexcl_value', ['datetime_maxexcl_st', 'xs:dateTime'], 0, 0, {u'type': u'xs:dateTime', u'name': u'datetime_maxexcl_value'}, None),
-        MemberSpec_('vbar_pattern_value', ['vbar_pattern_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'vbar_pattern_value'}, None),
-        MemberSpec_('unicode_pattern_value', ['unicode_pattern_st', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'unicode_pattern_value'}, None),
-        MemberSpec_('anonymous_float_value', ['anonymous_float_valueType', 'xs:float'], 0, 0, {u'type': u'xs:float', u'name': u'anonymous_float_value'}, None),
-        MemberSpec_('primative_integer', 'xs:integer', 0, 0, {u'type': u'xs:integer', u'name': u'primative_integer'}, None),
-        MemberSpec_('primative_float', 'xs:float', 0, 0, {u'type': u'xs:float', u'name': u'primative_float'}, None),
+        MemberSpec_('integer_range_1_value', ['integer_range_1_st', 'integer_range_2_st', 'xs:integer'], 0, 0, {'name': 'integer_range_1_value', 'type': 'xs:integer', 'default': '5'}, None),
+        MemberSpec_('pattern_value', ['pattern_st', 'pattern_1_st', 'min_length_st', 'xs:string'], 0, 0, {'name': 'pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('token_enum_value', ['token_enum_st', 'xs:NMTOKEN'], 0, 0, {'name': 'token_enum_value', 'type': 'xs:NMTOKEN'}, None),
+        MemberSpec_('integer_range_incl_value', ['integer_range_incl_st', 'xs:integer'], 0, 0, {'name': 'integer_range_incl_value', 'type': 'xs:integer'}, None),
+        MemberSpec_('integer_range_excl_value', ['integer_range_excl_st', 'xs:integer'], 0, 0, {'name': 'integer_range_excl_value', 'type': 'xs:integer'}, None),
+        MemberSpec_('min_max_length_value', ['min_max_length_st', 'xs:string'], 0, 0, {'name': 'min_max_length_value', 'type': 'xs:string'}, None),
+        MemberSpec_('length_value', ['length_st', 'xs:string'], 0, 0, {'name': 'length_value', 'type': 'xs:string'}, None),
+        MemberSpec_('totalDigits_value', ['totalDigits_st', 'xs:decimal'], 0, 0, {'name': 'totalDigits_value', 'type': 'xs:decimal'}, None),
+        MemberSpec_('date_minincl_value', ['date_minincl_st', 'xs:date'], 0, 0, {'name': 'date_minincl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_maxincl_value', ['date_maxincl_st', 'xs:date'], 0, 0, {'name': 'date_maxincl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_minexcl_value', ['date_minexcl_st', 'xs:date'], 0, 0, {'name': 'date_minexcl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('date_maxexcl_value', ['date_maxexcl_st', 'xs:date'], 0, 0, {'name': 'date_maxexcl_value', 'type': 'xs:date'}, None),
+        MemberSpec_('time_minincl_value', ['time_minincl_st', 'xs:time'], 0, 0, {'name': 'time_minincl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_maxincl_value', ['time_maxincl_st', 'xs:time'], 0, 0, {'name': 'time_maxincl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_minexcl_value', ['time_minexcl_st', 'xs:time'], 0, 0, {'name': 'time_minexcl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('time_maxexcl_value', ['time_maxexcl_st', 'xs:time'], 0, 0, {'name': 'time_maxexcl_value', 'type': 'xs:time'}, None),
+        MemberSpec_('datetime_minincl_value', ['datetime_minincl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_minincl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_maxincl_value', ['datetime_maxincl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_maxincl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_minexcl_value', ['datetime_minexcl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_minexcl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('datetime_maxexcl_value', ['datetime_maxexcl_st', 'xs:dateTime'], 0, 0, {'name': 'datetime_maxexcl_value', 'type': 'xs:dateTime'}, None),
+        MemberSpec_('vbar_pattern_value', ['vbar_pattern_st', 'xs:string'], 0, 0, {'name': 'vbar_pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('unicode_pattern_value', ['unicode_pattern_st', 'xs:string'], 0, 0, {'name': 'unicode_pattern_value', 'type': 'xs:string'}, None),
+        MemberSpec_('anonymous_float_value', ['anonymous_float_valueType', 'xs:float'], 0, 0, {'name': 'anonymous_float_value', 'type': 'xs:float'}, None),
+        MemberSpec_('primative_integer', 'xs:integer', 0, 0, {'name': 'primative_integer', 'type': 'xs:integer'}, None),
+        MemberSpec_('primative_float', 'xs:float', 0, 0, {'name': 'primative_float', 'type': 'xs:float'}, None),
     ]
     subclass = None
     superclass = None
@@ -1086,7 +1086,7 @@ class simpleOneType(GeneratedsSuper):
             if not self.gds_validate_simple_patterns(
                     self.validate_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_pattern_st_patterns_, ))
-    validate_pattern_st_patterns_ = [[u'^aaa.*zzz$', u'^bbb.*xxx$'], [u'^.*123.*$', u'^.*456.*$']]
+    validate_pattern_st_patterns_ = [['^aaa.*zzz$', '^bbb.*xxx$'], ['^.*123.*$', '^.*456.*$']]
     def validate_token_enum_st(self, value):
         # Validate type token_enum_st, a restriction on xs:NMTOKEN.
         if value is not None and Validate_simpletypes_:
@@ -1196,14 +1196,14 @@ class simpleOneType(GeneratedsSuper):
             if not self.gds_validate_simple_patterns(
                     self.validate_vbar_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_vbar_pattern_st_patterns_, ))
-    validate_vbar_pattern_st_patterns_ = [[u'^abcd|ef\\|gh$']]
+    validate_vbar_pattern_st_patterns_ = [['^abcd|ef\\|gh$']]
     def validate_unicode_pattern_st(self, value):
         # Validate type unicode_pattern_st, a restriction on xs:string.
         if value is not None and Validate_simpletypes_:
             if not self.gds_validate_simple_patterns(
                     self.validate_unicode_pattern_st_patterns_, value):
                 warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_unicode_pattern_st_patterns_, ))
-    validate_unicode_pattern_st_patterns_ = [[u'^ab\xe7d|ef\\|gh$']]
+    validate_unicode_pattern_st_patterns_ = [['^abçd|ef\\|gh$']]
     def validate_anonymous_float_valueType(self, value):
         # Validate type anonymous_float_valueType, a restriction on xs:float.
         if value is not None and Validate_simpletypes_:
@@ -1540,7 +1540,7 @@ class simpleOneType(GeneratedsSuper):
 
 class simpleTwoType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simpleTwoElementOne', 'simpleTwoElementOneType', 0, 0, {u'type': u'simpleTwoElementOneType', u'name': u'simpleTwoElementOne'}, None),
+        MemberSpec_('simpleTwoElementOne', 'simpleTwoElementOneType', 0, 0, {'name': 'simpleTwoElementOne', 'type': 'simpleTwoElementOneType'}, None),
     ]
     subclass = None
     superclass = None
@@ -1617,7 +1617,7 @@ class simpleTwoType(GeneratedsSuper):
 
 class simpleTwoElementOneType(GeneratedsSuper):
     member_data_items_ = [
-        MemberSpec_('simpleTwoElementTwo', ['simpleTwoElementTwoType', 'xs:string'], 0, 0, {u'type': u'xs:string', u'name': u'simpleTwoElementTwo'}, None),
+        MemberSpec_('simpleTwoElementTwo', ['simpleTwoElementTwoType', 'xs:string'], 0, 0, {'name': 'simpleTwoElementTwo', 'type': 'xs:string'}, None),
     ]
     subclass = None
     superclass = None
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index 1036d4f..062cbfd 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -219,7 +219,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.24</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.25</td>
 </tr>
 </tbody>
 </table>
@@ -228,7 +228,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 27, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">October 05, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_tutorial.txt">View document source</a>.
-Generated on: 2018-08-27 21:50 UTC.
+Generated on: 2018-10-05 19:59 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt
index f1060a1..2737451 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.29.24
+:revision: 2.29.25
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index d7c3931dcdc7fe64e45b9c09b21457cac2088174..d73bb3dd3efa04f150a3ceb4a40e66e3b62de912 100644
GIT binary patch
delta 13093
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

delta 13104
zcmV-0GtbO|{Q`si0vk|E0|XQR000O88+IE_CC`HTTmk?95Cs4L7n5(57Jn{ucyv`%
z2>=7dafDkaa)euTcnbgl1n2_*00ig*005m+J#X7E5Z(1FZV8Y8F&!9LDj-XnC1?T^
zsE2l{Y4T(drFa5K*%6Q*-#g06hlUQ}BI<be`0m}~-Q8zab-;j8XT1Ljs}($i9LWwQ
zI|`tKh3$|jI_;}Zq2E<it$&ByQmo-#9}&I}t?zW;sI?JOs=@x9LU5_`6<AJs4Orp`
z#X|+W+MN4(y*`~z>RpnO<4P&GCkT|GBkP(Ga*NQA_jGdM07r~T`Z3gX7;;hqxNUI+
z9TA3v7WN|yy=58BxvC#k!9D+T9}$mEwl!?j=8M|gF3zR8h8Ov~lz*dX3ngB|#aFnn
z*KqN>;#@=h7~P@GHGG@5aA~e!b8~b1K`F&VT>?vH5bjzAQ}mGGNSle8e3Cv~28+o=
zx5orrVu-m-t#PmL^st3TXD}qJmx5ByVH%=A(R1ymw6yMAUY&oGOmd%c)P_la;3Svv
zxZKh@`D`7?RG6~R<$q#oV7Gg-9ZS92!Krnog*lqw$H=Y;BAy1mm0<_=3tTo73kW{z
zuJ?Ei#_PmfuyMi3)#(bFNS!eH_4EkIwAkrauBr_FOk@cjvFDF;By`bZaSJy#gUu*Y
z^;ztquoS#qr{E!j_KDs#)a#hoE1apPdQaLefki|SixMu`F@GlWu(mXLJy`$}GAzSG
z<2>@j*&r+fTRsi@B8*6u@~~%BcuLeuvG#r}^)orEibHrl5sWUkK!?o2rg?Vn@K_Ft
z7N;@raUaR>OD<``plHT3UbHqnr-UYlp{pkg))xER*1%6`C99;&82`(0!T7<-vwH0z
z{h9ryResJ@^%)OPO9KQH0000808n-tO$NgsOh+#O0F=g)Y?T?4-vSB;C~|~b;QDow
z@B$)#Bs;b&)8pD{qN$U38o76wPRFw(mLe(ui(mm!Ond)(-^VVn06~gmoSB|yB$34K
z+qdugi@tvIm?q*u6(-i%>%nAnHV`VC>nP6dUJt5r5xy9RH`CzypWgrU?)I0D--=}k
z8$N#emk&4Z#2_4x|9bImJbr)sUi|I*+aErE2!J4N3z?a?1c)*jkH7tKAO_2_%&*4d
z)oL|bU5s>bH@^M%@gu^T;AZ<WEWMqhsEh`1G93t5X6AJdn90kRFM0O>7hNS15m(tj
z)UObRk`eq#RVf9+2-UAu{P244PG_ac%J6obtAUvFyVrwKJ(gpH`AW=}vM{QAZAmeI
zc2F{zs@H=%m8n9Oy6`r?*Ym236C=(>lgle%QI71VBcrQgt`>m18fB^+Gt4qB6E(Hq
z)cc=B7>b*$EOb=OksLy1k+`kkq*x}`V_x1uMONjqjfZ?t;@_%elFEz^G37c@qJ+EJ
zE6$Ap>ICDz2zVv_G7f^7j@IIT0wETE0Om@(Jo}UQ`a?C3BPqTE-bCu_q4*C~L^6{@
z@g1Q10DpPGP`pLthT?mbJg73B!zTvV85&i@i&p@1Cg=Beg|4#bN_@4TfB5lSC%U*2
zvjiUF`&1TpadsunRf=zO8KE@V_kRxp`Jc-|E&hwpw0pn0ym<cdo9FFALi><^gesQ>
zP=)u8N<9y89e^PyNQ^L2a}C4?Vqb|&XNuM?C&E8&%fbea#e6n7JKGlz0}RgYYI=t&
z72hp^>@%H2v?NaXsUrzP)<vWWdIL-H_JYwfm5MVl!QZ$zi8B>0E!+t{#a+3O{r3TM
zRe^i#s;h?>^if4VvGc0P6SdcW9T9>A0R~C*02C_PYqz{wYA{W^S(FP$B#$mFiV+)!
zVtEcf7w~flKhNOjc}s%M&MxHh*&cW~-2gs+N#$s<*vfoZ>fG|wNn<T5CjLzU63@^6
z)a(vtx-4~CZ*erKKcD1}!ssN98cF?ousq*@dU-5VDJ6lt*Z_I48{}?(NnBoTz?(3<
zUcFg9+gN_KYx(o;@)tW+2UQ|~dpg-mhk~fwuHW!%3yj(TMXY*#YP><ri4~JXfg|C4
zTTE_kQybX=kCb+84SXC#$*Av<2g4ofR@xh{;;39+3Cs6Iq9vf7s71L=+ToqEU;Mk4
z3z@`su(-hMvt7*cs`UJS)ECypu1DIm2&*MnMSKMI2_Ym7$25+jgjpwNvtlUZ9BlkL
z9g2~9%o7=BzSY@rLf2dTI)v4Fe*bHwOSGo&5rk=KDDpxz61I?OoU8#2ooU!TSFbvH
zFtT1XiVa}1zG9$lexBuzzMt{b`^CkJ$%~7Aguha%<qFT(526Ks2j;J?1Vkvh#e3p%
zEj{tWNJfA+g?~dq?@J72>bG-%P`?4r-l>9LtD?}wkU%WstmF^lG}lEb-P;Vv#;?ja
z=NBtkWO3H^us|N+Up`e)T%|%+B}9RuEB9gpaglp(LW<M)Fhs2HVbH>L>vlwc>vp(N
z&$E8JBVKi7rIG!A`Z|v8ThXzs*oqNzXX|!i*w)RCFI%qEL=nwh4!L1jj$Aa}v5~bX
zNA%BH`w<E*xZ=6B#0HcJBk2$$X*Sge_Iga8LYzIe=>`VV@CU9W=7}_rzu>tkkai&A
zsLmc#WWv~s^+PaUVQFK1%3daJKM`TDf1a?MU~VC2K)D8ggE(90fmjrjHazG!8i=Aw
z6g<SM;DJDf&iW9O49+5Y9@?D4rZSX6JdiyEjCGC>%VK(6E_;Da-%{ps1zF7!S4LAm
zbAeBzDf}v)0un`qGRA{)jfT;#mHZSiiS8M$IFaS4h~T99gGj?Cke3D5((QxaB?#I=
zff=4F0lr9o6_A<^1f~S7bku`{dFf!f{n_<cqL2W3_@}wvxU>Q@CXQj!4cvXNLBdKf
z=ux~_i*l(zv=gwWs310P2aQNks>~?3U8=PJry(i>>M>i3Dvv-=?7~sL9)ZMI$Zj`%
z&=nF^k43DKC`6IpTVQxguek6dyyQ+vX)Pc4Ecal4PYZ>q3B*doabS4QDbw@O`ODGy
zB~dxpN#=iSVjz!q65?%jSAi&>e=`*4XOkCC5ab{3{&StLDLULqgm-S0IGLXU9nLO=
zZ)!&3b{QMtY&1pU0oqekI-?im3Kc6ZMWoEUh-b<OSU$%9hjk5<PyBFmD?Y??l^J#A
z8Irw!Y>3Wb8<mHsw3RRzGfv|&v~OB=Wsmh}Yep?@?@LlSGZ2E#cT==QFr)_9(YWi5
zoGTNhCQ^cF3iLu;m*s|tB@k5?==2&72Q~{ZD5n^5&zHhIFyiAH+(rf_yp#e^g##<F
z@!|w>kU%}kG{<0r4giKNVh$tBDTuC45zoJW{qRAU`BJ5_zQIT!4*|U{&_aQ=Hh4$8
zfJzjZTezwN<RAo2Hb@|FadXT_+(5pU80}pm$LeBXV5KYrNRgs0KqM!UO&is{D!_yD
zAsD5gIDkhAzyVm$R8(JZ%8+iLpD@*o2!Z4=Wi<mT0Izh;h1O&p)RD-DgcvvkQX&a|
zIz+&5dSo2;JXmmjijo6(loxsq9+sBaZ~#tNbgwgd!tyMOu1v6X@M5SMI@pMK&XJV+
z3~feU2TS<e#*K@(0JAl<^<D$s7gkoaF{&dx6QkT9m?WO|sV}gjrM_SJ;?Bs#(PS{4
z{5hMM{FVRPkJC^uuR&uEILPvd%0f$j6=L$|&N~NBw|U-o^#;q8NF8x(W!#CikkHvc
zu8^dc!d1v^A%TIH;bWSF?JzfvE(X(!P5eF?hguDpkVHu%$Yebja#xOyxQNjyQY}pp
zU#h3D0+?{Et1v~s5UwBv!;9T#dgYM69851ak^dQ>2@8#?Ggh690BC}s3514!mqBPp
zAWSqbWWJ>O0+=npO=Xe8>)BxXY!fe3-+Gg%Hyv@jEkVjW2VX+YFf_TE#|u!ZnOe$+
z7~2hu%k#nX`6e!J34-W@ARGijY*P^r(m+&M6beLl4q=W?!^TQE6u$u!M}1o9?H0V-
zvvFTYVPqa715*^W!Y8T2?ge6h*Q3LII`U^M0lj+r@rGZpLqotmrH^4aYR3#j8Sw>s
zF6T>!-b+NUM}^-Cw?()u-ofK4!QY2zDGCUPyNSz6vU;MvRvsrOXM^cCJsQb7MYEIa
zN9DNq`-F_hkM0C=e#q7%1+iCztwZbhfK4@iVE(`96SeOc#!z&Dhz7`i7eLjNDi0^M
z^pPk6k5CsI8lDr5eOUes+r<P63l0LwpM!9W<wb<fLog`)*2H&ZlM6<yM;8dOb3_co
zl3uHFq>m#6FTzy;;b$mA2+YbbDq;xi!=)@TtQ<J>E*ZTZT_E%>5Iuq;q(C@hh9fMT
zW0AWIiz*{d5^_BjWb%xEG3)bHh}k7#20)0J2xN=3@Rjx`1x7cE#m<Ii;2mCU@u0Nu
z3&{L@87C1u3n|nG3$}{OWthrGJ)c*F0Y9ohkPDz7gea35GjIwo`gGu(1t%;xf#3vy
z`-#8_3l78fOiYeoYCpaleTEr?IL_8IRD6NB_NYZat_(_8P-Jm`juAeRIJ8!Jfx(^4
zd_oiATm)o?K+?MSXYqWAc=qTAMkWZ#W(5}1*GAN!T;gyHJ;B^lVx$Xp7=U<OAa!Mx
zl;ML+s)m&3XNY2tqP+8<2%GuGg|JWrL)on>kf`jJ#u(+N41N+p6<_b#-n2p!^X#2t
zPzgAnUh}L0)=BMue2u{BX_0cn5sTOK++{|V_H{C46R4X7#kY9^9E8YrrHgwYQlYE6
zCH#e?(k1&tj)UbIQZFE6T#BVi@<o+kvY2RnFC-_^hB9><_(K*f<Q!s(TxPK{ZIF<i
z|Dvk^^HK*hW^)$BfPFmUmISq5ulOEb3D}kvLh5$`jUCi~ar5dO;4p3~v$X(ri2zuL
z8VlJ=P$6f!Di5x4EJ404>P@qc`FB_;sZ(+uduP$C)Q<9WcP)z%qBQQ{bc^h2mCL9E
zgcXiBn<rHS#;AuwBMZ$_8@S(rl-jEfBwQURIJ6E#WgvnX98(4oei<m}mVpiyiycKH
zfkmU>*rJhtXo^O`p+zInQ#1<pFB*w0MWdj%Xp~!l^Yb9fc(NQ8Z*$eH?6e9xZ#U|J
zf}{k}7RSxni(0{L_!fBRIMeVJEL_Z0P8;Vfs*Ee2#2h5Y%r;|?6c}~^)SzAPXaQvA
z^7d7nBp`G>RY5L>8c;g3U_(i$23C+sws{Rcu`pME(sY?-pUf$qF;wl&bzUVTXAr>_
zN;SfRo*QUfN-#cD+-v2ff#U}=+Pl;bRv3U%L~3RN(8Jbt5R8LM-B@h5<8!>x35(Kh
zonb(vET`<a`+>v9((MXrZFVVkuO$%{fnW~=KJZ({W7M&5-%781ZL8_E+_oEgPfBqU
zr&vvY6DOZPqey@Ld^)tjs!C_T*#`-(ZI-Bj1YRcbZ(uokctd-z@^7B9PUYvv^>5ZL
zWl!+M_^WGGW7GnNnk{I+I$O}t#Zbg7U7cH?1@gn(-AuVQ5JtGi!0W-Zj^JPOQB^j>
zzQ2n2Ekr@EV@l`_Ya4b9X@<Ko^XW3&4Hc|^skih=ii0evq5%%h=Hy54*H^+uZrFT5
z!X8Mt5GydDPNEQQiBZ3yKW%~m+>8z(y9EndBn+5@Nqqmr>9Fx{he()PJUaF5=+0fU
z3UVes!Rk++xptP2yIR(Su-UT#1;-E~Ll?wRz_;v1Zqaapynn#)dbFaxjnDQrW-aW0
zh^ky$Xc@H=B$CY5A_MmVb{L#(Sexlnwt3{-_3XbP=@8%r(3jw3-N9J-7VaSA0!B{k
zft)qN_GE}Y5Yr8F+KvTWfYEAwfse`n13dDy>-dA(8j-oLeF2BDw0eX(<3}$H983@j
z$S@#rFE^a%ri=6=DSU_yT`vM!kG`jWXG5+EyXDljrB#Lo(6|mN#!mqz0IomXoI&=A
z4I26Hl}zrfWwrV^6n=2b&BtvGJQoDv-MigEKP(NnSwje=kS)iU)wL*RY(!FFXGdVM
zlRC6IO@STFm1!*^RRJme;=IIa26_X)DvB4B1=Xcf2wrsN5=zw$mayvJ#gMIkmbJ~7
z+k`zlK!-~snF&h3P;6FgaQFt2LrZNNwVS103H&J=3i<&pQPVz0deNqhs4;IU4%;dV
zeO<%-3JeD}6+3kXayoTYf#k+!`YZ}OpQIq(;c=ymQUV~}PSUqib*6n37YZYxb<N^W
zMs)_Ih{{}oc)Bw1&!WX)5r(*budWN^)0?ls*1=W~A!f{>;u3St*q{!EiaR*DESIAI
z>`tajE}?*=R0*UP8nlNexo~@?Q0OJ>gsY|Up5{{IoSFz2?XfZ{zy+;FO_}diK?Y2^
z`e0A;>j(rMAsSLe0(YP+Hl58{WSz~y^E?yeEXqS1*$mXR55OTfIe+_q@#d5a5fuoU
z)SOc<0KkYH!7y;$O2hR&%RHtJjQap^#1Hu0=+Q(TTj{<rhe@t=i?wL1=*%hO#ZjNI
zadO>Mlu~Fgu9cO)Lu0IkA5OKK%Zo&k6a%?125Im>V-ML<AkBS~I2=N&#qS~)ptO_)
zmahxd<13A31;J7sjX1M^nFY=VDVSZf^T!e^B#*I!V&t#Hw`_L5fDm~^*jQ_twRtjO
zqe1w+Zea9N@h2Q%*J7r@XEzm5AW57ub9*zxFQW_xBTFntjU`(Jenw}lM%)qDwU9YK
z1R0yqlxX}Umy{upim8l@#k+E)Z4~5T=vwBis4iCtjN)Mv7E(xm{sBRX4=7tXkOLOT
zn>TMTnx)I6x(D+mgn>BP%jw1+paNX01HYlN;I8erpCC+~$<4|6)WgSUlxy0c5Ezv#
zcxvvC!amZr4-i<vtDTuE!&4Yqn~~o$Su@=+J%gqW<b4s}Q6-FreaO!moFN5}DLZw8
zJ{T*DHjD*I))Ab4|7?!}Mo;JfSa7#{%}Uref&>it*JcRvn1ILP`5FtBXOoeA>xr<V
zy{l+;N4REd>@`yzIi|5nh*YpM42*=2P^*H2?OM)ZL%&r{6AwGRNB?INo;8NO5dXSd
zH<CzguQx*Ahe(8#svGMaGDr-yY;b@LfxLV}-`HRS;J3kl+8fa)tTKr5Bu7V>R6)i_
zBty}G-57&%18TSCVS)PO)K=g+#pxtL{M@Hhpn0O)LaD9=w~yY_`p)5&j+@+XhQnnc
zXK`m5^CN;XEcF<+)+L6Xy8NelWkXj8I#7G4^y5m~Jq7KcQ=)BEvOgJ%`W~ecNA$F*
zeiPX@52j9k2pFjV%ibrv`;==mxS_61Y+T8L3TjYwkwn{?^W$9QCAn<WJ`vNn5!X0Q
z;=4>2R8^&KGt$=uPlqhwjD(5;N)R{&nW-i`kxT|i#_nQleYV;)Lj0_4RpBmvU``0E
zu}Gt_ih-U)+nzDn554GK%*$_GplOrMnv8pkX(M=lJ~H%mJUAHgnxM&RSU3n7)W5AW
zMvOvbr6Fhw*$Fq^HXBv0ptD!v{=4RG_sj7AsIgpI3iuJr7f2@#b{;kW){!J-h!A8b
zJ2v1vO8|L8%af2nZSe(#t;%!lJZycI%z|Dk@r2-z@t>gexBiygcHL*=z?b{D_+_iC
z#+ONd!`aTpnI6U95+|hX@Cp_F)XwX)oa5m^{|@Ik>G(1~&m~g*!2#$HxposUS7wmA
z4s9%zVZoOv+R7U1w5KTw1}9uCXkw}+I<5N3J(2cuspXMGY()fZGCrZb2M?R?r?Fph
z7Ts#;FLq4FEl43~1`BQO<CI;2y%%XKY_{ZoPiX#)V(frgwy-rWDc4|E!`{?1xL}#D
z{$?U?kF%gV;qw-P`60lyjlWu_QN^%?w=rWAq`KI0d-om4Lt||G=FU1lOlF=a86s|I
z$&`$ob*;ZL^#5VBCrY{$LWzvZsRl_e@ntmq&L0Q%>h)a7p=dCsuf$Q~mOkVlpw;Am
zu1osNLl6^hCZIcw5m4!#<B8fafHvQ=cwr@T8&vemoYc1Jk9CXL6{6@&--p#*4?H_?
z-R9Z4i9D_S2g*cDB(s%Bvkr-VsTC4i_w)iw0GWbNi_`_y*z5qaR-R<wN*`&})`(;n
zZ0b6W3B*`e2X|CZ>hCNosHM3F8kbFfSVE~Rj_!27N#Ft=kWBx|Z28@_iS;&P=N2^c
z1yhR6u9lMy8dCyCy}P5GHto=+_+ZC#+K%I-2{0(RW@d+$>8A~C(F*Ruj~jhiAfpF#
z<c;vLuW9azb0*Z7+r$P39c?M7|Msoga)Vn$U-%9>CpE<?5*9i*ig}u-BWBEhWnv?C
zPH7!T8}irt7CEElm2>K3v(&lA=tAq#&HdV`2{#3d#B+laP7pSRB|mLatW-1};2TWt
z3|dCG!Mebk#j?uhnibZ{@ac%6)oZ)erl$BHaD!cT3%CqbgsFzS;{<LRCh9>Yr}g+(
zoVAk6ps@;`C1Ahkrul9%p%x2&@RBxn!s~IQ=p_cs8rK4Kr`hhFHDZWv{fMe|7*ta0
zvyLC}U5%4Vk!tTGk>Uq8FH4YsoW4*g?kd*<_L0FVeMMgs<q8Bawr^gpYaoT_Fh5vv
z%UqWAOf~khbV<Ffy75vcNLB<n79e|PUgP)A|2K-~Wg~Mg0q`3)p3Q835;i;EVZX~m
z7a~Jv^~ue1w))HW;5ZCq<&I-GNZ+^{FxwyxuE%?=(rLZ(dJONn17A3RiHeRv4rs5<
zI#pnYqq(2*Kn3mCkdwfx;>0Bu(75o&BLj696!56AH(AB`6x=^;kK8#I?NwF-qRXrv
z=Hx!RJ6rmvpVVQwcS=Bir)0JyaIe;<^^u*M<KbSZUiJ+_;`I|SLvDPUN{2U;TY;IZ
z5?Ktl?Czl!6=R#Q0taM#CbGZ7(y^_;c|)Pr4)Nxl>h$>sq6L2UjFibk$+xEtBE}mw
z7HGuV{?`+YJij&f2gj_=tdb5OPu+iLfvq>w1ZTCRt?FSd*Xo3SQ<>}%hbq9QrL8#;
zpi|JQ3K*OTD~teDj}ziRaI$YKYal?y9h?6jCVfi3QO3vJ(>T06dOJqEr^A5fHTd4H
zoX(cnk&UWEl&yeDIA)Eb<muFJYja_*4DX0<_1Z-4*0t(cs70<JyrLq}974H!xGxP0
zV5NFb;c`{p8*rk3cKV1qZVk=Iq1tTg|Ju9K=QfUG|9$_8O;ip51qVq<vBMOtqA5yN
zg_2StWH}|fP)lM-tpn~dy8ubN5Bb~Q^flL>04cq^R9Iz;++&WO-kCmr-3?;NR{B;T
zP?^Y@Bl>JEqH|IAHygQ08UbP;+2f3Jgwrtiek5o=S-Pfw5tIWKi#D^kN3)?(A#tBF
zmI;V&ag^0fyfgD+cDVw>j&01j;J_(#OhFesPb0Ikf6Af(?u{%Rvv0@p{|)(5;L{QU
z3`ApB#5;lgSHpFh$?{UQMoX-=-4&Uk$u>8~W`z=jA3?s=I?GDTkRrv8+>usj{KjGo
zEn&vA?ch0oOK@v~#7>ZfD6AYpQ01<~4!y7C9*k?2Oj|-&?SqhOc0SIH#Y}%df!-v#
znVUOB`*+*I?wJfgBgyU?5rh&2vNA*B(~J}#?te(We`C|eji%bL9r|_vE#m%|-GcOo
zpIZPY2H0;GxYf!DbD60buCtV&vLw=6fjnY`s%!0kj$aBi#ve8eN=slX<;V^i`)EXO
zqpz3`sM4=e8;aPRO#xV7uayPvlWajXkHDA|BTv+@FW0EMSwP9i)B8E%L#!7;gWo2T
zHK;b!pyIB-Cf9yYMr3V;cez@t;nkw5z-a>WXtwsWVpOFQK8~E6NPNC&>4wY!60k>e
zrLpmUylvoS`;>{0)BxmFKV6;m1q3su%Y*$OR6pvQ3MFi%4_od~XR<qZo28K3R7qo5
zDu3je+TPUtoGxG+@IxlpnSVe0ExL*PtK2pGc!L_(3`Is^4`5jC(+mfGysig&z86t?
zzGeq8^`j(ipsY18zA{D~w%<Dy>m9z!8&q$9pdW{0m4*oCIwEo)6ooGJt#*-Ccy(+K
zLk1A|1kqo`fxDc+BLpN=EOek(A9|@+eYjk|`Zuu}I2@h4fEW2HS@Q3g8JT}q`xO0x
z5!oI$U^;w$4ur_KkS5MyGs*Hb{~29^NlWwAm68{H&Z00*Jb@dy2Ps-N6`lo80LIRL
z!*&@4Mr{Uc#>&GqBOKa;x))!)M0R4%;bU(!!jbHU-xR&@8)t-?vEYIJU>G_KgEVj$
z#^L~vVeC5{{b`#e)#-LfeW9E?e15%7*+Id1aV%dP`X&(!UF++u3H|GADEILcB_zuc
z2CMk!7tj&P&z^w8g>LHSUDE($<0i^~NMZ}76C*MqrZ=Eu)<ZNbsS^%jbHE7#?mGty
z6NU7ovDvW$DG<xl1xE`(Y!G^bs5c$m$DO-bI>bWBu=0TyPxLC*{!wr3`O^T~%^8@L
z;3Qs_SR^p$l#(j}%`Xw;y3hzN*HdBZIa!^wq1Bs@2qWS&3KtseR>LzV7RoGt$}d?u
z<iKn@lC<A!>Eiv3gKWi87jTe@2`{yy<!mOhhCwr=NJ3dGn5t-`_VvEtr_jjQ7C3l!
zcSj0mm%u@Jcxdd7JRA0tc+sbYKOM9yN*G)R^qgXQ=@Z|j_F1<h-J#$tzVIPtxjGB3
zGZJp)StrZOJ;Ptqs<78vup<S3Y50drMg85H6(pb(FU@|}V9S<JSA0;?*_eRWX7?bz
zbhxDK5}-q9WMUC>AS#p}A&;t`p99ce>?kE&3oX}~9eYe!EU^)tv}QsUZEpv83*ZPb
zy0GW30)r@l51gC~479Gg2Y$LJO*r<HcRJ8C#lDy7eV62S3>YhKD3zjre8-R)0m82f
z`PG8s0|@In3BWyvFs(jD_OhTs&nXE2F-TfC?31VhTz{Ue;26N~8Jq=}qezY1X$F3h
zxoW2O&0I+$VISWL{}}Fq;NeQMx-$_hu%!bQspbdC+<pT^TZpP=0hxtTYw%-{qt?Z^
zSk4ur48xs45a3)t^`eD;VvA*O81~NMWwC}|AcfH)iF>~eELHCPN<@HkZk_%RYw$p5
zujLi!c)=eQvdZ|;;!NloQU^#t%fCzi=!fJ%bmXdwG&8s|kxRO<3ANVT!Cp%TNU(df
z|D>gTUWfJ`_;36&;O~xNXjO{DZo=lq85CKJtcj;|QV{9TQt?}VX-UL_Z;@nDP@b0#
zYP=h2xw<}&iWo)z0$8s8F2d$q8#QiR5eJCnY7f1^svKmCi=Dv1W*MZaACgBp?`ZBe
zrh{|3SS{f4c9siHYT0PbxR({9?+kp1y4t{~q-9fvGom)jhCc+^fq@G4k{~6lp>1QB
zaM~-GBw&JH$}G`;yu9}@O+182qGXDIZqv(n#(!YsJ@_WTw>_(45^MS;Ch1_Y*wRWN
zL-j}5m5-2f3b8zRb_m5WFt<U;8d2tz%`6hvxaYQHlwwJpcduL6=xPPAYCAH!u1w_)
zYd2K;x%|qCB_q5#VAx@c<5V={&U3OqmBv=7b!xYor~u%9htAT)+VP|4BwvCkw6lGY
z$}0)S0)bZEW}&UuwdhUmra&UT8PsbJ3fO@-yw)afP1q&NRK+j?hD$^82Mo&w=b;k*
zp==b!$FnxG{ctVTe1PHp230_mu5qIgn)qd7Jd(P=YN5vUi3SWfHTcXzXwlbuL@&XG
zwp>)~M(uuoq;GzjTlz^!HXt?SdO>;$C1;t@^4BRWAW%3Gz?W89utWPy+E#JN<K-%s
z$OW1)1^&^%DD~1o*sQ#`<fx(;J%Q0Hy&nK|6Yuw06sKKBv+|C2tGQ7xd>lU8u`eOE
zp-Tq=&2{6gyZQTZ3E&5lNw%Ms@XPXkW3Z(Z_#@bV!OgY-%Vf$n)@12_m>B4zabCHo
zqgU#{x6S1y$%jT^qNWN_@f#?kzKX#7VJUO2hPsiK+Er7n(<W;>tI}Bg&T6#Qjr*$7
zUj4pmHQ2h|d`)(=@lQbC*_T<U!;>G5-%r2NLj7<&J^lMvTBxHR58t1>KHh$zJd;CP
zKv_e7U4(A1oGr^H5FDp5y;MtCgl-0s`&Ug6lL-MK(cX|;A>>|=t{5&z7Prh`xUCTQ
zFv|l!A)s1DENh!x$2k)S?8oR8h?i>+oy1ZM`0of{nd)CcRs$%qptR>@>$3&fE+w^)
zbX6j#tKHc}X><06d0cWJjcmMpgIEs<445*1ez3{LX(_NGLp5&PN+}F>alnfs9L1Wv
zj(tJ!6SZTd&ZwFf#sSa`g7YR$3#NZJ9V!Vz1XV9g7nP(tfJW#>If0h3!D9u^kfY`q
zVslGb_i$ANku@<{Xmd_C!-9AiEf#=v!mP`bmy5y-MC=Y&>@FqoqF|V22^%eRG_M(d
z&I=GnUFB@pw4Or_OU6aZ&OhFvU!H4g>RqwV!%>f?#r~Z*nXGWc+b0->xVN*jJNfy|
z$tgZ>?X>~zlBy{|>Z3f&o@L;p^X14aJW|QM3pYVb;s+*PvyfSS5#PZR6-~P@I~zC5
zF8=2V@a)z`Uq4vO`cWP$G={6~jM6@TI~plaJ9%s3Es1WeF7a5ZnjViM64#nN62%?S
zGRwP9O?t5wV56mZpk=|(B`a>NVd#@i4MN1#L$)WTwRXyOU*SfUVgp`fe=wNKIQPfD
z6~`p=_AWfGtZPbXhgqI1tH+FW<~M2%Yd&LYjR#<7O&i+UY&ox1vTG{W1hUhAlXltZ
zp4FUG7l<n{#!FYSuu>~*8@r&h4gR9YHxf7l9Y~U{0&f-WEj<79O->ExzsxsF@&R7=
zkG{>U1U5~q*f&Ario{%q^rK0}gbM87fQ|EOlxAc@H7uK=JxbL`U3ND+K6smaA4P4d
zkHE;3F=VC!K$ss#?jo3zmay-CN-l8b?Nr=p{JPp|k9GXY9;h@Ke{D{B)rwg5EvYlK
zAZZ&oAO;A6VoyQLL8x;8ghTFxCFZL(akOGU#vlgVAW;J}fF{RY9E!U-aC0|E96XA$
ztcKRHZmHUYfho4^L63enSrz$2?Rb+oy<uxr5IhPVRqr(F4&HpFeI?U>RUE#}Zo=@-
z;qJ5jXHWN^ehXE!cPx#J_cw_i+#ByjV`#{-Q_JtA&CBsa$Dka{!h;Yzc)?F`ewG#S
zj9!JyFQbK0SNiHqQvx)mM9bxFijKh2<%N>R32R)s#R36zi4P1^2k5HnKN$q&hLW=!
z6gnQ;GGCL;=urq=kfj`dV6pI*;GbgBbqe}rRy_>UaOL3fC8geZ#4sjzG#B?d7Xasq
zLe_`3$JjGxfCyqri1r$rIL`Bo?Ou8^G@)}ljXzF`V~Y01&;Dpk{WM42$=G?#o%E&?
z_m`%P290!Z#-(OqO-2X<@7EEhL?9wkCmL1KshLa<L8>m~Y9v{IH;T1Ut&(y?y%dZ=
z3wLQa+O+gE6R?H79+Gxl>DNd@d%Ql?x=^l`dJYA<5YQr`HRBF^_|P=ngszRWZ6R$}
z^1@FZB}HsM#{IpFk_BbPVA7R7csTw6FrPv}z;itibU$KPrTXM&{l`&$Sq#I+kN<HC
zzp+bFQK4T?)taM!0O7zg?jF_M=wSkpBn_SBiAAIm0KRJvA4?1_AyvLq@8DGB!!RCS
zj)ztoA;?3RD>K$0ud%*Qoqm$B{Hhp&*l2t_J;F}(MA+Y{ggNsNC93o(WV>|L<1CLX
zvNLt~gH&<M85NFGC6fV59E827I8TxuJ^Dcji%LNTv$hj|n_rij1KK1IjuJzJe~W&0
z_8U_ZJm8W~L|q-T3<DWJW^lc*SU9=BM-iff4=fS>3v1fb`gG4_MRcnlK-#zHy070R
zfRD@AH_>8OJqb`H^@YI@$tgeZxBjFMdut!w8KQbND1QMswfP-Foc3JTKD<})h79AA
zdJWbaUKA96lDoetQLX%X;SU|V-ZeNTTnZuu&Wv67@hwvc{u$>nescZZ2weEHp2IWz
zY(U)bqOQPAjLbwjhi3wH@NwR~dXOBO1#1y&+)y<-tvrGfM2*|`z-9cRizb5>Js6qC
z-FVl*Dk50Nfhuy-K2{MQ)JtARCmVcLo}7a~tGMldElk~_G%tvl$~65KSv~_j&POYv
zVRUBU6v41*|J{UJtXs;uWt36b10tBA8HP22YQW((i(N&$idAY@A+tKrGq4Ec$(k*r
z%RUqV;{m8YRcpGpX>>WehAdloIvZa_%k$6p@K`-I7+>bu>bmF;K8<z>fCCL4@qkd#
z;tlP8b5!8IA<Yh<8*9e)d$K*c&)Qpr`g>?z39K`_pQMnt!`gc2#4-oE^?)AnTQCkB
zz@zZtz?HtaIdwXt@fpI&>jRmoc`_-G1nwlKNZp?859(D?q3*-f<9c`Y8=N}w%J?F}
zYCP7+)e~ckF!DyJv>!_Q$BF?45iJ&w&=yU9Igm?R=O2YDFW$WwTg220YmiJ5mfPlX
z3(@EHOWJcsSrxNF=gaIs)<9DU-Jmc=wd%8jUT;t}H0BiUz-EzCJi`?q&@Un+fJjJJ
zUcVEWQU0!EB)Mr?`Y%KMCoxn#2XP(2|L!&ax2*99zuA&SlE2-@zoeQg%I`LqGclEa
z`>gS8LlSye=r#kw^=p_>xTcaP9e?r6pakkhFfg6?Z2IB!@YV5bdi?WLjgQ^V*8hVK
zMRXbO3-Iyz^XFjuh0iQWFPK{i7g2td^elK^gh~RtnlANl<GW<p2Xt!*&I?K+@SJ)`
z{d)6hcmG%6XVrTjb;$5{2jQ+I4^fwY^q3wcfRI6b-7%tve0_cM6bvB&*%ApoLrrcr
zg8|KEtjIl*@T&RQU*LZjuCdHPL!mymLFj%&7X&#V8KBhymv^PUjwNJK)v~hv-{RL4
z)G5ox>!zlVs88=RXAICFvW<sGm00XHntfx|hyij25gC+i6ca;1o(6Hm+~Qw<gg<Mc
zoz~4O;wwBtSS3{v>m;kBtG*){1puYCBLjH?&(7KoVQ32vz%<j8a)7F*L}>v)x&jB)
zOec3r6zZ_K_wWgo+8ae92ml^Yq4&|}C{N>}vxojE`3@^0K+$*j1bl~-vo^w*>Iv7A
z=WZO&p#gwl`4oO~1BW5Jrh_eiQ1u00Z6AT*13P<GyNAE4ca6LBd}3W(VpY!&Dvsp|
zLV?za5+*8adznHG`3iqwh35Wmed2!sVXzLK*D4)y+qUVfJYb9q`O{9_?XNS^Y60QR
z>8ncl;FsWZoo3fXQV=7aa{gQk3&DvSI7-f|o@zE)-@(k12gwb@8&zL_nRUW%E`z99
zl|_)RC4rca*%CflWRERHi}UPyy}`NdmXrdqxm>aeQ{%?@O&lPm0VP|#y>{$|2~di1
zq(rZFLil-7TrZ-vWFo4pc7(?>h!;V(h(Y`kCBVqbgVZ5hvAi2n*de$L@;L<(id+yn
za)CbAN!HlpSYKuV4!j(Ho7m-ae>%!nDT40sbobMUbvW9e(a~O2m<Nvbr*O1OeLy_0
z%PGS&{?62xr~}<eLRk-8wLzd(<&NQ81h-A80Aj2Q9eQ26C?>VzUayv4W;oprFMQ12
z<h5U-1W3>0yE}D+Urqis=Q24JAY&WLt**aW>nvp4Nr9+O?=k&<IzMD=@zll6c<0%U
z`q7XqL80>fTqAi~)3;ctW(bYT)y7EyWbO^;9Rpm3AT1?Zr1*w&*?B=DlhqCNvEIZB
zfW^W)_8sRH4KBWf@GW@MzM=^<5nQ`Y%;KET+Xb~*;cYGK@Z)s)H^mMgKYkp)KmPgW
z@zJ|ClYhPV>xUnIPu?89?Z6Iy4^Lj7PQ!OE!=ra^r-w(=(=Wje?~h+>#}0?@PmbRn
zZ^jNM>Xi-HVfy~?r{j~?Z(n^acGx)1mo_D;J_qG2ZwsopeTFfrBhpOafE@{fFS`g#
z!4=ro@cf@QR~~gvosMyRP$&+HQFadF`_u2g|E{J69Jb?s7X`4+5xkF)aTyjVnR94+
zdK0G!K=}<+6QqlCNN4~_$ggy%MvUlJ;(*%m)j?e(N|$fQiP$CIv}8yaabmj>z*|OF
z(Orho4I@tCID#aOqus8-gx@M6Rl(sUyPTUwPsdVtDI?v4o{$EPT*OvMA*=k22w@xs
z)n4AYJwcy;7u4avuQAR}XK!e!0nE*ErgUqP!7fL^Md#;O`iJvEk}DjJbg9h%UthOe
z^3_X9ALR(q6&x|zHJ$kGcd(olxa;cW<QO{ciDKzCSW1-L?U$8qrbN=HXf-x*G)tFU
zhZ3s7&#J|2dtB+VXIxGJ*B(*RCR&i<P1Q8|tHm;Zxl#+fSP#Op2sSN@SG8v(MKyH(
zkE93+btHmqk2#r550rjzU{|uH@<K?MW}8!z^7NVsXVW2Go_DN|ixN9T1ZNje{#I&|
z6(fkCSEoe`$0wA~TXto#KLe9h80e;43lI}Q>Ku^0BGf&F+>^s(KY;1sR>-XRjFO_b
z?6&EDE|J{DA_Oe+Rb0I}faz6w1^f@FOy^SG2oAi@HVgHcJ$R*oZ-_~P)<6;Dpm!HD
zH!p?Gni_u27W0C46^~$u=fes`VYIl7);J(k?Wle<+(>khFb+G2JC?Mta@$g{yc$B1
zkGS&K2#4Ku2in^K=BQBdj;v0kh(wa>@@CY3iNhC%5FVrGpcHZrmGBbrV&11x?q&?h
z2&7%p0OdN(QIIj|M=3jri3NfJZxS%4^N%1On5tN3YqS)|DQ>3*mhu@^w-Sx~(xibN
zQpps^yUGzHt{Q6&$NyJ>$JYxe)LR{P{5QCFVs3Q|IL6ohtwW8~7T+x{v~!b6-~?EI
z>i@(QVZ$%=y{{L;oInl<NI>~D!kDWjc&}A|z?kDr80c$80dEsz%VBlaK4cY*@xvdt
zk7^xHytvjZyo_?iP!h^Ye|h1iYM)LiZ@w)NbjW|Fw~HFfEKMxv(2_GsmbuDjhCaii
zf{D~2VJxhJ{3i$!)17-8w^YF9nBnMuIrayYO@X_x+(u2RX5bLr;G`klPFaMw$RK|u
ziUqlMEu4JcsaUsFuT57rU*0J>^rs}gH6^8}bRozF<G=(PX6Zfz7k)R|`EIoLZMe6)
z|7<7xFg>!Lff{?=i-rpqlxijZ{`(hv3kE?>jfZGASBfH)BF_OTs6>dB(k!MFsu}Eu
z9v=s05zeyt8vccsz7PHvvqds2hY1^Y8%-t8g8E#Odbu?N#c_m_;Jh3lP<9(l2E!jr
zM=t;Xl*Rx67yuXm000000RR91w1KSxlaaX=li&gd1_b~EC~}085V|@6Mw3grN&|&5
z0F$9I6_c&HKmpH_?z&k5BWshvycCmNyGjB{Y?Hyf6qCKXNCLHilfk?clN-EA0tkeY
z!MqcbdAvpehLga&S^^A)lfk?clQ6wX0>p-s!MqfckiAL)OOxBZT>@2=laaX<lTW@a
K24=Yc0002DvA)g#

-- 
GitLab