From 5989327f65d7fcc8a25538668e9b12671ecea601 Mon Sep 17 00:00:00 2001
From: dkuhlman <none@none>
Date: Thu, 31 Jan 2013 10:40:21 -0800
Subject: [PATCH] Switched from list to set to check already_processed
 attributes

---
 Demos/People/people.xml                 |   1 +
 Demos/People/people.xsd                 |   1 +
 PKG-INFO                                |   2 +-
 README                                  |  11 +-
 generateDS.egg-info/PKG-INFO            |   2 +-
 generateDS.html                         |   4 +-
 generateDS.py                           |  39 ++--
 generateDS.txt                          |   2 +-
 gui/generateds_gui.py                   |   2 +-
 libgenerateDS/gui/generateds_gui.py     |   2 +-
 librarytemplate_howto.html              |   4 +-
 librarytemplate_howto.txt               |   2 +-
 process_includes.py                     |   2 +-
 setup.py                                |   2 +-
 tests/abstract_type1_sup.py             |  36 +--
 tests/abstract_type2_sup.py             |  36 +--
 tests/annotations1_sup.py               |  24 +-
 tests/annotations2_sup.py               |  24 +-
 tests/anysimpletype1_sup.py             |  28 ++-
 tests/anywildcard1_sup.py               |  48 ++--
 tests/anywildcard2_sup.py               |  48 ++--
 tests/attr_groups1_sup.py               |  56 ++---
 tests/attr_groups2_sup.py               |  56 ++---
 tests/extensions1_sup.py                | 166 ++++++++------
 tests/ipo1_sup.py                       |  84 ++++---
 tests/ipo2_sup.py                       |  84 ++++---
 tests/out1_sup.py                       | 242 +++++++++++---------
 tests/out2_sup.py                       | 242 +++++++++++---------
 tests/people_procincl1_sup.py           | 284 +++++++++++++-----------
 tests/people_procincl2_sup.py           | 284 +++++++++++++-----------
 tests/recursive_simpletype1_sup.py      |   8 +-
 tests/recursive_simpletype2_sup.py      |   8 +-
 tests/simplecontent_restriction1_sup.py |  70 +++---
 tests/simpletype_memberspecs1_sup.py    |  28 ++-
 tests/simpletypes_other1_sup.py         |  16 +-
 tests/simpletypes_other2_sup.py         |  16 +-
 tests/test.py                           |   2 +-
 tutorial/generateds_tutorial.html       |   4 +-
 tutorial/generateds_tutorial.txt        |   2 +-
 tutorial/generateds_tutorial.zip        | Bin 48724 -> 48722 bytes
 40 files changed, 1114 insertions(+), 858 deletions(-)

diff --git a/Demos/People/people.xml b/Demos/People/people.xml
index 8d2460c..e41aa7f 100644
--- a/Demos/People/people.xml
+++ b/Demos/People/people.xml
@@ -77,6 +77,7 @@
         <elnonposint>0</elnonposint>
         <eldate>2005-04-26</eldate>
         <eldatetime>2005-04-26T10:11:12</eldatetime>
+        <eldatetime1>2006-05-27T10:11:12.40</eldatetime1>
         <eltoken>aa bb    cc	dd
             ee</eltoken>
         <elshort>123</elshort>
diff --git a/Demos/People/people.xsd b/Demos/People/people.xsd
index 965b650..b474b5d 100644
--- a/Demos/People/people.xsd
+++ b/Demos/People/people.xsd
@@ -94,6 +94,7 @@
                     <xs:element name="elnonnegint" type="xs:nonNegativeInteger"/>
                     <xs:element name="eldate" type="xs:date"/>
                     <xs:element name="eldatetime" type="xs:dateTime"/>
+                    <xs:element name="eldatetime1" type="xs:dateTime"/>
                     <xs:element name="eltoken" type="xs:token"/>
                     <xs:element name="elshort" type="xs:short"/>
                     <xs:element name="ellong" type="xs:long"/>
diff --git a/PKG-INFO b/PKG-INFO
index db4abf9..b84a8cb 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: generateDS
-Version: 2.8b
+Version: 2.8c
 Summary: Generate Python data structures and XML parser from Xschema
 Home-page: http://www.rexx.com/~dkuhlman/generateDS.html
 Author: Dave Kuhlman
diff --git a/README b/README
index 80ffe7f..8b2cc14 100644
--- a/README
+++ b/README
@@ -16,10 +16,10 @@ document.  The class definitions contain:
 
 - Get and set methods for member variables.
 
-- A 'build' method used during parsing to populate and instance.
+- A 'build' method used during parsing to populate an instance.
 
-- An 'export' method that will re-create the XML element in an XML
-  document.
+- An 'export' method that will re-create (write out) the XML element
+  in an XML document.
 
 - An 'exportLiteral' method that will write out a text (literal)
   Python data structure that represents the content of the XML
@@ -141,6 +141,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.8c (provisional) (01/30/2013)
+- Changed generated check for attributes that are already_processed
+  to use a set object rather than a list.  Since sets are hashed, I
+  believe that lookup is faster.
+
 Version 2.8b (01/30/2013)
 - Fixed missing underscore in reference to member names in
   generateExportLiteralFn_2.  Thanks to Sergii Chernysh for
diff --git a/generateDS.egg-info/PKG-INFO b/generateDS.egg-info/PKG-INFO
index db4abf9..b84a8cb 100644
--- a/generateDS.egg-info/PKG-INFO
+++ b/generateDS.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: generateDS
-Version: 2.8b
+Version: 2.8c
 Summary: Generate Python data structures and XML parser from Xschema
 Home-page: http://www.rexx.com/~dkuhlman/generateDS.html
 Author: Dave Kuhlman
diff --git a/generateDS.html b/generateDS.html
index a249016..2c56439 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -216,7 +216,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.8b</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td>
 </tr>
 </tbody>
 </table>
@@ -225,7 +225,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">January 28, 2013</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td>
 </tr>
 </tbody>
 </table>
diff --git a/generateDS.py b/generateDS.py
index bb1d880..5d7e56e 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -155,7 +155,7 @@ logging.disable(logging.INFO)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.8b'
+VERSION = '2.8c'
 ##VERSION##
 
 GenerateProperties = 0
@@ -2071,7 +2071,7 @@ def generateExportAttributes(wrt, element, hasAttributes):
                 wrt("        if self.%s is not None and '%s' not in "
                     "already_processed:\n" % (
                     cleanName, cleanName, ))
-                wrt("            already_processed.append('%s')\n" % (
+                wrt("            already_processed.add('%s')\n" % (
                     cleanName, ))
                 indent = "    "
             else:
@@ -2126,7 +2126,7 @@ def generateExportAttributes(wrt, element, hasAttributes):
     if element.getExtended():
         wrt("        if self.extensiontype_ is not None and 'xsi:type' "
             "not in already_processed:\n")
-        wrt("            already_processed.append('xsi:type')\n")
+        wrt("            already_processed.add('xsi:type')\n")
         wrt("            outfile.write("
             "' xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"')\n")
         wrt('''            outfile.write('''
@@ -2237,7 +2237,7 @@ def generateExportFn(wrt, prefix, element, namespace):
     wrt('        showIndent(outfile, level, pretty_print)\n')
     wrt("        outfile.write('<%s%s%s' % (namespace_, name_, "
         "namespacedef_ and ' ' + namespacedef_ or '', ))\n")
-    wrt("        already_processed = []\n")
+    wrt("        already_processed = set()\n")
     wrt("        self.exportAttributes(outfile, level, "
         "already_processed, namespace_, name_='%s')\n" %
         (name, ))
@@ -2286,14 +2286,14 @@ def generateExportFn(wrt, prefix, element, namespace):
                 name1 = name[len(xsinamespace2):]
                 name2 = '%s:%s' % (xsinamespaceprefix, name1, )
                 if name2 not in already_processed:
-                    already_processed.append(name2)
+                    already_processed.add(name2)
                     outfile.write(' %s=%s' % (name2, quote_attrib(value), ))
             else:
                 mo = re_.match(Namespace_extract_pat_, name)
                 if mo is not None:
                     namespace, name = mo.group(1, 2)
                     if name not in already_processed:
-                        already_processed.append(name)
+                        already_processed.add(name)
                         if namespace == 'http://www.w3.org/XML/1998/namespace':
                             outfile.write(' %s=%s' % (
                                 name, quote_attrib(value), ))
@@ -2305,7 +2305,7 @@ def generateExportFn(wrt, prefix, element, namespace):
                                 unique_counter, name, quote_attrib(value), ))
                 else:
                     if name not in already_processed:
-                        already_processed.append(name)
+                        already_processed.add(name)
                         outfile.write(' %s=%s' % (
                             name, quote_attrib(value), ))\n""")
     parentName, parent = getParentName(element)
@@ -2481,7 +2481,9 @@ def generateExportLiteralFn(wrt, prefix, element):
     wrt("    def exportLiteral(self, outfile, level, name_='%s'):\n" % (
         element.getName(), ))
     wrt("        level += 1\n")
-    wrt("        self.exportLiteralAttributes(outfile, level, [], name_)\n")
+    wrt("        already_processed = set()\n")
+    wrt("        self.exportLiteralAttributes(outfile, level, "
+        "already_processed, name_)\n")
     wrt("        if self.hasContent_():\n")
     wrt("            self.exportLiteralChildren(outfile, level, name_)\n")
     childCount = countChildren(element, 0)
@@ -2507,7 +2509,7 @@ def generateExportLiteralFn(wrt, prefix, element):
         wrt("        if self.%s is not None and '%s' not in "
             "already_processed:\n" % (
             mappedName, mappedName, ))
-        wrt("            already_processed.append('%s')\n" % (
+        wrt("            already_processed.add('%s')\n" % (
             mappedName, ))
         if (attrType in StringType or
             attrType in IDTypes or
@@ -2639,7 +2641,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt('            try:\n')
             wrt("                self.%s = self.gds_parse_datetime("
                 "value, node, '%s')\n" %
@@ -2654,7 +2656,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt('            try:\n')
             wrt("                self.%s = self.gds_parse_date("
                 "value, node, '%s')\n" %
@@ -2673,7 +2675,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt('            try:\n')
             wrt("                self.%s = int(value)\n" % (mappedName, ))
             wrt('            except ValueError, exp:\n')
@@ -2701,7 +2703,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt("            if value in ('true', '1'):\n")
             wrt("                self.%s = True\n" % mappedName)
             wrt("            elif value in ('false', '0'):\n")
@@ -2715,7 +2717,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt('            try:\n')
             wrt("                self.%s = float(value)\n" %
                 (mappedName, ))
@@ -2729,7 +2731,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt("            self.%s = value\n" % (mappedName, ))
             wrt("            self.%s = ' '.join(self.%s.split())\n" %
                 (mappedName, mappedName, ))
@@ -2740,7 +2742,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
             wrt("        if value is not None and '%s' not in "
                 "already_processed:\n" %
                 (name, ))
-            wrt("            already_processed.append('%s')\n" % (name, ))
+            wrt("            already_processed.add('%s')\n" % (name, ))
             wrt("            self.%s = value\n" % (mappedName, ))
         typeName = attrDef.getType()
         if typeName and typeName in SimpleTypeDict:
@@ -2758,7 +2760,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
         wrt("        value = find_attr_value_('xsi:type', node)\n")
         wrt("        if value is not None and 'xsi:type' not in "
             "already_processed:\n")
-        wrt("            already_processed.append('xsi:type')\n")
+        wrt("            already_processed.add('xsi:type')\n")
         wrt("            self.extensiontype_ = value\n")
     return hasAttributes
 # end generateBuildAttributes
@@ -3218,7 +3220,8 @@ def generateBuildStandard(wrt, prefix, element, keyword, delayed, hasChildren):
 def generateBuildFn(wrt, prefix, element, delayed):
     base = element.getBase()
     wrt('    def build(self, node):\n')
-    wrt('        self.buildAttributes(node, node.attrib, [])\n')
+    wrt('        already_processed = set()\n')
+    wrt('        self.buildAttributes(node, node.attrib, already_processed)\n')
     if element.isMixed() or element.getSimpleContent():
         wrt("        self.valueOf_ = get_all_text_(node)\n")
     if element.isMixed():
diff --git a/generateDS.txt b/generateDS.txt
index 208dbca..f52a60f 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -11,7 +11,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.8b
+:revision: 2.8c
 
 .. version
 
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index 4b67c7f..c05f07b 100755
--- a/gui/generateds_gui.py
+++ b/gui/generateds_gui.py
@@ -31,7 +31,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.8b'
+VERSION = '2.8c'
 ##VERSION##
 
 
diff --git a/libgenerateDS/gui/generateds_gui.py b/libgenerateDS/gui/generateds_gui.py
index 4b67c7f..c05f07b 100755
--- a/libgenerateDS/gui/generateds_gui.py
+++ b/libgenerateDS/gui/generateds_gui.py
@@ -31,7 +31,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.8b'
+VERSION = '2.8c'
 ##VERSION##
 
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index f9b29ab..c29e081 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -214,7 +214,7 @@ tt.docutils {
 <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.8b</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td>
 </tr>
 </tbody>
 </table>
@@ -223,7 +223,7 @@ tt.docutils {
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">January 28, 2013</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td>
 </tr>
 </tbody>
 </table>
diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt
index 2fbd5d9..abc5fb0 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.8b
+:revision: 2.8c
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index a4d60c0..ad2c052 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -30,7 +30,7 @@ from lxml import etree
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.8b'
+VERSION = '2.8c'
 ##VERSION##
 
 Namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'}
diff --git a/setup.py b/setup.py
index 0e261bc..f6e72db 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ setup(name="generateDS",
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-    version="2.8b",
+    version="2.8c",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@rexx.com",
diff --git a/tests/abstract_type1_sup.py b/tests/abstract_type1_sup.py
index cfb7b84..1c8efeb 100644
--- a/tests/abstract_type1_sup.py
+++ b/tests/abstract_type1_sup.py
@@ -506,7 +506,7 @@ class carrierType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='carrierType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -533,7 +533,8 @@ class carrierType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='carrierType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -552,7 +553,8 @@ class carrierType(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -602,7 +604,7 @@ class Vehicle(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Vehicle')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -612,7 +614,7 @@ class Vehicle(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='target:', name_='Vehicle'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -627,7 +629,8 @@ class Vehicle(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Vehicle'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -635,14 +638,15 @@ class Vehicle(GeneratedsSuper):
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -670,7 +674,7 @@ class Car(Vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Car')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -692,7 +696,8 @@ class Car(Vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='Car'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -701,7 +706,8 @@ class Car(Vehicle):
         super(Car, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -734,7 +740,7 @@ class Plane(Vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Plane')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -756,7 +762,8 @@ class Plane(Vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='Plane'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -765,7 +772,8 @@ class Plane(Vehicle):
         super(Plane, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/abstract_type2_sup.py b/tests/abstract_type2_sup.py
index cfb7b84..1c8efeb 100644
--- a/tests/abstract_type2_sup.py
+++ b/tests/abstract_type2_sup.py
@@ -506,7 +506,7 @@ class carrierType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='carrierType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -533,7 +533,8 @@ class carrierType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='carrierType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -552,7 +553,8 @@ class carrierType(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -602,7 +604,7 @@ class Vehicle(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Vehicle')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -612,7 +614,7 @@ class Vehicle(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='target:', name_='Vehicle'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -627,7 +629,8 @@ class Vehicle(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Vehicle'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -635,14 +638,15 @@ class Vehicle(GeneratedsSuper):
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -670,7 +674,7 @@ class Car(Vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Car')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -692,7 +696,8 @@ class Car(Vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='Car'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -701,7 +706,8 @@ class Car(Vehicle):
         super(Car, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -734,7 +740,7 @@ class Plane(Vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Plane')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -756,7 +762,8 @@ class Plane(Vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='Plane'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -765,7 +772,8 @@ class Plane(Vehicle):
         super(Plane, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py
index 38b837a..0fdff05 100644
--- a/tests/annotations1_sup.py
+++ b/tests/annotations1_sup.py
@@ -508,7 +508,7 @@ class document1Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document1Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -539,7 +539,8 @@ class document1Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document1Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -555,7 +556,8 @@ class document1Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -607,7 +609,7 @@ class document2Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document2Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -642,7 +644,8 @@ class document2Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document2Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -661,7 +664,8 @@ class document2Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -715,7 +719,7 @@ class document3Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document3Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -747,7 +751,8 @@ class document3Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document3Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -760,7 +765,8 @@ class document3Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('rating=%d,\n' % self.rating)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/annotations2_sup.py b/tests/annotations2_sup.py
index 38b837a..0fdff05 100644
--- a/tests/annotations2_sup.py
+++ b/tests/annotations2_sup.py
@@ -508,7 +508,7 @@ class document1Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document1Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -539,7 +539,8 @@ class document1Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document1Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -555,7 +556,8 @@ class document1Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -607,7 +609,7 @@ class document2Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document2Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -642,7 +644,8 @@ class document2Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document2Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -661,7 +664,8 @@ class document2Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -715,7 +719,7 @@ class document3Type(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='document3Type')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -747,7 +751,8 @@ class document3Type(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='document3Type'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -760,7 +765,8 @@ class document3Type(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('rating=%d,\n' % self.rating)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/anysimpletype1_sup.py b/tests/anysimpletype1_sup.py
index c9dc328..3e56d08 100644
--- a/tests/anysimpletype1_sup.py
+++ b/tests/anysimpletype1_sup.py
@@ -505,7 +505,7 @@ class test1element(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='test1element')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -516,7 +516,7 @@ class test1element(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='test1element'):
         if self.test1attribute is not None and 'test1attribute' not in already_processed:
-            already_processed.append('test1attribute')
+            already_processed.add('test1attribute')
             outfile.write(' test1attribute=%s' % (quote_attrib(self.test1attribute), ))
     def exportChildren(self, outfile, level, namespace_='', name_='test1element', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -534,12 +534,13 @@ class test1element(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='test1element'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.test1attribute is not None and 'test1attribute' not in already_processed:
-            already_processed.append('test1attribute')
+            already_processed.add('test1attribute')
             showIndent(outfile, level)
             outfile.write('test1attribute = %s,\n' % (self.test1attribute,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -550,14 +551,15 @@ class test1element(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('test1attribute', node)
         if value is not None and 'test1attribute' not in already_processed:
-            already_processed.append('test1attribute')
+            already_processed.add('test1attribute')
             self.test1attribute = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'test1member':
@@ -593,7 +595,7 @@ class cimAnySimpleType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='cimAnySimpleType')
         if self.hasContent_():
             outfile.write('>')
@@ -612,14 +614,14 @@ class cimAnySimpleType(GeneratedsSuper):
                 name1 = name[len(xsinamespace2):]
                 name2 = '%s:%s' % (xsinamespaceprefix, name1, )
                 if name2 not in already_processed:
-                    already_processed.append(name2)
+                    already_processed.add(name2)
                     outfile.write(' %s=%s' % (name2, quote_attrib(value), ))
             else:
                 mo = re_.match(Namespace_extract_pat_, name)
                 if mo is not None:
                     namespace, name = mo.group(1, 2)
                     if name not in already_processed:
-                        already_processed.append(name)
+                        already_processed.add(name)
                         if namespace == 'http://www.w3.org/XML/1998/namespace':
                             outfile.write(' %s=%s' % (
                                 name, quote_attrib(value), ))
@@ -631,7 +633,7 @@ class cimAnySimpleType(GeneratedsSuper):
                                 unique_counter, name, quote_attrib(value), ))
                 else:
                     if name not in already_processed:
-                        already_processed.append(name)
+                        already_processed.add(name)
                         outfile.write(' %s=%s' % (
                             name, quote_attrib(value), ))
         pass
@@ -646,7 +648,8 @@ class cimAnySimpleType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='cimAnySimpleType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -658,7 +661,8 @@ class cimAnySimpleType(GeneratedsSuper):
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py
index e955d99..29aa7ee 100644
--- a/tests/anywildcard1_sup.py
+++ b/tests/anywildcard1_sup.py
@@ -509,7 +509,7 @@ class PlantType_single(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -543,7 +543,8 @@ class PlantType_single(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_single'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -565,7 +566,8 @@ class PlantType_single(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -623,7 +625,7 @@ class PlantType_multiple(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -657,7 +659,8 @@ class PlantType_multiple(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_multiple'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -681,7 +684,8 @@ class PlantType_multiple(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -731,7 +735,7 @@ class DescriptionType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='DescriptionType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -763,7 +767,8 @@ class DescriptionType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='DescriptionType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -776,7 +781,8 @@ class DescriptionType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('size=%s,\n' % quote_python(self.size).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -822,7 +828,7 @@ class CatalogType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='CatalogType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -854,7 +860,8 @@ class CatalogType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='CatalogType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -867,7 +874,8 @@ class CatalogType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('catagory=%d,\n' % self.catagory)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -912,7 +920,7 @@ class PlantType_single_nochild(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single_nochild')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -939,7 +947,8 @@ class PlantType_single_nochild(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_single_nochild'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -952,7 +961,8 @@ class PlantType_single_nochild(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -993,7 +1003,7 @@ class PlantType_multiple_nochild(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple_nochild')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1020,7 +1030,8 @@ class PlantType_multiple_nochild(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_multiple_nochild'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1035,7 +1046,8 @@ class PlantType_multiple_nochild(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/anywildcard2_sup.py b/tests/anywildcard2_sup.py
index e955d99..29aa7ee 100644
--- a/tests/anywildcard2_sup.py
+++ b/tests/anywildcard2_sup.py
@@ -509,7 +509,7 @@ class PlantType_single(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -543,7 +543,8 @@ class PlantType_single(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_single'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -565,7 +566,8 @@ class PlantType_single(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -623,7 +625,7 @@ class PlantType_multiple(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -657,7 +659,8 @@ class PlantType_multiple(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_multiple'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -681,7 +684,8 @@ class PlantType_multiple(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -731,7 +735,7 @@ class DescriptionType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='DescriptionType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -763,7 +767,8 @@ class DescriptionType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='DescriptionType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -776,7 +781,8 @@ class DescriptionType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('size=%s,\n' % quote_python(self.size).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -822,7 +828,7 @@ class CatalogType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='CatalogType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -854,7 +860,8 @@ class CatalogType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='CatalogType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -867,7 +874,8 @@ class CatalogType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('catagory=%d,\n' % self.catagory)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -912,7 +920,7 @@ class PlantType_single_nochild(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_single_nochild')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -939,7 +947,8 @@ class PlantType_single_nochild(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_single_nochild'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -952,7 +961,8 @@ class PlantType_single_nochild(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -993,7 +1003,7 @@ class PlantType_multiple_nochild(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PlantType_multiple_nochild')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1020,7 +1030,8 @@ class PlantType_multiple_nochild(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PlantType_multiple_nochild'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1035,7 +1046,8 @@ class PlantType_multiple_nochild(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/attr_groups1_sup.py b/tests/attr_groups1_sup.py
index 0772d5a..b74edf6 100644
--- a/tests/attr_groups1_sup.py
+++ b/tests/attr_groups1_sup.py
@@ -533,7 +533,7 @@ class GetUserReq(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='GetUserReq')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -544,28 +544,28 @@ class GetUserReq(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='GetUserReq'):
         if self.value04 is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             outfile.write(' value04="%s"' % self.gds_format_integer(self.value04, input_name='value04'))
         if self.value05 is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             outfile.write(' value05=%s' % (self.gds_format_string(quote_attrib(self.value05).encode(ExternalEncoding), input_name='value05'), ))
         if self.value06 is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             outfile.write(' value06="%s"' % self.gds_format_integer(self.value06, input_name='value06'))
         if self.value07 is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             outfile.write(' value07="%s"' % self.gds_format_integer(self.value07, input_name='value07'))
         if self.value01 is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             outfile.write(' value01=%s' % (self.gds_format_string(quote_attrib(self.value01).encode(ExternalEncoding), input_name='value01'), ))
         if self.value02 is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             outfile.write(' value02="%s"' % self.gds_format_integer(self.value02, input_name='value02'))
         if self.value03 is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             outfile.write(' value03=%s' % (self.gds_format_string(quote_attrib(self.value03).encode(ExternalEncoding), input_name='value03'), ))
         if self.sequence is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             outfile.write(' sequence="%s"' % self.gds_format_integer(self.sequence, input_name='sequence'))
     def exportChildren(self, outfile, level, namespace_='', name_='GetUserReq', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -584,40 +584,41 @@ class GetUserReq(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='GetUserReq'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.value04 is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             showIndent(outfile, level)
             outfile.write('value04 = %d,\n' % (self.value04,))
         if self.value05 is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             showIndent(outfile, level)
             outfile.write('value05 = "%s",\n' % (self.value05,))
         if self.value06 is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             showIndent(outfile, level)
             outfile.write('value06 = %d,\n' % (self.value06,))
         if self.value07 is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             showIndent(outfile, level)
             outfile.write('value07 = %d,\n' % (self.value07,))
         if self.value01 is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             showIndent(outfile, level)
             outfile.write('value01 = "%s",\n' % (self.value01,))
         if self.value02 is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             showIndent(outfile, level)
             outfile.write('value02 = %d,\n' % (self.value02,))
         if self.value03 is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             showIndent(outfile, level)
             outfile.write('value03 = "%s",\n' % (self.value03,))
         if self.sequence is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             showIndent(outfile, level)
             outfile.write('sequence = %d,\n' % (self.sequence,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -625,54 +626,55 @@ class GetUserReq(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('returnedTags=%s,\n' % quote_python(self.returnedTags).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('value04', node)
         if value is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             try:
                 self.value04 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value05', node)
         if value is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             self.value05 = value
         value = find_attr_value_('value06', node)
         if value is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             try:
                 self.value06 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value07', node)
         if value is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             try:
                 self.value07 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value01', node)
         if value is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             self.value01 = value
         value = find_attr_value_('value02', node)
         if value is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             try:
                 self.value02 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value03', node)
         if value is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             self.value03 = value
         value = find_attr_value_('sequence', node)
         if value is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             try:
                 self.sequence = int(value)
             except ValueError, exp:
diff --git a/tests/attr_groups2_sup.py b/tests/attr_groups2_sup.py
index 0772d5a..b74edf6 100644
--- a/tests/attr_groups2_sup.py
+++ b/tests/attr_groups2_sup.py
@@ -533,7 +533,7 @@ class GetUserReq(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='GetUserReq')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -544,28 +544,28 @@ class GetUserReq(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='GetUserReq'):
         if self.value04 is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             outfile.write(' value04="%s"' % self.gds_format_integer(self.value04, input_name='value04'))
         if self.value05 is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             outfile.write(' value05=%s' % (self.gds_format_string(quote_attrib(self.value05).encode(ExternalEncoding), input_name='value05'), ))
         if self.value06 is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             outfile.write(' value06="%s"' % self.gds_format_integer(self.value06, input_name='value06'))
         if self.value07 is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             outfile.write(' value07="%s"' % self.gds_format_integer(self.value07, input_name='value07'))
         if self.value01 is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             outfile.write(' value01=%s' % (self.gds_format_string(quote_attrib(self.value01).encode(ExternalEncoding), input_name='value01'), ))
         if self.value02 is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             outfile.write(' value02="%s"' % self.gds_format_integer(self.value02, input_name='value02'))
         if self.value03 is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             outfile.write(' value03=%s' % (self.gds_format_string(quote_attrib(self.value03).encode(ExternalEncoding), input_name='value03'), ))
         if self.sequence is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             outfile.write(' sequence="%s"' % self.gds_format_integer(self.sequence, input_name='sequence'))
     def exportChildren(self, outfile, level, namespace_='', name_='GetUserReq', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -584,40 +584,41 @@ class GetUserReq(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='GetUserReq'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.value04 is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             showIndent(outfile, level)
             outfile.write('value04 = %d,\n' % (self.value04,))
         if self.value05 is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             showIndent(outfile, level)
             outfile.write('value05 = "%s",\n' % (self.value05,))
         if self.value06 is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             showIndent(outfile, level)
             outfile.write('value06 = %d,\n' % (self.value06,))
         if self.value07 is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             showIndent(outfile, level)
             outfile.write('value07 = %d,\n' % (self.value07,))
         if self.value01 is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             showIndent(outfile, level)
             outfile.write('value01 = "%s",\n' % (self.value01,))
         if self.value02 is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             showIndent(outfile, level)
             outfile.write('value02 = %d,\n' % (self.value02,))
         if self.value03 is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             showIndent(outfile, level)
             outfile.write('value03 = "%s",\n' % (self.value03,))
         if self.sequence is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             showIndent(outfile, level)
             outfile.write('sequence = %d,\n' % (self.sequence,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -625,54 +626,55 @@ class GetUserReq(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('returnedTags=%s,\n' % quote_python(self.returnedTags).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('value04', node)
         if value is not None and 'value04' not in already_processed:
-            already_processed.append('value04')
+            already_processed.add('value04')
             try:
                 self.value04 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value05', node)
         if value is not None and 'value05' not in already_processed:
-            already_processed.append('value05')
+            already_processed.add('value05')
             self.value05 = value
         value = find_attr_value_('value06', node)
         if value is not None and 'value06' not in already_processed:
-            already_processed.append('value06')
+            already_processed.add('value06')
             try:
                 self.value06 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value07', node)
         if value is not None and 'value07' not in already_processed:
-            already_processed.append('value07')
+            already_processed.add('value07')
             try:
                 self.value07 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value01', node)
         if value is not None and 'value01' not in already_processed:
-            already_processed.append('value01')
+            already_processed.add('value01')
             self.value01 = value
         value = find_attr_value_('value02', node)
         if value is not None and 'value02' not in already_processed:
-            already_processed.append('value02')
+            already_processed.add('value02')
             try:
                 self.value02 = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value03', node)
         if value is not None and 'value03' not in already_processed:
-            already_processed.append('value03')
+            already_processed.add('value03')
             self.value03 = value
         value = find_attr_value_('sequence', node)
         if value is not None and 'sequence' not in already_processed:
-            already_processed.append('sequence')
+            already_processed.add('sequence')
             try:
                 self.sequence = int(value)
             except ValueError, exp:
diff --git a/tests/extensions1_sup.py b/tests/extensions1_sup.py
index c02b45a..307870e 100644
--- a/tests/extensions1_sup.py
+++ b/tests/extensions1_sup.py
@@ -505,7 +505,7 @@ class SpecialDate(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate')
         if self.hasContent_():
             outfile.write('>')
@@ -516,7 +516,7 @@ class SpecialDate(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='SpecialDate'):
         if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             outfile.write(' SpecialProperty=%s' % (self.gds_format_string(quote_attrib(self.SpecialProperty).encode(ExternalEncoding), input_name='SpecialProperty'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='SpecialDate', fromsubclass_=False, pretty_print=True):
         pass
@@ -529,20 +529,22 @@ class SpecialDate(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='SpecialDate'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             showIndent(outfile, level)
             outfile.write('SpecialProperty = "%s",\n' % (self.SpecialProperty,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -550,7 +552,7 @@ class SpecialDate(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('SpecialProperty', node)
         if value is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             self.SpecialProperty = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -584,7 +586,7 @@ class ExtremeDate(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate')
         if self.hasContent_():
             outfile.write('>')
@@ -595,7 +597,7 @@ class ExtremeDate(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='ExtremeDate'):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='ExtremeDate', fromsubclass_=False, pretty_print=True):
         pass
@@ -608,20 +610,22 @@ class ExtremeDate(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='ExtremeDate'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             showIndent(outfile, level)
             outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -629,7 +633,7 @@ class ExtremeDate(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('ExtremeProperty', node)
         if value is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             self.ExtremeProperty = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -663,7 +667,7 @@ class singleExtremeDate(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='singleExtremeDate')
         if self.hasContent_():
             outfile.write('>')
@@ -674,7 +678,7 @@ class singleExtremeDate(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='singleExtremeDate'):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='singleExtremeDate', fromsubclass_=False, pretty_print=True):
         pass
@@ -687,20 +691,22 @@ class singleExtremeDate(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='singleExtremeDate'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             showIndent(outfile, level)
             outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -708,7 +714,7 @@ class singleExtremeDate(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('ExtremeProperty', node)
         if value is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             self.ExtremeProperty = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -747,7 +753,7 @@ class containerType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='containerType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -777,7 +783,8 @@ class containerType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='containerType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -802,7 +809,8 @@ class containerType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -846,7 +854,7 @@ class simpleFactoidType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleFactoidType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -874,7 +882,8 @@ class simpleFactoidType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='simpleFactoidType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -884,7 +893,8 @@ class simpleFactoidType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('relation=%s,\n' % quote_python(self.relation).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -938,7 +948,7 @@ class mixedFactoidType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='mixedFactoidType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -963,7 +973,8 @@ class mixedFactoidType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='mixedFactoidType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -979,7 +990,8 @@ class mixedFactoidType(GeneratedsSuper):
         outfile.write('],\n')
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         if node.text is not None:
             obj_ = self.mixedclass_(MixedContainer.CategoryText,
@@ -1037,7 +1049,7 @@ class BaseType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='BaseType')
         if self.hasContent_():
             outfile.write('>')
@@ -1048,13 +1060,13 @@ class BaseType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='BaseType'):
         if self.BaseProperty1 is not None and 'BaseProperty1' not in already_processed:
-            already_processed.append('BaseProperty1')
+            already_processed.add('BaseProperty1')
             outfile.write(' BaseProperty1=%s' % (self.gds_format_string(quote_attrib(self.BaseProperty1).encode(ExternalEncoding), input_name='BaseProperty1'), ))
         if self.BaseProperty2 is not None and 'BaseProperty2' not in already_processed:
-            already_processed.append('BaseProperty2')
+            already_processed.add('BaseProperty2')
             outfile.write(' BaseProperty2=%s' % (self.gds_format_string(quote_attrib(self.BaseProperty2).encode(ExternalEncoding), input_name='BaseProperty2'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='BaseType', fromsubclass_=False, pretty_print=True):
@@ -1068,24 +1080,26 @@ class BaseType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='BaseType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.BaseProperty1 is not None and 'BaseProperty1' not in already_processed:
-            already_processed.append('BaseProperty1')
+            already_processed.add('BaseProperty1')
             showIndent(outfile, level)
             outfile.write('BaseProperty1 = "%s",\n' % (self.BaseProperty1,))
         if self.BaseProperty2 is not None and 'BaseProperty2' not in already_processed:
-            already_processed.append('BaseProperty2')
+            already_processed.add('BaseProperty2')
             showIndent(outfile, level)
             outfile.write('BaseProperty2 = "%s",\n' % (self.BaseProperty2,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1093,15 +1107,15 @@ class BaseType(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('BaseProperty1', node)
         if value is not None and 'BaseProperty1' not in already_processed:
-            already_processed.append('BaseProperty1')
+            already_processed.add('BaseProperty1')
             self.BaseProperty1 = value
         value = find_attr_value_('BaseProperty2', node)
         if value is not None and 'BaseProperty2' not in already_processed:
-            already_processed.append('BaseProperty2')
+            already_processed.add('BaseProperty2')
             self.BaseProperty2 = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1140,7 +1154,7 @@ class DerivedType(BaseType):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='DerivedType')
         if self.hasContent_():
             outfile.write('>')
@@ -1152,10 +1166,10 @@ class DerivedType(BaseType):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='DerivedType'):
         super(DerivedType, self).exportAttributes(outfile, level, already_processed, namespace_, name_='DerivedType')
         if self.DerivedProperty1 is not None and 'DerivedProperty1' not in already_processed:
-            already_processed.append('DerivedProperty1')
+            already_processed.add('DerivedProperty1')
             outfile.write(' DerivedProperty1=%s' % (self.gds_format_string(quote_attrib(self.DerivedProperty1).encode(ExternalEncoding), input_name='DerivedProperty1'), ))
         if self.DerivedProperty2 is not None and 'DerivedProperty2' not in already_processed:
-            already_processed.append('DerivedProperty2')
+            already_processed.add('DerivedProperty2')
             outfile.write(' DerivedProperty2=%s' % (self.gds_format_string(quote_attrib(self.DerivedProperty2).encode(ExternalEncoding), input_name='DerivedProperty2'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='DerivedType', fromsubclass_=False, pretty_print=True):
         super(DerivedType, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -1170,18 +1184,19 @@ class DerivedType(BaseType):
             return False
     def exportLiteral(self, outfile, level, name_='DerivedType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.DerivedProperty1 is not None and 'DerivedProperty1' not in already_processed:
-            already_processed.append('DerivedProperty1')
+            already_processed.add('DerivedProperty1')
             showIndent(outfile, level)
             outfile.write('DerivedProperty1 = "%s",\n' % (self.DerivedProperty1,))
         if self.DerivedProperty2 is not None and 'DerivedProperty2' not in already_processed:
-            already_processed.append('DerivedProperty2')
+            already_processed.add('DerivedProperty2')
             showIndent(outfile, level)
             outfile.write('DerivedProperty2 = "%s",\n' % (self.DerivedProperty2,))
         super(DerivedType, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1189,7 +1204,8 @@ class DerivedType(BaseType):
         super(DerivedType, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1197,11 +1213,11 @@ class DerivedType(BaseType):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('DerivedProperty1', node)
         if value is not None and 'DerivedProperty1' not in already_processed:
-            already_processed.append('DerivedProperty1')
+            already_processed.add('DerivedProperty1')
             self.DerivedProperty1 = value
         value = find_attr_value_('DerivedProperty2', node)
         if value is not None and 'DerivedProperty2' not in already_processed:
-            already_processed.append('DerivedProperty2')
+            already_processed.add('DerivedProperty2')
             self.DerivedProperty2 = value
         super(DerivedType, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -1236,7 +1252,7 @@ class MyInteger(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyInteger')
         if self.hasContent_():
             outfile.write('>')
@@ -1247,7 +1263,7 @@ class MyInteger(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyInteger'):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='MyInteger', fromsubclass_=False, pretty_print=True):
         pass
@@ -1260,20 +1276,22 @@ class MyInteger(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='MyInteger'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             showIndent(outfile, level)
             outfile.write('MyAttr = "%s",\n' % (self.MyAttr,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1281,7 +1299,7 @@ class MyInteger(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('MyAttr', node)
         if value is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             self.MyAttr = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1315,7 +1333,7 @@ class MyBoolean(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyBoolean')
         if self.hasContent_():
             outfile.write('>')
@@ -1326,7 +1344,7 @@ class MyBoolean(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyBoolean'):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='MyBoolean', fromsubclass_=False, pretty_print=True):
         pass
@@ -1339,20 +1357,22 @@ class MyBoolean(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='MyBoolean'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             showIndent(outfile, level)
             outfile.write('MyAttr = "%s",\n' % (self.MyAttr,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1360,7 +1380,7 @@ class MyBoolean(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('MyAttr', node)
         if value is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             self.MyAttr = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1394,7 +1414,7 @@ class MyFloat(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyFloat')
         if self.hasContent_():
             outfile.write('>')
@@ -1405,7 +1425,7 @@ class MyFloat(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyFloat'):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='MyFloat', fromsubclass_=False, pretty_print=True):
         pass
@@ -1418,20 +1438,22 @@ class MyFloat(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='MyFloat'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             showIndent(outfile, level)
             outfile.write('MyAttr = "%s",\n' % (self.MyAttr,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1439,7 +1461,7 @@ class MyFloat(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('MyAttr', node)
         if value is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             self.MyAttr = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1473,7 +1495,7 @@ class MyDouble(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='MyDouble')
         if self.hasContent_():
             outfile.write('>')
@@ -1484,7 +1506,7 @@ class MyDouble(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='MyDouble'):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             outfile.write(' MyAttr=%s' % (self.gds_format_string(quote_attrib(self.MyAttr).encode(ExternalEncoding), input_name='MyAttr'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='MyDouble', fromsubclass_=False, pretty_print=True):
         pass
@@ -1497,20 +1519,22 @@ class MyDouble(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='MyDouble'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.MyAttr is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             showIndent(outfile, level)
             outfile.write('MyAttr = "%s",\n' % (self.MyAttr,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1518,7 +1542,7 @@ class MyDouble(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('MyAttr', node)
         if value is not None and 'MyAttr' not in already_processed:
-            already_processed.append('MyAttr')
+            already_processed.add('MyAttr')
             self.MyAttr = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py
index 0c95c57..e08cf2c 100644
--- a/tests/ipo1_sup.py
+++ b/tests/ipo1_sup.py
@@ -517,7 +517,7 @@ class PurchaseOrderType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PurchaseOrderType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -528,7 +528,7 @@ class PurchaseOrderType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='PurchaseOrderType'):
         if self.orderDate is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             outfile.write(' orderDate="%s"' % self.gds_format_date(self.orderDate, input_name='orderDate'))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='PurchaseOrderType', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -556,12 +556,13 @@ class PurchaseOrderType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PurchaseOrderType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.orderDate is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             showIndent(outfile, level)
             outfile.write('orderDate = "%s",\n' % (self.orderDate,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -587,14 +588,15 @@ class PurchaseOrderType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('orderDate', node)
         if value is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             try:
                 self.orderDate = self.gds_parse_date(value, node, 'orderDate')
             except ValueError, exp:
@@ -649,7 +651,7 @@ class Items(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Items')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -676,7 +678,8 @@ class Items(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Items'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -695,7 +698,8 @@ class Items(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -743,7 +747,7 @@ class Address(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Address')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -754,7 +758,7 @@ class Address(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='Address'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -783,7 +787,8 @@ class Address(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Address'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -799,14 +804,15 @@ class Address(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('city=%s,\n' % quote_python(self.city).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -855,7 +861,7 @@ class USAddress(Address):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='USAddress')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -889,7 +895,8 @@ class USAddress(Address):
             return False
     def exportLiteral(self, outfile, level, name_='USAddress'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -903,7 +910,8 @@ class USAddress(Address):
             showIndent(outfile, level)
             outfile.write('zip=%d,\n' % self.zip)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -968,7 +976,7 @@ class UKAddress(Address):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -980,10 +988,10 @@ class UKAddress(Address):
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='UKAddress'):
         super(UKAddress, self).exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress')
         if self.category_attr is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             outfile.write(' category=%s' % (quote_attrib(self.category_attr), ))
         if self.exportCode is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             outfile.write(' exportCode="%s"' % self.gds_format_integer(self.exportCode, input_name='exportCode'))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='UKAddress', fromsubclass_=False, pretty_print=True):
         super(UKAddress, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -1008,16 +1016,17 @@ class UKAddress(Address):
             return False
     def exportLiteral(self, outfile, level, name_='UKAddress'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.category_attr is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             showIndent(outfile, level)
             outfile.write('category_attr = %s,\n' % (self.category_attr,))
         if self.exportCode is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             showIndent(outfile, level)
             outfile.write('exportCode = %d,\n' % (self.exportCode,))
         super(UKAddress, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1030,18 +1039,19 @@ class UKAddress(Address):
             showIndent(outfile, level)
             outfile.write('category=%s,\n' % quote_python(self.category).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('category', node)
         if value is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             self.category_attr = value
         value = find_attr_value_('exportCode', node)
         if value is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             try:
                 self.exportCode = int(value)
             except ValueError, exp:
@@ -1106,7 +1116,7 @@ class itemType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='itemType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1117,7 +1127,7 @@ class itemType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='itemType'):
         if self.partNum is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             outfile.write(' partNum=%s' % (quote_attrib(self.partNum), ))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='itemType', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -1152,12 +1162,13 @@ class itemType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='itemType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.partNum is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             showIndent(outfile, level)
             outfile.write('partNum = %s,\n' % (self.partNum,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1177,14 +1188,15 @@ class itemType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('shipDate=datetime_.strptime("%s", "%%Y-%%m-%%d"),\n' % self.gds_format_date(self.shipDate, input_name='shipDate'))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('partNum', node)
         if value is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             self.partNum = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'productName':
@@ -1240,7 +1252,7 @@ class quantity(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='quantity')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1261,7 +1273,8 @@ class quantity(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='quantity'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1269,7 +1282,8 @@ class quantity(GeneratedsSuper):
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py
index 0c95c57..e08cf2c 100644
--- a/tests/ipo2_sup.py
+++ b/tests/ipo2_sup.py
@@ -517,7 +517,7 @@ class PurchaseOrderType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PurchaseOrderType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -528,7 +528,7 @@ class PurchaseOrderType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='PurchaseOrderType'):
         if self.orderDate is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             outfile.write(' orderDate="%s"' % self.gds_format_date(self.orderDate, input_name='orderDate'))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='PurchaseOrderType', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -556,12 +556,13 @@ class PurchaseOrderType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PurchaseOrderType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.orderDate is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             showIndent(outfile, level)
             outfile.write('orderDate = "%s",\n' % (self.orderDate,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -587,14 +588,15 @@ class PurchaseOrderType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('orderDate', node)
         if value is not None and 'orderDate' not in already_processed:
-            already_processed.append('orderDate')
+            already_processed.add('orderDate')
             try:
                 self.orderDate = self.gds_parse_date(value, node, 'orderDate')
             except ValueError, exp:
@@ -649,7 +651,7 @@ class Items(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Items')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -676,7 +678,8 @@ class Items(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Items'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -695,7 +698,8 @@ class Items(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -743,7 +747,7 @@ class Address(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='Address')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -754,7 +758,7 @@ class Address(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='Address'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -783,7 +787,8 @@ class Address(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='Address'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -799,14 +804,15 @@ class Address(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('city=%s,\n' % quote_python(self.city).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -855,7 +861,7 @@ class USAddress(Address):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='USAddress')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -889,7 +895,8 @@ class USAddress(Address):
             return False
     def exportLiteral(self, outfile, level, name_='USAddress'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -903,7 +910,8 @@ class USAddress(Address):
             showIndent(outfile, level)
             outfile.write('zip=%d,\n' % self.zip)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -968,7 +976,7 @@ class UKAddress(Address):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -980,10 +988,10 @@ class UKAddress(Address):
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='UKAddress'):
         super(UKAddress, self).exportAttributes(outfile, level, already_processed, namespace_, name_='UKAddress')
         if self.category_attr is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             outfile.write(' category=%s' % (quote_attrib(self.category_attr), ))
         if self.exportCode is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             outfile.write(' exportCode="%s"' % self.gds_format_integer(self.exportCode, input_name='exportCode'))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='UKAddress', fromsubclass_=False, pretty_print=True):
         super(UKAddress, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -1008,16 +1016,17 @@ class UKAddress(Address):
             return False
     def exportLiteral(self, outfile, level, name_='UKAddress'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.category_attr is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             showIndent(outfile, level)
             outfile.write('category_attr = %s,\n' % (self.category_attr,))
         if self.exportCode is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             showIndent(outfile, level)
             outfile.write('exportCode = %d,\n' % (self.exportCode,))
         super(UKAddress, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1030,18 +1039,19 @@ class UKAddress(Address):
             showIndent(outfile, level)
             outfile.write('category=%s,\n' % quote_python(self.category).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('category', node)
         if value is not None and 'category_attr' not in already_processed:
-            already_processed.append('category_attr')
+            already_processed.add('category_attr')
             self.category_attr = value
         value = find_attr_value_('exportCode', node)
         if value is not None and 'exportCode' not in already_processed:
-            already_processed.append('exportCode')
+            already_processed.add('exportCode')
             try:
                 self.exportCode = int(value)
             except ValueError, exp:
@@ -1106,7 +1116,7 @@ class itemType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='itemType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1117,7 +1127,7 @@ class itemType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='ipo:', name_='itemType'):
         if self.partNum is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             outfile.write(' partNum=%s' % (quote_attrib(self.partNum), ))
     def exportChildren(self, outfile, level, namespace_='ipo:', name_='itemType', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -1152,12 +1162,13 @@ class itemType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='itemType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.partNum is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             showIndent(outfile, level)
             outfile.write('partNum = %s,\n' % (self.partNum,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1177,14 +1188,15 @@ class itemType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('shipDate=datetime_.strptime("%s", "%%Y-%%m-%%d"),\n' % self.gds_format_date(self.shipDate, input_name='shipDate'))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('partNum', node)
         if value is not None and 'partNum' not in already_processed:
-            already_processed.append('partNum')
+            already_processed.add('partNum')
             self.partNum = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'productName':
@@ -1240,7 +1252,7 @@ class quantity(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='quantity')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1261,7 +1273,8 @@ class quantity(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='quantity'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1269,7 +1282,8 @@ class quantity(GeneratedsSuper):
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/out1_sup.py b/tests/out1_sup.py
index e27c95b..c9105a9 100644
--- a/tests/out1_sup.py
+++ b/tests/out1_sup.py
@@ -542,7 +542,7 @@ class people(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='people')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -581,7 +581,8 @@ class people(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='people'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -648,7 +649,8 @@ class people(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -772,7 +774,7 @@ class comments(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -797,7 +799,8 @@ class comments(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='comments'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -813,7 +816,8 @@ class comments(GeneratedsSuper):
         outfile.write('],\n')
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         if node.text is not None:
             obj_ = self.mixedclass_(MixedContainer.CategoryText,
@@ -964,7 +968,7 @@ class person(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='person')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -975,22 +979,22 @@ class person(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), ))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), ))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio'))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id'))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True):
@@ -1028,28 +1032,29 @@ class person(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='person'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             showIndent(outfile, level)
             outfile.write('vegetable = "%s",\n' % (self.vegetable,))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             showIndent(outfile, level)
             outfile.write('fruit = "%s",\n' % (self.fruit,))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             showIndent(outfile, level)
             outfile.write('ratio = %f,\n' % (self.ratio,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = %d,\n' % (self.id,))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             showIndent(outfile, level)
             outfile.write('value = "%s",\n' % (self.value,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1096,40 +1101,41 @@ class person(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('vegetable', node)
         if value is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             self.vegetable = value
         value = find_attr_value_('fruit', node)
         if value is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             self.fruit = value
         value = find_attr_value_('ratio', node)
         if value is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             try:
                 self.ratio = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (ratio): %s' % exp)
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             try:
                 self.id = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value', node)
         if value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             self.value = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -1307,7 +1313,7 @@ class programmer(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1319,25 +1325,25 @@ class programmer(person):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'):
         super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), ))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), ))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint'))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint'))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint'))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint'))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True):
@@ -1402,32 +1408,33 @@ class programmer(person):
             return False
     def exportLiteral(self, outfile, level, name_='programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             showIndent(outfile, level)
             outfile.write('language = "%s",\n' % (self.language,))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             showIndent(outfile, level)
             outfile.write('area = "%s",\n' % (self.area,))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             showIndent(outfile, level)
             outfile.write('attrnegint = %d,\n' % (self.attrnegint,))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             showIndent(outfile, level)
             outfile.write('attrposint = %d,\n' % (self.attrposint,))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             showIndent(outfile, level)
             outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             showIndent(outfile, level)
             outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,))
         super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1473,22 +1480,23 @@ class programmer(person):
             showIndent(outfile, level)
             outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('language', node)
         if value is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             self.language = value
         value = find_attr_value_('area', node)
         if value is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             self.area = value
         value = find_attr_value_('attrnegint', node)
         if value is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             try:
                 self.attrnegint = int(value)
             except ValueError, exp:
@@ -1497,7 +1505,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NegativeInteger')
         value = find_attr_value_('attrposint', node)
         if value is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             try:
                 self.attrposint = int(value)
             except ValueError, exp:
@@ -1506,7 +1514,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid PositiveInteger')
         value = find_attr_value_('attrnonnegint', node)
         if value is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             try:
                 self.attrnonnegint = int(value)
             except ValueError, exp:
@@ -1515,7 +1523,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonNegativeInteger')
         value = find_attr_value_('attrnonposint', node)
         if value is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             try:
                 self.attrnonposint = int(value)
             except ValueError, exp:
@@ -1524,7 +1532,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonPositiveInteger')
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
         super(programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -1709,7 +1717,7 @@ class param(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='param')
         if self.hasContent_():
             outfile.write('>')
@@ -1720,22 +1728,22 @@ class param(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), ))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (quote_attrib(self.name), ))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             outfile.write(' flow=%s' % (quote_attrib(self.flow), ))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             outfile.write(' sid=%s' % (quote_attrib(self.sid), ))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), ))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True):
         pass
@@ -1748,40 +1756,42 @@ class param(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='param'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             showIndent(outfile, level)
             outfile.write('semantic = "%s",\n' % (self.semantic,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             showIndent(outfile, level)
             outfile.write('flow = %s,\n' % (self.flow,))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             showIndent(outfile, level)
             outfile.write('sid = "%s",\n' % (self.sid,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = "%s",\n' % (self.type_,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = "%s",\n' % (self.id,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1789,28 +1799,28 @@ class param(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('semantic', node)
         if value is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             self.semantic = value
             self.semantic = ' '.join(self.semantic.split())
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
         value = find_attr_value_('flow', node)
         if value is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             self.flow = value
         value = find_attr_value_('sid', node)
         if value is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             self.sid = value
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             self.type_ = value
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             self.id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1891,7 +1901,7 @@ class python_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1903,7 +1913,7 @@ class python_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'):
         super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True):
         super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -1924,12 +1934,13 @@ class python_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='python-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1939,14 +1950,15 @@ class python_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(python_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2036,7 +2048,7 @@ class java_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2048,10 +2060,10 @@ class java_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'):
         super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), ))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True):
         super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2072,16 +2084,17 @@ class java_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='java-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             showIndent(outfile, level)
             outfile.write('status = "%s",\n' % (self.status,))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2091,18 +2104,19 @@ class java_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('status', node)
         if value is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             self.status = value
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(java_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2195,7 +2209,7 @@ class agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2234,7 +2248,8 @@ class agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2256,7 +2271,8 @@ class agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2367,7 +2383,7 @@ class special_agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2406,7 +2422,8 @@ class special_agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='special-agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2428,7 +2445,8 @@ class special_agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2566,7 +2584,7 @@ class booster(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2617,7 +2635,8 @@ class booster(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='booster'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2666,7 +2685,8 @@ class booster(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2798,7 +2818,7 @@ class info(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='info')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2808,13 +2828,13 @@ class info(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating'))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type'))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True):
         pass
@@ -2827,47 +2847,49 @@ class info(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='info'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             showIndent(outfile, level)
             outfile.write('rating = %f,\n' % (self.rating,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = %d,\n' % (self.type_,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('rating', node)
         if value is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             try:
                 self.rating = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (rating): %s' % exp)
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             try:
                 self.type_ = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -2947,7 +2969,7 @@ class client_handlerType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2979,7 +3001,8 @@ class client_handlerType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='client-handlerType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2992,7 +3015,8 @@ class client_handlerType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('refid=%d,\n' % self.refid)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/out2_sup.py b/tests/out2_sup.py
index e27c95b..c9105a9 100644
--- a/tests/out2_sup.py
+++ b/tests/out2_sup.py
@@ -542,7 +542,7 @@ class people(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='people')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -581,7 +581,8 @@ class people(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='people'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -648,7 +649,8 @@ class people(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -772,7 +774,7 @@ class comments(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -797,7 +799,8 @@ class comments(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='comments'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -813,7 +816,8 @@ class comments(GeneratedsSuper):
         outfile.write('],\n')
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         if node.text is not None:
             obj_ = self.mixedclass_(MixedContainer.CategoryText,
@@ -964,7 +968,7 @@ class person(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='person')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -975,22 +979,22 @@ class person(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), ))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), ))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio'))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id'))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True):
@@ -1028,28 +1032,29 @@ class person(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='person'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             showIndent(outfile, level)
             outfile.write('vegetable = "%s",\n' % (self.vegetable,))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             showIndent(outfile, level)
             outfile.write('fruit = "%s",\n' % (self.fruit,))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             showIndent(outfile, level)
             outfile.write('ratio = %f,\n' % (self.ratio,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = %d,\n' % (self.id,))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             showIndent(outfile, level)
             outfile.write('value = "%s",\n' % (self.value,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1096,40 +1101,41 @@ class person(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('vegetable', node)
         if value is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             self.vegetable = value
         value = find_attr_value_('fruit', node)
         if value is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             self.fruit = value
         value = find_attr_value_('ratio', node)
         if value is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             try:
                 self.ratio = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (ratio): %s' % exp)
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             try:
                 self.id = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value', node)
         if value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             self.value = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -1307,7 +1313,7 @@ class programmer(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1319,25 +1325,25 @@ class programmer(person):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'):
         super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), ))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), ))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint'))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint'))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint'))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint'))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True):
@@ -1402,32 +1408,33 @@ class programmer(person):
             return False
     def exportLiteral(self, outfile, level, name_='programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             showIndent(outfile, level)
             outfile.write('language = "%s",\n' % (self.language,))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             showIndent(outfile, level)
             outfile.write('area = "%s",\n' % (self.area,))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             showIndent(outfile, level)
             outfile.write('attrnegint = %d,\n' % (self.attrnegint,))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             showIndent(outfile, level)
             outfile.write('attrposint = %d,\n' % (self.attrposint,))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             showIndent(outfile, level)
             outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             showIndent(outfile, level)
             outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,))
         super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1473,22 +1480,23 @@ class programmer(person):
             showIndent(outfile, level)
             outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('language', node)
         if value is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             self.language = value
         value = find_attr_value_('area', node)
         if value is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             self.area = value
         value = find_attr_value_('attrnegint', node)
         if value is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             try:
                 self.attrnegint = int(value)
             except ValueError, exp:
@@ -1497,7 +1505,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NegativeInteger')
         value = find_attr_value_('attrposint', node)
         if value is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             try:
                 self.attrposint = int(value)
             except ValueError, exp:
@@ -1506,7 +1514,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid PositiveInteger')
         value = find_attr_value_('attrnonnegint', node)
         if value is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             try:
                 self.attrnonnegint = int(value)
             except ValueError, exp:
@@ -1515,7 +1523,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonNegativeInteger')
         value = find_attr_value_('attrnonposint', node)
         if value is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             try:
                 self.attrnonposint = int(value)
             except ValueError, exp:
@@ -1524,7 +1532,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonPositiveInteger')
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
         super(programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -1709,7 +1717,7 @@ class param(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='param')
         if self.hasContent_():
             outfile.write('>')
@@ -1720,22 +1728,22 @@ class param(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), ))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (quote_attrib(self.name), ))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             outfile.write(' flow=%s' % (quote_attrib(self.flow), ))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             outfile.write(' sid=%s' % (quote_attrib(self.sid), ))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), ))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True):
         pass
@@ -1748,40 +1756,42 @@ class param(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='param'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             showIndent(outfile, level)
             outfile.write('semantic = "%s",\n' % (self.semantic,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             showIndent(outfile, level)
             outfile.write('flow = %s,\n' % (self.flow,))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             showIndent(outfile, level)
             outfile.write('sid = "%s",\n' % (self.sid,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = "%s",\n' % (self.type_,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = "%s",\n' % (self.id,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1789,28 +1799,28 @@ class param(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('semantic', node)
         if value is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             self.semantic = value
             self.semantic = ' '.join(self.semantic.split())
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
         value = find_attr_value_('flow', node)
         if value is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             self.flow = value
         value = find_attr_value_('sid', node)
         if value is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             self.sid = value
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             self.type_ = value
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             self.id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1891,7 +1901,7 @@ class python_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1903,7 +1913,7 @@ class python_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'):
         super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True):
         super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -1924,12 +1934,13 @@ class python_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='python-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -1939,14 +1950,15 @@ class python_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(python_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2036,7 +2048,7 @@ class java_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2048,10 +2060,10 @@ class java_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'):
         super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), ))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True):
         super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2072,16 +2084,17 @@ class java_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='java-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             showIndent(outfile, level)
             outfile.write('status = "%s",\n' % (self.status,))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2091,18 +2104,19 @@ class java_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('status', node)
         if value is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             self.status = value
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(java_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2195,7 +2209,7 @@ class agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2234,7 +2248,8 @@ class agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2256,7 +2271,8 @@ class agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2367,7 +2383,7 @@ class special_agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2406,7 +2422,8 @@ class special_agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='special-agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2428,7 +2445,8 @@ class special_agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2566,7 +2584,7 @@ class booster(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2617,7 +2635,8 @@ class booster(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='booster'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2666,7 +2685,8 @@ class booster(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2798,7 +2818,7 @@ class info(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='info')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2808,13 +2828,13 @@ class info(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating'))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type'))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True):
         pass
@@ -2827,47 +2847,49 @@ class info(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='info'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             showIndent(outfile, level)
             outfile.write('rating = %f,\n' % (self.rating,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = %d,\n' % (self.type_,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('rating', node)
         if value is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             try:
                 self.rating = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (rating): %s' % exp)
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             try:
                 self.type_ = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -2947,7 +2969,7 @@ class client_handlerType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2979,7 +3001,8 @@ class client_handlerType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='client-handlerType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2992,7 +3015,8 @@ class client_handlerType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('refid=%d,\n' % self.refid)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py
index c569a68..996b7af 100644
--- a/tests/people_procincl1_sup.py
+++ b/tests/people_procincl1_sup.py
@@ -552,7 +552,7 @@ class people(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='people')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -594,7 +594,8 @@ class people(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='people'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -673,7 +674,8 @@ class people(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -759,7 +761,7 @@ class comments(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -785,7 +787,8 @@ class comments(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='comments'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -807,7 +810,8 @@ class comments(GeneratedsSuper):
         outfile.write('],\n')
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         if node.text is not None:
             obj_ = self.mixedclass_(MixedContainer.CategoryText,
@@ -920,7 +924,7 @@ class person(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='person')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -931,22 +935,22 @@ class person(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), ))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), ))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio'))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id'))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True):
@@ -984,28 +988,29 @@ class person(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='person'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             showIndent(outfile, level)
             outfile.write('vegetable = "%s",\n' % (self.vegetable,))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             showIndent(outfile, level)
             outfile.write('fruit = "%s",\n' % (self.fruit,))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             showIndent(outfile, level)
             outfile.write('ratio = %f,\n' % (self.ratio,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = %d,\n' % (self.id,))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             showIndent(outfile, level)
             outfile.write('value = "%s",\n' % (self.value,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1052,40 +1057,41 @@ class person(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('vegetable', node)
         if value is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             self.vegetable = value
         value = find_attr_value_('fruit', node)
         if value is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             self.fruit = value
         value = find_attr_value_('ratio', node)
         if value is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             try:
                 self.ratio = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (ratio): %s' % exp)
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             try:
                 self.id = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value', node)
         if value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             self.value = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -1140,7 +1146,7 @@ class specialperson(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='specialperson')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1162,7 +1168,8 @@ class specialperson(person):
             return False
     def exportLiteral(self, outfile, level, name_='specialperson'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1170,7 +1177,8 @@ class specialperson(person):
     def exportLiteralChildren(self, outfile, level, name_):
         super(specialperson, self).exportLiteralChildren(outfile, level, name_)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1231,7 +1239,7 @@ class param(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='param')
         if self.hasContent_():
             outfile.write('>')
@@ -1242,22 +1250,22 @@ class param(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), ))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (quote_attrib(self.name), ))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             outfile.write(' flow=%s' % (quote_attrib(self.flow), ))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             outfile.write(' sid=%s' % (quote_attrib(self.sid), ))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), ))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True):
         pass
@@ -1270,40 +1278,42 @@ class param(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='param'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             showIndent(outfile, level)
             outfile.write('semantic = "%s",\n' % (self.semantic,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             showIndent(outfile, level)
             outfile.write('flow = %s,\n' % (self.flow,))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             showIndent(outfile, level)
             outfile.write('sid = "%s",\n' % (self.sid,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = "%s",\n' % (self.type_,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = "%s",\n' % (self.id,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1311,28 +1321,28 @@ class param(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('semantic', node)
         if value is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             self.semantic = value
             self.semantic = ' '.join(self.semantic.split())
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
         value = find_attr_value_('flow', node)
         if value is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             self.flow = value
         value = find_attr_value_('sid', node)
         if value is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             self.sid = value
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             self.type_ = value
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             self.id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1383,7 +1393,7 @@ class agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1425,7 +1435,8 @@ class agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1459,7 +1470,8 @@ class agent(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1544,7 +1556,7 @@ class special_agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1583,7 +1595,8 @@ class special_agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='special-agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1605,7 +1618,8 @@ class special_agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1701,7 +1715,7 @@ class booster(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1712,7 +1726,7 @@ class booster(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='booster'):
         if self.member_id is not None and 'member_id' not in already_processed:
-            already_processed.append('member_id')
+            already_processed.add('member_id')
             outfile.write(' member-id=%s' % (self.gds_format_string(quote_attrib(self.member_id).encode(ExternalEncoding), input_name='member-id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -1754,12 +1768,13 @@ class booster(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='booster'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.member_id is not None and 'member_id' not in already_processed:
-            already_processed.append('member_id')
+            already_processed.add('member_id')
             showIndent(outfile, level)
             outfile.write('member_id = "%s",\n' % (self.member_id,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1806,14 +1821,15 @@ class booster(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('member-id', node)
         if value is not None and 'member-id' not in already_processed:
-            already_processed.append('member-id')
+            already_processed.add('member-id')
             self.member_id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'firstname':
@@ -1895,7 +1911,7 @@ class info(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='info')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1905,13 +1921,13 @@ class info(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating'))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type'))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True):
         pass
@@ -1924,47 +1940,49 @@ class info(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='info'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             showIndent(outfile, level)
             outfile.write('rating = %f,\n' % (self.rating,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = %d,\n' % (self.type_,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('rating', node)
         if value is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             try:
                 self.rating = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (rating): %s' % exp)
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             try:
                 self.type_ = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1997,7 +2015,7 @@ class vehicle(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='vehicle')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2008,7 +2026,7 @@ class vehicle(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='vehicle'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -2029,7 +2047,8 @@ class vehicle(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='vehicle'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2039,14 +2058,15 @@ class vehicle(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('wheelcount=%d,\n' % self.wheelcount)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'wheelcount':
@@ -2084,7 +2104,7 @@ class automobile(vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='automobile')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2114,7 +2134,8 @@ class automobile(vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='automobile'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2125,7 +2146,8 @@ class automobile(vehicle):
             showIndent(outfile, level)
             outfile.write('drivername=%s,\n' % quote_python(self.drivername).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2164,7 +2186,7 @@ class airplane(vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='airplane')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2194,7 +2216,8 @@ class airplane(vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='airplane'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2205,7 +2228,8 @@ class airplane(vehicle):
             showIndent(outfile, level)
             outfile.write('pilotname=%s,\n' % quote_python(self.pilotname).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2316,7 +2340,7 @@ class programmer(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2328,25 +2352,25 @@ class programmer(person):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'):
         super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), ))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), ))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint'))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint'))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint'))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint'))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True):
@@ -2407,32 +2431,33 @@ class programmer(person):
             return False
     def exportLiteral(self, outfile, level, name_='programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             showIndent(outfile, level)
             outfile.write('language = "%s",\n' % (self.language,))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             showIndent(outfile, level)
             outfile.write('area = "%s",\n' % (self.area,))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             showIndent(outfile, level)
             outfile.write('attrnegint = %d,\n' % (self.attrnegint,))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             showIndent(outfile, level)
             outfile.write('attrposint = %d,\n' % (self.attrposint,))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             showIndent(outfile, level)
             outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             showIndent(outfile, level)
             outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,))
         super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2475,22 +2500,23 @@ class programmer(person):
             showIndent(outfile, level)
             outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('language', node)
         if value is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             self.language = value
         value = find_attr_value_('area', node)
         if value is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             self.area = value
         value = find_attr_value_('attrnegint', node)
         if value is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             try:
                 self.attrnegint = int(value)
             except ValueError, exp:
@@ -2499,7 +2525,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NegativeInteger')
         value = find_attr_value_('attrposint', node)
         if value is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             try:
                 self.attrposint = int(value)
             except ValueError, exp:
@@ -2508,7 +2534,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid PositiveInteger')
         value = find_attr_value_('attrnonnegint', node)
         if value is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             try:
                 self.attrnonnegint = int(value)
             except ValueError, exp:
@@ -2517,7 +2543,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonNegativeInteger')
         value = find_attr_value_('attrnonposint', node)
         if value is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             try:
                 self.attrnonposint = int(value)
             except ValueError, exp:
@@ -2526,7 +2552,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonPositiveInteger')
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
         super(programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2639,7 +2665,7 @@ class client_handlerType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2671,7 +2697,8 @@ class client_handlerType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='client-handlerType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2684,7 +2711,8 @@ class client_handlerType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('refid=%d,\n' % self.refid)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2741,7 +2769,7 @@ class java_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2753,10 +2781,10 @@ class java_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'):
         super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), ))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True):
         super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2777,16 +2805,17 @@ class java_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='java-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             showIndent(outfile, level)
             outfile.write('status = "%s",\n' % (self.status,))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2796,18 +2825,19 @@ class java_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('status', node)
         if value is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             self.status = value
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(java_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2849,7 +2879,7 @@ class python_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2861,7 +2891,7 @@ class python_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'):
         super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True):
         super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2882,12 +2912,13 @@ class python_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='python-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2897,14 +2928,15 @@ class python_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(python_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
diff --git a/tests/people_procincl2_sup.py b/tests/people_procincl2_sup.py
index c569a68..996b7af 100644
--- a/tests/people_procincl2_sup.py
+++ b/tests/people_procincl2_sup.py
@@ -552,7 +552,7 @@ class people(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='people')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -594,7 +594,8 @@ class people(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='people'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -673,7 +674,8 @@ class people(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -759,7 +761,7 @@ class comments(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='comments')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -785,7 +787,8 @@ class comments(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='comments'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -807,7 +810,8 @@ class comments(GeneratedsSuper):
         outfile.write('],\n')
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         if node.text is not None:
             obj_ = self.mixedclass_(MixedContainer.CategoryText,
@@ -920,7 +924,7 @@ class person(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='person')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -931,22 +935,22 @@ class person(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='person'):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             outfile.write(' vegetable=%s' % (self.gds_format_string(quote_attrib(self.vegetable).encode(ExternalEncoding), input_name='vegetable'), ))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             outfile.write(' fruit=%s' % (self.gds_format_string(quote_attrib(self.fruit).encode(ExternalEncoding), input_name='fruit'), ))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             outfile.write(' ratio="%s"' % self.gds_format_float(self.ratio, input_name='ratio'))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id="%s"' % self.gds_format_integer(self.id, input_name='id'))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             outfile.write(' value=%s' % (self.gds_format_string(quote_attrib(self.value).encode(ExternalEncoding), input_name='value'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='person', fromsubclass_=False, pretty_print=True):
@@ -984,28 +988,29 @@ class person(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='person'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.vegetable is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             showIndent(outfile, level)
             outfile.write('vegetable = "%s",\n' % (self.vegetable,))
         if self.fruit is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             showIndent(outfile, level)
             outfile.write('fruit = "%s",\n' % (self.fruit,))
         if self.ratio is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             showIndent(outfile, level)
             outfile.write('ratio = %f,\n' % (self.ratio,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = %d,\n' % (self.id,))
         if self.value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             showIndent(outfile, level)
             outfile.write('value = "%s",\n' % (self.value,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1052,40 +1057,41 @@ class person(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('vegetable', node)
         if value is not None and 'vegetable' not in already_processed:
-            already_processed.append('vegetable')
+            already_processed.add('vegetable')
             self.vegetable = value
         value = find_attr_value_('fruit', node)
         if value is not None and 'fruit' not in already_processed:
-            already_processed.append('fruit')
+            already_processed.add('fruit')
             self.fruit = value
         value = find_attr_value_('ratio', node)
         if value is not None and 'ratio' not in already_processed:
-            already_processed.append('ratio')
+            already_processed.add('ratio')
             try:
                 self.ratio = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (ratio): %s' % exp)
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             try:
                 self.id = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('value', node)
         if value is not None and 'value' not in already_processed:
-            already_processed.append('value')
+            already_processed.add('value')
             self.value = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'name':
@@ -1140,7 +1146,7 @@ class specialperson(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='specialperson')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1162,7 +1168,8 @@ class specialperson(person):
             return False
     def exportLiteral(self, outfile, level, name_='specialperson'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1170,7 +1177,8 @@ class specialperson(person):
     def exportLiteralChildren(self, outfile, level, name_):
         super(specialperson, self).exportLiteralChildren(outfile, level, name_)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1231,7 +1239,7 @@ class param(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='param')
         if self.hasContent_():
             outfile.write('>')
@@ -1242,22 +1250,22 @@ class param(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='param'):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             outfile.write(' semantic=%s' % (self.gds_format_string(quote_attrib(self.semantic).encode(ExternalEncoding), input_name='semantic'), ))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (quote_attrib(self.name), ))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             outfile.write(' flow=%s' % (quote_attrib(self.flow), ))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             outfile.write(' sid=%s' % (quote_attrib(self.sid), ))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type=%s' % (self.gds_format_string(quote_attrib(self.type_).encode(ExternalEncoding), input_name='type'), ))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             outfile.write(' id=%s' % (self.gds_format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='param', fromsubclass_=False, pretty_print=True):
         pass
@@ -1270,40 +1278,42 @@ class param(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='param'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.semantic is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             showIndent(outfile, level)
             outfile.write('semantic = "%s",\n' % (self.semantic,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
         if self.flow is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             showIndent(outfile, level)
             outfile.write('flow = %s,\n' % (self.flow,))
         if self.sid is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             showIndent(outfile, level)
             outfile.write('sid = "%s",\n' % (self.sid,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = "%s",\n' % (self.type_,))
         if self.id is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             showIndent(outfile, level)
             outfile.write('id = "%s",\n' % (self.id,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -1311,28 +1321,28 @@ class param(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('semantic', node)
         if value is not None and 'semantic' not in already_processed:
-            already_processed.append('semantic')
+            already_processed.add('semantic')
             self.semantic = value
             self.semantic = ' '.join(self.semantic.split())
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
         value = find_attr_value_('flow', node)
         if value is not None and 'flow' not in already_processed:
-            already_processed.append('flow')
+            already_processed.add('flow')
             self.flow = value
         value = find_attr_value_('sid', node)
         if value is not None and 'sid' not in already_processed:
-            already_processed.append('sid')
+            already_processed.add('sid')
             self.sid = value
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             self.type_ = value
         value = find_attr_value_('id', node)
         if value is not None and 'id' not in already_processed:
-            already_processed.append('id')
+            already_processed.add('id')
             self.id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1383,7 +1393,7 @@ class agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1425,7 +1435,8 @@ class agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1459,7 +1470,8 @@ class agent(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1544,7 +1556,7 @@ class special_agent(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='special-agent')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1583,7 +1595,8 @@ class special_agent(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='special-agent'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -1605,7 +1618,8 @@ class special_agent(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('),\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -1701,7 +1715,7 @@ class booster(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='booster')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1712,7 +1726,7 @@ class booster(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='booster'):
         if self.member_id is not None and 'member_id' not in already_processed:
-            already_processed.append('member_id')
+            already_processed.add('member_id')
             outfile.write(' member-id=%s' % (self.gds_format_string(quote_attrib(self.member_id).encode(ExternalEncoding), input_name='member-id'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='booster', fromsubclass_=False, pretty_print=True):
         if pretty_print:
@@ -1754,12 +1768,13 @@ class booster(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='booster'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.member_id is not None and 'member_id' not in already_processed:
-            already_processed.append('member_id')
+            already_processed.add('member_id')
             showIndent(outfile, level)
             outfile.write('member_id = "%s",\n' % (self.member_id,))
     def exportLiteralChildren(self, outfile, level, name_):
@@ -1806,14 +1821,15 @@ class booster(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('member-id', node)
         if value is not None and 'member-id' not in already_processed:
-            already_processed.append('member-id')
+            already_processed.add('member-id')
             self.member_id = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'firstname':
@@ -1895,7 +1911,7 @@ class info(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='info')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -1905,13 +1921,13 @@ class info(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='info'):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             outfile.write(' rating="%s"' % self.gds_format_float(self.rating, input_name='rating'))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             outfile.write(' type="%s"' % self.gds_format_integer(self.type_, input_name='type'))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             outfile.write(' name=%s' % (self.gds_format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='info', fromsubclass_=False, pretty_print=True):
         pass
@@ -1924,47 +1940,49 @@ class info(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='info'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.rating is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             showIndent(outfile, level)
             outfile.write('rating = %f,\n' % (self.rating,))
         if self.type_ is not None and 'type_' not in already_processed:
-            already_processed.append('type_')
+            already_processed.add('type_')
             showIndent(outfile, level)
             outfile.write('type_ = %d,\n' % (self.type_,))
         if self.name is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             showIndent(outfile, level)
             outfile.write('name = "%s",\n' % (self.name,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('rating', node)
         if value is not None and 'rating' not in already_processed:
-            already_processed.append('rating')
+            already_processed.add('rating')
             try:
                 self.rating = float(value)
             except ValueError, exp:
                 raise ValueError('Bad float/double attribute (rating): %s' % exp)
         value = find_attr_value_('type', node)
         if value is not None and 'type' not in already_processed:
-            already_processed.append('type')
+            already_processed.add('type')
             try:
                 self.type_ = int(value)
             except ValueError, exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
         value = find_attr_value_('name', node)
         if value is not None and 'name' not in already_processed:
-            already_processed.append('name')
+            already_processed.add('name')
             self.name = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -1997,7 +2015,7 @@ class vehicle(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='vehicle')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2008,7 +2026,7 @@ class vehicle(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='vehicle'):
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
         pass
@@ -2029,7 +2047,8 @@ class vehicle(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='vehicle'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2039,14 +2058,15 @@ class vehicle(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('wheelcount=%d,\n' % self.wheelcount)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         if nodeName_ == 'wheelcount':
@@ -2084,7 +2104,7 @@ class automobile(vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='automobile')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2114,7 +2134,8 @@ class automobile(vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='automobile'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2125,7 +2146,8 @@ class automobile(vehicle):
             showIndent(outfile, level)
             outfile.write('drivername=%s,\n' % quote_python(self.drivername).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2164,7 +2186,7 @@ class airplane(vehicle):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='airplane')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2194,7 +2216,8 @@ class airplane(vehicle):
             return False
     def exportLiteral(self, outfile, level, name_='airplane'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2205,7 +2228,8 @@ class airplane(vehicle):
             showIndent(outfile, level)
             outfile.write('pilotname=%s,\n' % quote_python(self.pilotname).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2316,7 +2340,7 @@ class programmer(person):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2328,25 +2352,25 @@ class programmer(person):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='programmer'):
         super(programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='programmer')
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             outfile.write(' language=%s' % (self.gds_format_string(quote_attrib(self.language).encode(ExternalEncoding), input_name='language'), ))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             outfile.write(' area=%s' % (self.gds_format_string(quote_attrib(self.area).encode(ExternalEncoding), input_name='area'), ))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             outfile.write(' attrnegint="%s"' % self.gds_format_integer(self.attrnegint, input_name='attrnegint'))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             outfile.write(' attrposint="%s"' % self.gds_format_integer(self.attrposint, input_name='attrposint'))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             outfile.write(' attrnonnegint="%s"' % self.gds_format_integer(self.attrnonnegint, input_name='attrnonnegint'))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             outfile.write(' attrnonposint="%s"' % self.gds_format_integer(self.attrnonposint, input_name='attrnonposint'))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='programmer', fromsubclass_=False, pretty_print=True):
@@ -2407,32 +2431,33 @@ class programmer(person):
             return False
     def exportLiteral(self, outfile, level, name_='programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.language is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             showIndent(outfile, level)
             outfile.write('language = "%s",\n' % (self.language,))
         if self.area is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             showIndent(outfile, level)
             outfile.write('area = "%s",\n' % (self.area,))
         if self.attrnegint is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             showIndent(outfile, level)
             outfile.write('attrnegint = %d,\n' % (self.attrnegint,))
         if self.attrposint is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             showIndent(outfile, level)
             outfile.write('attrposint = %d,\n' % (self.attrposint,))
         if self.attrnonnegint is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             showIndent(outfile, level)
             outfile.write('attrnonnegint = %d,\n' % (self.attrnonnegint,))
         if self.attrnonposint is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             showIndent(outfile, level)
             outfile.write('attrnonposint = %d,\n' % (self.attrnonposint,))
         super(programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2475,22 +2500,23 @@ class programmer(person):
             showIndent(outfile, level)
             outfile.write('elarraytypes=%s,\n' % quote_python(self.elarraytypes).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('language', node)
         if value is not None and 'language' not in already_processed:
-            already_processed.append('language')
+            already_processed.add('language')
             self.language = value
         value = find_attr_value_('area', node)
         if value is not None and 'area' not in already_processed:
-            already_processed.append('area')
+            already_processed.add('area')
             self.area = value
         value = find_attr_value_('attrnegint', node)
         if value is not None and 'attrnegint' not in already_processed:
-            already_processed.append('attrnegint')
+            already_processed.add('attrnegint')
             try:
                 self.attrnegint = int(value)
             except ValueError, exp:
@@ -2499,7 +2525,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NegativeInteger')
         value = find_attr_value_('attrposint', node)
         if value is not None and 'attrposint' not in already_processed:
-            already_processed.append('attrposint')
+            already_processed.add('attrposint')
             try:
                 self.attrposint = int(value)
             except ValueError, exp:
@@ -2508,7 +2534,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid PositiveInteger')
         value = find_attr_value_('attrnonnegint', node)
         if value is not None and 'attrnonnegint' not in already_processed:
-            already_processed.append('attrnonnegint')
+            already_processed.add('attrnonnegint')
             try:
                 self.attrnonnegint = int(value)
             except ValueError, exp:
@@ -2517,7 +2543,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonNegativeInteger')
         value = find_attr_value_('attrnonposint', node)
         if value is not None and 'attrnonposint' not in already_processed:
-            already_processed.append('attrnonposint')
+            already_processed.add('attrnonposint')
             try:
                 self.attrnonposint = int(value)
             except ValueError, exp:
@@ -2526,7 +2552,7 @@ class programmer(person):
                 raise_parse_error(node, 'Invalid NonPositiveInteger')
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
         super(programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2639,7 +2665,7 @@ class client_handlerType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='client-handlerType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2671,7 +2697,8 @@ class client_handlerType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='client-handlerType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -2684,7 +2711,8 @@ class client_handlerType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('refid=%d,\n' % self.refid)
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -2741,7 +2769,7 @@ class java_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2753,10 +2781,10 @@ class java_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='java-programmer'):
         super(java_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='java-programmer')
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             outfile.write(' status=%s' % (self.gds_format_string(quote_attrib(self.status).encode(ExternalEncoding), input_name='status'), ))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='java-programmer', fromsubclass_=False, pretty_print=True):
         super(java_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2777,16 +2805,17 @@ class java_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='java-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.status is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             showIndent(outfile, level)
             outfile.write('status = "%s",\n' % (self.status,))
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(java_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2796,18 +2825,19 @@ class java_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('status', node)
         if value is not None and 'status' not in already_processed:
-            already_processed.append('status')
+            already_processed.add('status')
             self.status = value
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(java_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
@@ -2849,7 +2879,7 @@ class python_programmer(programmer):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -2861,7 +2891,7 @@ class python_programmer(programmer):
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='python-programmer'):
         super(python_programmer, self).exportAttributes(outfile, level, already_processed, namespace_, name_='python-programmer')
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             outfile.write(' nick-name=%s' % (self.gds_format_string(quote_attrib(self.nick_name).encode(ExternalEncoding), input_name='nick-name'), ))
     def exportChildren(self, outfile, level, namespace_='', name_='python-programmer', fromsubclass_=False, pretty_print=True):
         super(python_programmer, self).exportChildren(outfile, level, namespace_, name_, True, pretty_print=pretty_print)
@@ -2882,12 +2912,13 @@ class python_programmer(programmer):
             return False
     def exportLiteral(self, outfile, level, name_='python-programmer'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.nick_name is not None and 'nick_name' not in already_processed:
-            already_processed.append('nick_name')
+            already_processed.add('nick_name')
             showIndent(outfile, level)
             outfile.write('nick_name = "%s",\n' % (self.nick_name,))
         super(python_programmer, self).exportLiteralAttributes(outfile, level, already_processed, name_)
@@ -2897,14 +2928,15 @@ class python_programmer(programmer):
             showIndent(outfile, level)
             outfile.write('favorite_editor=%s,\n' % quote_python(self.favorite_editor).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('nick-name', node)
         if value is not None and 'nick-name' not in already_processed:
-            already_processed.append('nick-name')
+            already_processed.add('nick-name')
             self.nick_name = value
         super(python_programmer, self).buildAttributes(node, attrs, already_processed)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py
index 262e185..35d7d54 100644
--- a/tests/recursive_simpletype1_sup.py
+++ b/tests/recursive_simpletype1_sup.py
@@ -509,7 +509,7 @@ class PersonType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PersonType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -545,7 +545,8 @@ class PersonType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PersonType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -561,7 +562,8 @@ class PersonType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('lname=%s,\n' % quote_python(self.lname).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/recursive_simpletype2_sup.py b/tests/recursive_simpletype2_sup.py
index 262e185..35d7d54 100644
--- a/tests/recursive_simpletype2_sup.py
+++ b/tests/recursive_simpletype2_sup.py
@@ -509,7 +509,7 @@ class PersonType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='PersonType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -545,7 +545,8 @@ class PersonType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='PersonType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -561,7 +562,8 @@ class PersonType(GeneratedsSuper):
             showIndent(outfile, level)
             outfile.write('lname=%s,\n' % quote_python(self.lname).encode(ExternalEncoding))
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/simplecontent_restriction1_sup.py b/tests/simplecontent_restriction1_sup.py
index 08211cf..0e815f5 100644
--- a/tests/simplecontent_restriction1_sup.py
+++ b/tests/simplecontent_restriction1_sup.py
@@ -532,7 +532,7 @@ class IdentifierType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='IdentifierType')
         if self.hasContent_():
             outfile.write('>')
@@ -543,28 +543,28 @@ class IdentifierType(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='IdentifierType'):
         if self.schemeDataURI is not None and 'schemeDataURI' not in already_processed:
-            already_processed.append('schemeDataURI')
+            already_processed.add('schemeDataURI')
             outfile.write(' schemeDataURI=%s' % (self.gds_format_string(quote_attrib(self.schemeDataURI).encode(ExternalEncoding), input_name='schemeDataURI'), ))
         if self.schemeID is not None and 'schemeID' not in already_processed:
-            already_processed.append('schemeID')
+            already_processed.add('schemeID')
             outfile.write(' schemeID=%s' % (self.gds_format_string(quote_attrib(self.schemeID).encode(ExternalEncoding), input_name='schemeID'), ))
         if self.schemeAgencyName is not None and 'schemeAgencyName' not in already_processed:
-            already_processed.append('schemeAgencyName')
+            already_processed.add('schemeAgencyName')
             outfile.write(' schemeAgencyName=%s' % (self.gds_format_string(quote_attrib(self.schemeAgencyName).encode(ExternalEncoding), input_name='schemeAgencyName'), ))
         if self.schemeAgencyID is not None and 'schemeAgencyID' not in already_processed:
-            already_processed.append('schemeAgencyID')
+            already_processed.add('schemeAgencyID')
             outfile.write(' schemeAgencyID=%s' % (self.gds_format_string(quote_attrib(self.schemeAgencyID).encode(ExternalEncoding), input_name='schemeAgencyID'), ))
         if self.schemeName is not None and 'schemeName' not in already_processed:
-            already_processed.append('schemeName')
+            already_processed.add('schemeName')
             outfile.write(' schemeName=%s' % (self.gds_format_string(quote_attrib(self.schemeName).encode(ExternalEncoding), input_name='schemeName'), ))
         if self.schemeVersionID is not None and 'schemeVersionID' not in already_processed:
-            already_processed.append('schemeVersionID')
+            already_processed.add('schemeVersionID')
             outfile.write(' schemeVersionID=%s' % (self.gds_format_string(quote_attrib(self.schemeVersionID).encode(ExternalEncoding), input_name='schemeVersionID'), ))
         if self.schemeURI is not None and 'schemeURI' not in already_processed:
-            already_processed.append('schemeURI')
+            already_processed.add('schemeURI')
             outfile.write(' schemeURI=%s' % (self.gds_format_string(quote_attrib(self.schemeURI).encode(ExternalEncoding), input_name='schemeURI'), ))
         if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
             outfile.write(' xsi:type="%s"' % self.extensiontype_)
     def exportChildren(self, outfile, level, namespace_='', name_='IdentifierType', fromsubclass_=False, pretty_print=True):
@@ -578,44 +578,46 @@ class IdentifierType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='IdentifierType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.schemeDataURI is not None and 'schemeDataURI' not in already_processed:
-            already_processed.append('schemeDataURI')
+            already_processed.add('schemeDataURI')
             showIndent(outfile, level)
             outfile.write('schemeDataURI = "%s",\n' % (self.schemeDataURI,))
         if self.schemeID is not None and 'schemeID' not in already_processed:
-            already_processed.append('schemeID')
+            already_processed.add('schemeID')
             showIndent(outfile, level)
             outfile.write('schemeID = "%s",\n' % (self.schemeID,))
         if self.schemeAgencyName is not None and 'schemeAgencyName' not in already_processed:
-            already_processed.append('schemeAgencyName')
+            already_processed.add('schemeAgencyName')
             showIndent(outfile, level)
             outfile.write('schemeAgencyName = "%s",\n' % (self.schemeAgencyName,))
         if self.schemeAgencyID is not None and 'schemeAgencyID' not in already_processed:
-            already_processed.append('schemeAgencyID')
+            already_processed.add('schemeAgencyID')
             showIndent(outfile, level)
             outfile.write('schemeAgencyID = "%s",\n' % (self.schemeAgencyID,))
         if self.schemeName is not None and 'schemeName' not in already_processed:
-            already_processed.append('schemeName')
+            already_processed.add('schemeName')
             showIndent(outfile, level)
             outfile.write('schemeName = "%s",\n' % (self.schemeName,))
         if self.schemeVersionID is not None and 'schemeVersionID' not in already_processed:
-            already_processed.append('schemeVersionID')
+            already_processed.add('schemeVersionID')
             showIndent(outfile, level)
             outfile.write('schemeVersionID = "%s",\n' % (self.schemeVersionID,))
         if self.schemeURI is not None and 'schemeURI' not in already_processed:
-            already_processed.append('schemeURI')
+            already_processed.add('schemeURI')
             showIndent(outfile, level)
             outfile.write('schemeURI = "%s",\n' % (self.schemeURI,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -623,35 +625,35 @@ class IdentifierType(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('schemeDataURI', node)
         if value is not None and 'schemeDataURI' not in already_processed:
-            already_processed.append('schemeDataURI')
+            already_processed.add('schemeDataURI')
             self.schemeDataURI = value
         value = find_attr_value_('schemeID', node)
         if value is not None and 'schemeID' not in already_processed:
-            already_processed.append('schemeID')
+            already_processed.add('schemeID')
             self.schemeID = value
         value = find_attr_value_('schemeAgencyName', node)
         if value is not None and 'schemeAgencyName' not in already_processed:
-            already_processed.append('schemeAgencyName')
+            already_processed.add('schemeAgencyName')
             self.schemeAgencyName = value
         value = find_attr_value_('schemeAgencyID', node)
         if value is not None and 'schemeAgencyID' not in already_processed:
-            already_processed.append('schemeAgencyID')
+            already_processed.add('schemeAgencyID')
             self.schemeAgencyID = value
         value = find_attr_value_('schemeName', node)
         if value is not None and 'schemeName' not in already_processed:
-            already_processed.append('schemeName')
+            already_processed.add('schemeName')
             self.schemeName = value
         value = find_attr_value_('schemeVersionID', node)
         if value is not None and 'schemeVersionID' not in already_processed:
-            already_processed.append('schemeVersionID')
+            already_processed.add('schemeVersionID')
             self.schemeVersionID = value
         value = find_attr_value_('schemeURI', node)
         if value is not None and 'schemeURI' not in already_processed:
-            already_processed.append('schemeURI')
+            already_processed.add('schemeURI')
             self.schemeURI = value
         value = find_attr_value_('xsi:type', node)
         if value is not None and 'xsi:type' not in already_processed:
-            already_processed.append('xsi:type')
+            already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -682,7 +684,7 @@ class BillOfResourcesIDType(IdentifierType):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfResourcesIDType')
         if self.hasContent_():
             outfile.write('>')
@@ -706,7 +708,8 @@ class BillOfResourcesIDType(IdentifierType):
             return False
     def exportLiteral(self, outfile, level, name_='BillOfResourcesIDType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -717,7 +720,8 @@ class BillOfResourcesIDType(IdentifierType):
         super(BillOfResourcesIDType, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -753,7 +757,7 @@ class BillOfMaterialIDType(IdentifierType):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='BillOfMaterialIDType')
         if self.hasContent_():
             outfile.write('>')
@@ -777,7 +781,8 @@ class BillOfMaterialIDType(IdentifierType):
             return False
     def exportLiteral(self, outfile, level, name_='BillOfMaterialIDType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
@@ -788,7 +793,8 @@ class BillOfMaterialIDType(IdentifierType):
         super(BillOfMaterialIDType, self).exportLiteralChildren(outfile, level, name_)
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
diff --git a/tests/simpletype_memberspecs1_sup.py b/tests/simpletype_memberspecs1_sup.py
index d3be8d0..9905425 100644
--- a/tests/simpletype_memberspecs1_sup.py
+++ b/tests/simpletype_memberspecs1_sup.py
@@ -505,7 +505,7 @@ class SpecialDate(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='SpecialDate')
         if self.hasContent_():
             outfile.write('>')
@@ -516,7 +516,7 @@ class SpecialDate(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='pl:', name_='SpecialDate'):
         if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             outfile.write(' SpecialProperty=%s' % (self.gds_format_string(quote_attrib(self.SpecialProperty).encode(ExternalEncoding), input_name='SpecialProperty'), ))
     def exportChildren(self, outfile, level, namespace_='pl:', name_='SpecialDate', fromsubclass_=False, pretty_print=True):
         pass
@@ -529,20 +529,22 @@ class SpecialDate(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='SpecialDate'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.SpecialProperty is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             showIndent(outfile, level)
             outfile.write('SpecialProperty = "%s",\n' % (self.SpecialProperty,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -550,7 +552,7 @@ class SpecialDate(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('SpecialProperty', node)
         if value is not None and 'SpecialProperty' not in already_processed:
-            already_processed.append('SpecialProperty')
+            already_processed.add('SpecialProperty')
             self.SpecialProperty = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
@@ -584,7 +586,7 @@ class ExtremeDate(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='ExtremeDate')
         if self.hasContent_():
             outfile.write('>')
@@ -595,7 +597,7 @@ class ExtremeDate(GeneratedsSuper):
             outfile.write('/>%s' % (eol_, ))
     def exportAttributes(self, outfile, level, already_processed, namespace_='pl:', name_='ExtremeDate'):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             outfile.write(' ExtremeProperty=%s' % (self.gds_format_string(quote_attrib(self.ExtremeProperty).encode(ExternalEncoding), input_name='ExtremeProperty'), ))
     def exportChildren(self, outfile, level, namespace_='pl:', name_='ExtremeDate', fromsubclass_=False, pretty_print=True):
         pass
@@ -608,20 +610,22 @@ class ExtremeDate(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='ExtremeDate'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
         showIndent(outfile, level)
         outfile.write('valueOf_ = """%s""",\n' % (self.valueOf_,))
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
         if self.ExtremeProperty is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             showIndent(outfile, level)
             outfile.write('ExtremeProperty = "%s",\n' % (self.ExtremeProperty,))
     def exportLiteralChildren(self, outfile, level, name_):
         pass
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         self.valueOf_ = get_all_text_(node)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
@@ -629,7 +633,7 @@ class ExtremeDate(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         value = find_attr_value_('ExtremeProperty', node)
         if value is not None and 'ExtremeProperty' not in already_processed:
-            already_processed.append('ExtremeProperty')
+            already_processed.add('ExtremeProperty')
             self.ExtremeProperty = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
         pass
diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py
index 390cf0d..064dae4 100644
--- a/tests/simpletypes_other1_sup.py
+++ b/tests/simpletypes_other1_sup.py
@@ -506,7 +506,7 @@ class simpleTypeTestsType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTestsType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -534,7 +534,8 @@ class simpleTypeTestsType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='simpleTypeTestsType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -550,7 +551,8 @@ class simpleTypeTestsType(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -707,7 +709,7 @@ class simpleTypeTest(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTest')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -815,7 +817,8 @@ class simpleTypeTest(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='simpleTypeTest'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -933,7 +936,8 @@ class simpleTypeTest(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/simpletypes_other2_sup.py b/tests/simpletypes_other2_sup.py
index 390cf0d..064dae4 100644
--- a/tests/simpletypes_other2_sup.py
+++ b/tests/simpletypes_other2_sup.py
@@ -506,7 +506,7 @@ class simpleTypeTestsType(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTestsType')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -534,7 +534,8 @@ class simpleTypeTestsType(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='simpleTypeTestsType'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -550,7 +551,8 @@ class simpleTypeTestsType(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
@@ -707,7 +709,7 @@ class simpleTypeTest(GeneratedsSuper):
             eol_ = ''
         showIndent(outfile, level, pretty_print)
         outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
-        already_processed = []
+        already_processed = set()
         self.exportAttributes(outfile, level, already_processed, namespace_, name_='simpleTypeTest')
         if self.hasContent_():
             outfile.write('>%s' % (eol_, ))
@@ -815,7 +817,8 @@ class simpleTypeTest(GeneratedsSuper):
             return False
     def exportLiteral(self, outfile, level, name_='simpleTypeTest'):
         level += 1
-        self.exportLiteralAttributes(outfile, level, [], name_)
+        already_processed = set()
+        self.exportLiteralAttributes(outfile, level, already_processed, name_)
         if self.hasContent_():
             self.exportLiteralChildren(outfile, level, name_)
     def exportLiteralAttributes(self, outfile, level, already_processed, name_):
@@ -933,7 +936,8 @@ class simpleTypeTest(GeneratedsSuper):
         showIndent(outfile, level)
         outfile.write('],\n')
     def build(self, node):
-        self.buildAttributes(node, node.attrib, [])
+        already_processed = set()
+        self.buildAttributes(node, node.attrib, already_processed)
         for child in node:
             nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
             self.buildChildren(child, node, nodeName_)
diff --git a/tests/test.py b/tests/test.py
index 8e53b08..05bcf66 100755
--- a/tests/test.py
+++ b/tests/test.py
@@ -228,7 +228,7 @@ class GenTest(unittest.TestCase):
         infile.close()
         self.failUnlessEqual(content1, content2)
 
-    def test_010_extensions(self):
+    def test_010_simplecontent_restriction(self):
         cmdTempl = ('python generateDS.py --no-dates --no-versions '
             '--silence --member-specs=list -f '
             '-o tests/%s2_sup.py -s tests/%s2_sub.py '
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index ee6f56a..0974072 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -216,7 +216,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.8b</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.8c</td>
 </tr>
 </tbody>
 </table>
@@ -225,7 +225,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">January 28, 2013</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">January 31, 2013</td>
 </tr>
 </tbody>
 </table>
diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt
index e9dd79d..1f50f31 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.8b
+:revision: 2.8c
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index d8f36eb7e53e33950d93a2113e77edb1b8fae6ea..724d78077fb3ad5b7e3ff90edf6a1b6dd48e5125 100644
GIT binary patch
delta 12759
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

delta 12785
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
Dh`}1C

-- 
GitLab