[Jython-checkins] jython: Applied AbstractDict-unification of PyDictionary and PyStringMap on derived

stefan.richthofer jython-checkins at python.org
Sun Jan 8 17:33:53 EST 2017


https://hg.python.org/jython/rev/2a39a4b380b7
changeset:   7990:2a39a4b380b7
user:        Stefan Richthofer <stefan.richthofer at gmx.de>
date:        Sun Jan 08 23:33:40 2017 +0100
summary:
  Applied AbstractDict-unification of PyDictionary and PyStringMap on derived classes.

files:
  src/org/python/antlr/ast/AssertDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/AssignDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/AttributeDerived.java                           |  10 ++++----
  src/org/python/antlr/ast/AugAssignDerived.java                           |  10 ++++----
  src/org/python/antlr/ast/BinOpDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/BoolOpDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/BreakDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/CallDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/ClassDefDerived.java                            |  10 ++++----
  src/org/python/antlr/ast/CompareDerived.java                             |  10 ++++----
  src/org/python/antlr/ast/ContinueDerived.java                            |  10 ++++----
  src/org/python/antlr/ast/DeleteDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/DictDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/EllipsisDerived.java                            |  10 ++++----
  src/org/python/antlr/ast/ExceptHandlerDerived.java                       |  10 ++++----
  src/org/python/antlr/ast/ExecDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/ExprDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/ExpressionDerived.java                          |  10 ++++----
  src/org/python/antlr/ast/ExtSliceDerived.java                            |  10 ++++----
  src/org/python/antlr/ast/ForDerived.java                                 |  10 ++++----
  src/org/python/antlr/ast/FunctionDefDerived.java                         |  10 ++++----
  src/org/python/antlr/ast/GeneratorExpDerived.java                        |  10 ++++----
  src/org/python/antlr/ast/GlobalDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/IfDerived.java                                  |  10 ++++----
  src/org/python/antlr/ast/IfExpDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/ImportDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/ImportFromDerived.java                          |  10 ++++----
  src/org/python/antlr/ast/IndexDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/InteractiveDerived.java                         |  10 ++++----
  src/org/python/antlr/ast/LambdaDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/ListCompDerived.java                            |  10 ++++----
  src/org/python/antlr/ast/ListDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/ModuleDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/NameDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/NumDerived.java                                 |  10 ++++----
  src/org/python/antlr/ast/PassDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/PrintDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/RaiseDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/ReprDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/ReturnDerived.java                              |  10 ++++----
  src/org/python/antlr/ast/SliceDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/StrDerived.java                                 |  10 ++++----
  src/org/python/antlr/ast/SubscriptDerived.java                           |  10 ++++----
  src/org/python/antlr/ast/SuiteDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/TryExceptDerived.java                           |  10 ++++----
  src/org/python/antlr/ast/TryFinallyDerived.java                          |  10 ++++----
  src/org/python/antlr/ast/TupleDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/UnaryOpDerived.java                             |  10 ++++----
  src/org/python/antlr/ast/WhileDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/WithDerived.java                                |  10 ++++----
  src/org/python/antlr/ast/YieldDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/aliasDerived.java                               |  10 ++++----
  src/org/python/antlr/ast/argumentsDerived.java                           |  10 ++++----
  src/org/python/antlr/ast/comprehensionDerived.java                       |  10 ++++----
  src/org/python/antlr/ast/keywordDerived.java                             |  10 ++++----
  src/org/python/antlr/op/AddDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/AndDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/AugLoadDerived.java                              |  10 ++++----
  src/org/python/antlr/op/AugStoreDerived.java                             |  10 ++++----
  src/org/python/antlr/op/BitAndDerived.java                               |  10 ++++----
  src/org/python/antlr/op/BitOrDerived.java                                |  10 ++++----
  src/org/python/antlr/op/BitXorDerived.java                               |  10 ++++----
  src/org/python/antlr/op/DelDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/DivDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/EqDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/FloorDivDerived.java                             |  10 ++++----
  src/org/python/antlr/op/GtDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/GtEDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/InDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/InvertDerived.java                               |  10 ++++----
  src/org/python/antlr/op/IsDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/IsNotDerived.java                                |  10 ++++----
  src/org/python/antlr/op/LShiftDerived.java                               |  10 ++++----
  src/org/python/antlr/op/LoadDerived.java                                 |  10 ++++----
  src/org/python/antlr/op/LtDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/LtEDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/ModDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/MultDerived.java                                 |  10 ++++----
  src/org/python/antlr/op/NotDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/NotEqDerived.java                                |  10 ++++----
  src/org/python/antlr/op/NotInDerived.java                                |  10 ++++----
  src/org/python/antlr/op/OrDerived.java                                   |  10 ++++----
  src/org/python/antlr/op/ParamDerived.java                                |  10 ++++----
  src/org/python/antlr/op/PowDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/RShiftDerived.java                               |  10 ++++----
  src/org/python/antlr/op/StoreDerived.java                                |  10 ++++----
  src/org/python/antlr/op/SubDerived.java                                  |  10 ++++----
  src/org/python/antlr/op/UAddDerived.java                                 |  10 ++++----
  src/org/python/antlr/op/USubDerived.java                                 |  10 ++++----
  src/org/python/core/PyArrayDerived.java                                  |  10 ++++----
  src/org/python/core/PyByteArrayDerived.java                              |  10 ++++----
  src/org/python/core/PyClassMethodDerived.java                            |  10 ++++----
  src/org/python/core/PyComplexDerived.java                                |  10 ++++----
  src/org/python/core/PyDictionaryDerived.java                             |  10 ++++----
  src/org/python/core/PyEnumerateDerived.java                              |  10 ++++----
  src/org/python/core/PyFileDerived.java                                   |  10 ++++----
  src/org/python/core/PyFloatDerived.java                                  |  10 ++++----
  src/org/python/core/PyFrozenSetDerived.java                              |  10 ++++----
  src/org/python/core/PyIntegerDerived.java                                |  10 ++++----
  src/org/python/core/PyListDerived.java                                   |  10 ++++----
  src/org/python/core/PyLongDerived.java                                   |  10 ++++----
  src/org/python/core/PyObjectDerived.java                                 |  10 ++++----
  src/org/python/core/PyPropertyDerived.java                               |  10 ++++----
  src/org/python/core/PySetDerived.java                                    |  10 ++++----
  src/org/python/core/PyStringDerived.java                                 |  10 ++++----
  src/org/python/core/PySuperDerived.java                                  |  10 ++++----
  src/org/python/core/PyTupleDerived.java                                  |  10 ++++----
  src/org/python/core/PyUnicodeDerived.java                                |  10 ++++----
  src/org/python/modules/PyStructDerived.java                              |  10 ++++----
  src/org/python/modules/_collections/PyDefaultDictDerived.java            |  10 ++++----
  src/org/python/modules/_collections/PyDequeDerived.java                  |  10 ++++----
  src/org/python/modules/_functools/PyPartialDerived.java                  |  10 ++++----
  src/org/python/modules/_weakref/ReferenceTypeDerived.java                |  10 ++++----
  src/org/python/modules/bz2/PyBZ2CompressorDerived.java                   |  10 ++++----
  src/org/python/modules/bz2/PyBZ2DecompressorDerived.java                 |  10 ++++----
  src/org/python/modules/bz2/PyBZ2FileDerived.java                         |  10 ++++----
  src/org/python/modules/itertools/PyTeeIteratorDerived.java               |  10 ++++----
  src/org/python/modules/itertools/chainDerived.java                       |  10 ++++----
  src/org/python/modules/itertools/combinationsDerived.java                |  10 ++++----
  src/org/python/modules/itertools/combinationsWithReplacementDerived.java |  10 ++++----
  src/org/python/modules/itertools/compressDerived.java                    |  10 ++++----
  src/org/python/modules/itertools/countDerived.java                       |  10 ++++----
  src/org/python/modules/itertools/cycleDerived.java                       |  10 ++++----
  src/org/python/modules/itertools/dropwhileDerived.java                   |  10 ++++----
  src/org/python/modules/itertools/groupbyDerived.java                     |  10 ++++----
  src/org/python/modules/itertools/ifilterDerived.java                     |  10 ++++----
  src/org/python/modules/itertools/ifilterfalseDerived.java                |  10 ++++----
  src/org/python/modules/itertools/isliceDerived.java                      |  10 ++++----
  src/org/python/modules/itertools/izipDerived.java                        |  10 ++++----
  src/org/python/modules/itertools/izipLongestDerived.java                 |  10 ++++----
  src/org/python/modules/itertools/permutationsDerived.java                |  10 ++++----
  src/org/python/modules/itertools/productDerived.java                     |  10 ++++----
  src/org/python/modules/itertools/repeatDerived.java                      |  10 ++++----
  src/org/python/modules/itertools/starmapDerived.java                     |  10 ++++----
  src/org/python/modules/itertools/takewhileDerived.java                   |  10 ++++----
  src/org/python/modules/random/PyRandomDerived.java                       |  10 ++++----
  src/org/python/modules/zipimport/zipimporterDerived.java                 |  10 ++++----
  src/templates/gderived-defs                                              |  12 +++++-----
  138 files changed, 691 insertions(+), 691 deletions(-)


diff --git a/src/org/python/antlr/ast/AssertDerived.java b/src/org/python/antlr/ast/AssertDerived.java
--- a/src/org/python/antlr/ast/AssertDerived.java
+++ b/src/org/python/antlr/ast/AssertDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/AssignDerived.java b/src/org/python/antlr/ast/AssignDerived.java
--- a/src/org/python/antlr/ast/AssignDerived.java
+++ b/src/org/python/antlr/ast/AssignDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/AttributeDerived.java b/src/org/python/antlr/ast/AttributeDerived.java
--- a/src/org/python/antlr/ast/AttributeDerived.java
+++ b/src/org/python/antlr/ast/AttributeDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/AugAssignDerived.java b/src/org/python/antlr/ast/AugAssignDerived.java
--- a/src/org/python/antlr/ast/AugAssignDerived.java
+++ b/src/org/python/antlr/ast/AugAssignDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/BinOpDerived.java b/src/org/python/antlr/ast/BinOpDerived.java
--- a/src/org/python/antlr/ast/BinOpDerived.java
+++ b/src/org/python/antlr/ast/BinOpDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/BoolOpDerived.java b/src/org/python/antlr/ast/BoolOpDerived.java
--- a/src/org/python/antlr/ast/BoolOpDerived.java
+++ b/src/org/python/antlr/ast/BoolOpDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/BreakDerived.java b/src/org/python/antlr/ast/BreakDerived.java
--- a/src/org/python/antlr/ast/BreakDerived.java
+++ b/src/org/python/antlr/ast/BreakDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/CallDerived.java b/src/org/python/antlr/ast/CallDerived.java
--- a/src/org/python/antlr/ast/CallDerived.java
+++ b/src/org/python/antlr/ast/CallDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ClassDefDerived.java b/src/org/python/antlr/ast/ClassDefDerived.java
--- a/src/org/python/antlr/ast/ClassDefDerived.java
+++ b/src/org/python/antlr/ast/ClassDefDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/CompareDerived.java b/src/org/python/antlr/ast/CompareDerived.java
--- a/src/org/python/antlr/ast/CompareDerived.java
+++ b/src/org/python/antlr/ast/CompareDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ContinueDerived.java b/src/org/python/antlr/ast/ContinueDerived.java
--- a/src/org/python/antlr/ast/ContinueDerived.java
+++ b/src/org/python/antlr/ast/ContinueDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/DeleteDerived.java b/src/org/python/antlr/ast/DeleteDerived.java
--- a/src/org/python/antlr/ast/DeleteDerived.java
+++ b/src/org/python/antlr/ast/DeleteDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/DictDerived.java b/src/org/python/antlr/ast/DictDerived.java
--- a/src/org/python/antlr/ast/DictDerived.java
+++ b/src/org/python/antlr/ast/DictDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/EllipsisDerived.java b/src/org/python/antlr/ast/EllipsisDerived.java
--- a/src/org/python/antlr/ast/EllipsisDerived.java
+++ b/src/org/python/antlr/ast/EllipsisDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ExceptHandlerDerived.java b/src/org/python/antlr/ast/ExceptHandlerDerived.java
--- a/src/org/python/antlr/ast/ExceptHandlerDerived.java
+++ b/src/org/python/antlr/ast/ExceptHandlerDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ExecDerived.java b/src/org/python/antlr/ast/ExecDerived.java
--- a/src/org/python/antlr/ast/ExecDerived.java
+++ b/src/org/python/antlr/ast/ExecDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ExprDerived.java b/src/org/python/antlr/ast/ExprDerived.java
--- a/src/org/python/antlr/ast/ExprDerived.java
+++ b/src/org/python/antlr/ast/ExprDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ExpressionDerived.java b/src/org/python/antlr/ast/ExpressionDerived.java
--- a/src/org/python/antlr/ast/ExpressionDerived.java
+++ b/src/org/python/antlr/ast/ExpressionDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ExtSliceDerived.java b/src/org/python/antlr/ast/ExtSliceDerived.java
--- a/src/org/python/antlr/ast/ExtSliceDerived.java
+++ b/src/org/python/antlr/ast/ExtSliceDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ForDerived.java b/src/org/python/antlr/ast/ForDerived.java
--- a/src/org/python/antlr/ast/ForDerived.java
+++ b/src/org/python/antlr/ast/ForDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/FunctionDefDerived.java b/src/org/python/antlr/ast/FunctionDefDerived.java
--- a/src/org/python/antlr/ast/FunctionDefDerived.java
+++ b/src/org/python/antlr/ast/FunctionDefDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/GeneratorExpDerived.java b/src/org/python/antlr/ast/GeneratorExpDerived.java
--- a/src/org/python/antlr/ast/GeneratorExpDerived.java
+++ b/src/org/python/antlr/ast/GeneratorExpDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/GlobalDerived.java b/src/org/python/antlr/ast/GlobalDerived.java
--- a/src/org/python/antlr/ast/GlobalDerived.java
+++ b/src/org/python/antlr/ast/GlobalDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/IfDerived.java b/src/org/python/antlr/ast/IfDerived.java
--- a/src/org/python/antlr/ast/IfDerived.java
+++ b/src/org/python/antlr/ast/IfDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/IfExpDerived.java b/src/org/python/antlr/ast/IfExpDerived.java
--- a/src/org/python/antlr/ast/IfExpDerived.java
+++ b/src/org/python/antlr/ast/IfExpDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ImportDerived.java b/src/org/python/antlr/ast/ImportDerived.java
--- a/src/org/python/antlr/ast/ImportDerived.java
+++ b/src/org/python/antlr/ast/ImportDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ImportFromDerived.java b/src/org/python/antlr/ast/ImportFromDerived.java
--- a/src/org/python/antlr/ast/ImportFromDerived.java
+++ b/src/org/python/antlr/ast/ImportFromDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/IndexDerived.java b/src/org/python/antlr/ast/IndexDerived.java
--- a/src/org/python/antlr/ast/IndexDerived.java
+++ b/src/org/python/antlr/ast/IndexDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/InteractiveDerived.java b/src/org/python/antlr/ast/InteractiveDerived.java
--- a/src/org/python/antlr/ast/InteractiveDerived.java
+++ b/src/org/python/antlr/ast/InteractiveDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/LambdaDerived.java b/src/org/python/antlr/ast/LambdaDerived.java
--- a/src/org/python/antlr/ast/LambdaDerived.java
+++ b/src/org/python/antlr/ast/LambdaDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ListCompDerived.java b/src/org/python/antlr/ast/ListCompDerived.java
--- a/src/org/python/antlr/ast/ListCompDerived.java
+++ b/src/org/python/antlr/ast/ListCompDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ListDerived.java b/src/org/python/antlr/ast/ListDerived.java
--- a/src/org/python/antlr/ast/ListDerived.java
+++ b/src/org/python/antlr/ast/ListDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ModuleDerived.java b/src/org/python/antlr/ast/ModuleDerived.java
--- a/src/org/python/antlr/ast/ModuleDerived.java
+++ b/src/org/python/antlr/ast/ModuleDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/NameDerived.java b/src/org/python/antlr/ast/NameDerived.java
--- a/src/org/python/antlr/ast/NameDerived.java
+++ b/src/org/python/antlr/ast/NameDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/NumDerived.java b/src/org/python/antlr/ast/NumDerived.java
--- a/src/org/python/antlr/ast/NumDerived.java
+++ b/src/org/python/antlr/ast/NumDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/PassDerived.java b/src/org/python/antlr/ast/PassDerived.java
--- a/src/org/python/antlr/ast/PassDerived.java
+++ b/src/org/python/antlr/ast/PassDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/PrintDerived.java b/src/org/python/antlr/ast/PrintDerived.java
--- a/src/org/python/antlr/ast/PrintDerived.java
+++ b/src/org/python/antlr/ast/PrintDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/RaiseDerived.java b/src/org/python/antlr/ast/RaiseDerived.java
--- a/src/org/python/antlr/ast/RaiseDerived.java
+++ b/src/org/python/antlr/ast/RaiseDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ReprDerived.java b/src/org/python/antlr/ast/ReprDerived.java
--- a/src/org/python/antlr/ast/ReprDerived.java
+++ b/src/org/python/antlr/ast/ReprDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/ReturnDerived.java b/src/org/python/antlr/ast/ReturnDerived.java
--- a/src/org/python/antlr/ast/ReturnDerived.java
+++ b/src/org/python/antlr/ast/ReturnDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/SliceDerived.java b/src/org/python/antlr/ast/SliceDerived.java
--- a/src/org/python/antlr/ast/SliceDerived.java
+++ b/src/org/python/antlr/ast/SliceDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/StrDerived.java b/src/org/python/antlr/ast/StrDerived.java
--- a/src/org/python/antlr/ast/StrDerived.java
+++ b/src/org/python/antlr/ast/StrDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/SubscriptDerived.java b/src/org/python/antlr/ast/SubscriptDerived.java
--- a/src/org/python/antlr/ast/SubscriptDerived.java
+++ b/src/org/python/antlr/ast/SubscriptDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/SuiteDerived.java b/src/org/python/antlr/ast/SuiteDerived.java
--- a/src/org/python/antlr/ast/SuiteDerived.java
+++ b/src/org/python/antlr/ast/SuiteDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/TryExceptDerived.java b/src/org/python/antlr/ast/TryExceptDerived.java
--- a/src/org/python/antlr/ast/TryExceptDerived.java
+++ b/src/org/python/antlr/ast/TryExceptDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/TryFinallyDerived.java b/src/org/python/antlr/ast/TryFinallyDerived.java
--- a/src/org/python/antlr/ast/TryFinallyDerived.java
+++ b/src/org/python/antlr/ast/TryFinallyDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/TupleDerived.java b/src/org/python/antlr/ast/TupleDerived.java
--- a/src/org/python/antlr/ast/TupleDerived.java
+++ b/src/org/python/antlr/ast/TupleDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/UnaryOpDerived.java b/src/org/python/antlr/ast/UnaryOpDerived.java
--- a/src/org/python/antlr/ast/UnaryOpDerived.java
+++ b/src/org/python/antlr/ast/UnaryOpDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/WhileDerived.java b/src/org/python/antlr/ast/WhileDerived.java
--- a/src/org/python/antlr/ast/WhileDerived.java
+++ b/src/org/python/antlr/ast/WhileDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/WithDerived.java b/src/org/python/antlr/ast/WithDerived.java
--- a/src/org/python/antlr/ast/WithDerived.java
+++ b/src/org/python/antlr/ast/WithDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/YieldDerived.java b/src/org/python/antlr/ast/YieldDerived.java
--- a/src/org/python/antlr/ast/YieldDerived.java
+++ b/src/org/python/antlr/ast/YieldDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/aliasDerived.java b/src/org/python/antlr/ast/aliasDerived.java
--- a/src/org/python/antlr/ast/aliasDerived.java
+++ b/src/org/python/antlr/ast/aliasDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/argumentsDerived.java b/src/org/python/antlr/ast/argumentsDerived.java
--- a/src/org/python/antlr/ast/argumentsDerived.java
+++ b/src/org/python/antlr/ast/argumentsDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/comprehensionDerived.java b/src/org/python/antlr/ast/comprehensionDerived.java
--- a/src/org/python/antlr/ast/comprehensionDerived.java
+++ b/src/org/python/antlr/ast/comprehensionDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/ast/keywordDerived.java b/src/org/python/antlr/ast/keywordDerived.java
--- a/src/org/python/antlr/ast/keywordDerived.java
+++ b/src/org/python/antlr/ast/keywordDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/AddDerived.java b/src/org/python/antlr/op/AddDerived.java
--- a/src/org/python/antlr/op/AddDerived.java
+++ b/src/org/python/antlr/op/AddDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/AndDerived.java b/src/org/python/antlr/op/AndDerived.java
--- a/src/org/python/antlr/op/AndDerived.java
+++ b/src/org/python/antlr/op/AndDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/AugLoadDerived.java b/src/org/python/antlr/op/AugLoadDerived.java
--- a/src/org/python/antlr/op/AugLoadDerived.java
+++ b/src/org/python/antlr/op/AugLoadDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/AugStoreDerived.java b/src/org/python/antlr/op/AugStoreDerived.java
--- a/src/org/python/antlr/op/AugStoreDerived.java
+++ b/src/org/python/antlr/op/AugStoreDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/BitAndDerived.java b/src/org/python/antlr/op/BitAndDerived.java
--- a/src/org/python/antlr/op/BitAndDerived.java
+++ b/src/org/python/antlr/op/BitAndDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/BitOrDerived.java b/src/org/python/antlr/op/BitOrDerived.java
--- a/src/org/python/antlr/op/BitOrDerived.java
+++ b/src/org/python/antlr/op/BitOrDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/BitXorDerived.java b/src/org/python/antlr/op/BitXorDerived.java
--- a/src/org/python/antlr/op/BitXorDerived.java
+++ b/src/org/python/antlr/op/BitXorDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/DelDerived.java b/src/org/python/antlr/op/DelDerived.java
--- a/src/org/python/antlr/op/DelDerived.java
+++ b/src/org/python/antlr/op/DelDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/DivDerived.java b/src/org/python/antlr/op/DivDerived.java
--- a/src/org/python/antlr/op/DivDerived.java
+++ b/src/org/python/antlr/op/DivDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/EqDerived.java b/src/org/python/antlr/op/EqDerived.java
--- a/src/org/python/antlr/op/EqDerived.java
+++ b/src/org/python/antlr/op/EqDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/FloorDivDerived.java b/src/org/python/antlr/op/FloorDivDerived.java
--- a/src/org/python/antlr/op/FloorDivDerived.java
+++ b/src/org/python/antlr/op/FloorDivDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/GtDerived.java b/src/org/python/antlr/op/GtDerived.java
--- a/src/org/python/antlr/op/GtDerived.java
+++ b/src/org/python/antlr/op/GtDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/GtEDerived.java b/src/org/python/antlr/op/GtEDerived.java
--- a/src/org/python/antlr/op/GtEDerived.java
+++ b/src/org/python/antlr/op/GtEDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/InDerived.java b/src/org/python/antlr/op/InDerived.java
--- a/src/org/python/antlr/op/InDerived.java
+++ b/src/org/python/antlr/op/InDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/InvertDerived.java b/src/org/python/antlr/op/InvertDerived.java
--- a/src/org/python/antlr/op/InvertDerived.java
+++ b/src/org/python/antlr/op/InvertDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/IsDerived.java b/src/org/python/antlr/op/IsDerived.java
--- a/src/org/python/antlr/op/IsDerived.java
+++ b/src/org/python/antlr/op/IsDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/IsNotDerived.java b/src/org/python/antlr/op/IsNotDerived.java
--- a/src/org/python/antlr/op/IsNotDerived.java
+++ b/src/org/python/antlr/op/IsNotDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/LShiftDerived.java b/src/org/python/antlr/op/LShiftDerived.java
--- a/src/org/python/antlr/op/LShiftDerived.java
+++ b/src/org/python/antlr/op/LShiftDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/LoadDerived.java b/src/org/python/antlr/op/LoadDerived.java
--- a/src/org/python/antlr/op/LoadDerived.java
+++ b/src/org/python/antlr/op/LoadDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/LtDerived.java b/src/org/python/antlr/op/LtDerived.java
--- a/src/org/python/antlr/op/LtDerived.java
+++ b/src/org/python/antlr/op/LtDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/LtEDerived.java b/src/org/python/antlr/op/LtEDerived.java
--- a/src/org/python/antlr/op/LtEDerived.java
+++ b/src/org/python/antlr/op/LtEDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/ModDerived.java b/src/org/python/antlr/op/ModDerived.java
--- a/src/org/python/antlr/op/ModDerived.java
+++ b/src/org/python/antlr/op/ModDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/MultDerived.java b/src/org/python/antlr/op/MultDerived.java
--- a/src/org/python/antlr/op/MultDerived.java
+++ b/src/org/python/antlr/op/MultDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/NotDerived.java b/src/org/python/antlr/op/NotDerived.java
--- a/src/org/python/antlr/op/NotDerived.java
+++ b/src/org/python/antlr/op/NotDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/NotEqDerived.java b/src/org/python/antlr/op/NotEqDerived.java
--- a/src/org/python/antlr/op/NotEqDerived.java
+++ b/src/org/python/antlr/op/NotEqDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/NotInDerived.java b/src/org/python/antlr/op/NotInDerived.java
--- a/src/org/python/antlr/op/NotInDerived.java
+++ b/src/org/python/antlr/op/NotInDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/OrDerived.java b/src/org/python/antlr/op/OrDerived.java
--- a/src/org/python/antlr/op/OrDerived.java
+++ b/src/org/python/antlr/op/OrDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/ParamDerived.java b/src/org/python/antlr/op/ParamDerived.java
--- a/src/org/python/antlr/op/ParamDerived.java
+++ b/src/org/python/antlr/op/ParamDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/PowDerived.java b/src/org/python/antlr/op/PowDerived.java
--- a/src/org/python/antlr/op/PowDerived.java
+++ b/src/org/python/antlr/op/PowDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/RShiftDerived.java b/src/org/python/antlr/op/RShiftDerived.java
--- a/src/org/python/antlr/op/RShiftDerived.java
+++ b/src/org/python/antlr/op/RShiftDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/StoreDerived.java b/src/org/python/antlr/op/StoreDerived.java
--- a/src/org/python/antlr/op/StoreDerived.java
+++ b/src/org/python/antlr/op/StoreDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/SubDerived.java b/src/org/python/antlr/op/SubDerived.java
--- a/src/org/python/antlr/op/SubDerived.java
+++ b/src/org/python/antlr/op/SubDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/UAddDerived.java b/src/org/python/antlr/op/UAddDerived.java
--- a/src/org/python/antlr/op/UAddDerived.java
+++ b/src/org/python/antlr/op/UAddDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/antlr/op/USubDerived.java b/src/org/python/antlr/op/USubDerived.java
--- a/src/org/python/antlr/op/USubDerived.java
+++ b/src/org/python/antlr/op/USubDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyArrayDerived.java b/src/org/python/core/PyArrayDerived.java
--- a/src/org/python/core/PyArrayDerived.java
+++ b/src/org/python/core/PyArrayDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyByteArrayDerived.java b/src/org/python/core/PyByteArrayDerived.java
--- a/src/org/python/core/PyByteArrayDerived.java
+++ b/src/org/python/core/PyByteArrayDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyClassMethodDerived.java b/src/org/python/core/PyClassMethodDerived.java
--- a/src/org/python/core/PyClassMethodDerived.java
+++ b/src/org/python/core/PyClassMethodDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyComplexDerived.java b/src/org/python/core/PyComplexDerived.java
--- a/src/org/python/core/PyComplexDerived.java
+++ b/src/org/python/core/PyComplexDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyDictionaryDerived.java b/src/org/python/core/PyDictionaryDerived.java
--- a/src/org/python/core/PyDictionaryDerived.java
+++ b/src/org/python/core/PyDictionaryDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyEnumerateDerived.java b/src/org/python/core/PyEnumerateDerived.java
--- a/src/org/python/core/PyEnumerateDerived.java
+++ b/src/org/python/core/PyEnumerateDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyFileDerived.java b/src/org/python/core/PyFileDerived.java
--- a/src/org/python/core/PyFileDerived.java
+++ b/src/org/python/core/PyFileDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyFloatDerived.java b/src/org/python/core/PyFloatDerived.java
--- a/src/org/python/core/PyFloatDerived.java
+++ b/src/org/python/core/PyFloatDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyFrozenSetDerived.java b/src/org/python/core/PyFrozenSetDerived.java
--- a/src/org/python/core/PyFrozenSetDerived.java
+++ b/src/org/python/core/PyFrozenSetDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyIntegerDerived.java b/src/org/python/core/PyIntegerDerived.java
--- a/src/org/python/core/PyIntegerDerived.java
+++ b/src/org/python/core/PyIntegerDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyListDerived.java b/src/org/python/core/PyListDerived.java
--- a/src/org/python/core/PyListDerived.java
+++ b/src/org/python/core/PyListDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyLongDerived.java b/src/org/python/core/PyLongDerived.java
--- a/src/org/python/core/PyLongDerived.java
+++ b/src/org/python/core/PyLongDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyObjectDerived.java b/src/org/python/core/PyObjectDerived.java
--- a/src/org/python/core/PyObjectDerived.java
+++ b/src/org/python/core/PyObjectDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyPropertyDerived.java b/src/org/python/core/PyPropertyDerived.java
--- a/src/org/python/core/PyPropertyDerived.java
+++ b/src/org/python/core/PyPropertyDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PySetDerived.java b/src/org/python/core/PySetDerived.java
--- a/src/org/python/core/PySetDerived.java
+++ b/src/org/python/core/PySetDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyStringDerived.java b/src/org/python/core/PyStringDerived.java
--- a/src/org/python/core/PyStringDerived.java
+++ b/src/org/python/core/PyStringDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PySuperDerived.java b/src/org/python/core/PySuperDerived.java
--- a/src/org/python/core/PySuperDerived.java
+++ b/src/org/python/core/PySuperDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyTupleDerived.java b/src/org/python/core/PyTupleDerived.java
--- a/src/org/python/core/PyTupleDerived.java
+++ b/src/org/python/core/PyTupleDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/core/PyUnicodeDerived.java b/src/org/python/core/PyUnicodeDerived.java
--- a/src/org/python/core/PyUnicodeDerived.java
+++ b/src/org/python/core/PyUnicodeDerived.java
@@ -46,19 +46,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/PyStructDerived.java b/src/org/python/modules/PyStructDerived.java
--- a/src/org/python/modules/PyStructDerived.java
+++ b/src/org/python/modules/PyStructDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/_collections/PyDefaultDictDerived.java b/src/org/python/modules/_collections/PyDefaultDictDerived.java
--- a/src/org/python/modules/_collections/PyDefaultDictDerived.java
+++ b/src/org/python/modules/_collections/PyDefaultDictDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/_collections/PyDequeDerived.java b/src/org/python/modules/_collections/PyDequeDerived.java
--- a/src/org/python/modules/_collections/PyDequeDerived.java
+++ b/src/org/python/modules/_collections/PyDequeDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/_functools/PyPartialDerived.java b/src/org/python/modules/_functools/PyPartialDerived.java
--- a/src/org/python/modules/_functools/PyPartialDerived.java
+++ b/src/org/python/modules/_functools/PyPartialDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/_weakref/ReferenceTypeDerived.java b/src/org/python/modules/_weakref/ReferenceTypeDerived.java
--- a/src/org/python/modules/_weakref/ReferenceTypeDerived.java
+++ b/src/org/python/modules/_weakref/ReferenceTypeDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/bz2/PyBZ2CompressorDerived.java b/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
--- a/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java b/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
--- a/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/bz2/PyBZ2FileDerived.java b/src/org/python/modules/bz2/PyBZ2FileDerived.java
--- a/src/org/python/modules/bz2/PyBZ2FileDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2FileDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/PyTeeIteratorDerived.java b/src/org/python/modules/itertools/PyTeeIteratorDerived.java
--- a/src/org/python/modules/itertools/PyTeeIteratorDerived.java
+++ b/src/org/python/modules/itertools/PyTeeIteratorDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/chainDerived.java b/src/org/python/modules/itertools/chainDerived.java
--- a/src/org/python/modules/itertools/chainDerived.java
+++ b/src/org/python/modules/itertools/chainDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/combinationsDerived.java b/src/org/python/modules/itertools/combinationsDerived.java
--- a/src/org/python/modules/itertools/combinationsDerived.java
+++ b/src/org/python/modules/itertools/combinationsDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/combinationsWithReplacementDerived.java b/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
--- a/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
+++ b/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/compressDerived.java b/src/org/python/modules/itertools/compressDerived.java
--- a/src/org/python/modules/itertools/compressDerived.java
+++ b/src/org/python/modules/itertools/compressDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/countDerived.java b/src/org/python/modules/itertools/countDerived.java
--- a/src/org/python/modules/itertools/countDerived.java
+++ b/src/org/python/modules/itertools/countDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/cycleDerived.java b/src/org/python/modules/itertools/cycleDerived.java
--- a/src/org/python/modules/itertools/cycleDerived.java
+++ b/src/org/python/modules/itertools/cycleDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/dropwhileDerived.java b/src/org/python/modules/itertools/dropwhileDerived.java
--- a/src/org/python/modules/itertools/dropwhileDerived.java
+++ b/src/org/python/modules/itertools/dropwhileDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/groupbyDerived.java b/src/org/python/modules/itertools/groupbyDerived.java
--- a/src/org/python/modules/itertools/groupbyDerived.java
+++ b/src/org/python/modules/itertools/groupbyDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/ifilterDerived.java b/src/org/python/modules/itertools/ifilterDerived.java
--- a/src/org/python/modules/itertools/ifilterDerived.java
+++ b/src/org/python/modules/itertools/ifilterDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/ifilterfalseDerived.java b/src/org/python/modules/itertools/ifilterfalseDerived.java
--- a/src/org/python/modules/itertools/ifilterfalseDerived.java
+++ b/src/org/python/modules/itertools/ifilterfalseDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/isliceDerived.java b/src/org/python/modules/itertools/isliceDerived.java
--- a/src/org/python/modules/itertools/isliceDerived.java
+++ b/src/org/python/modules/itertools/isliceDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/izipDerived.java b/src/org/python/modules/itertools/izipDerived.java
--- a/src/org/python/modules/itertools/izipDerived.java
+++ b/src/org/python/modules/itertools/izipDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/izipLongestDerived.java b/src/org/python/modules/itertools/izipLongestDerived.java
--- a/src/org/python/modules/itertools/izipLongestDerived.java
+++ b/src/org/python/modules/itertools/izipLongestDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/permutationsDerived.java b/src/org/python/modules/itertools/permutationsDerived.java
--- a/src/org/python/modules/itertools/permutationsDerived.java
+++ b/src/org/python/modules/itertools/permutationsDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/productDerived.java b/src/org/python/modules/itertools/productDerived.java
--- a/src/org/python/modules/itertools/productDerived.java
+++ b/src/org/python/modules/itertools/productDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/repeatDerived.java b/src/org/python/modules/itertools/repeatDerived.java
--- a/src/org/python/modules/itertools/repeatDerived.java
+++ b/src/org/python/modules/itertools/repeatDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/starmapDerived.java b/src/org/python/modules/itertools/starmapDerived.java
--- a/src/org/python/modules/itertools/starmapDerived.java
+++ b/src/org/python/modules/itertools/starmapDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/itertools/takewhileDerived.java b/src/org/python/modules/itertools/takewhileDerived.java
--- a/src/org/python/modules/itertools/takewhileDerived.java
+++ b/src/org/python/modules/itertools/takewhileDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/random/PyRandomDerived.java b/src/org/python/modules/random/PyRandomDerived.java
--- a/src/org/python/modules/random/PyRandomDerived.java
+++ b/src/org/python/modules/random/PyRandomDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/org/python/modules/zipimport/zipimporterDerived.java b/src/org/python/modules/zipimport/zipimporterDerived.java
--- a/src/org/python/modules/zipimport/zipimporterDerived.java
+++ b/src/org/python/modules/zipimport/zipimporterDerived.java
@@ -47,19 +47,19 @@
 
     /* end of TraverseprocDerived implementation */
 
-    private PyObject dict;
+    private AbstractDict dict;
 
-    public PyObject fastGetDict() {
+    public AbstractDict fastGetDict() {
         return dict;
     }
 
-    public PyObject getDict() {
+    public AbstractDict getDict() {
         return dict;
     }
 
     public void setDict(PyObject newDict) {
-        if (newDict instanceof PyStringMap||newDict instanceof PyDictionary) {
-            dict=newDict;
+        if (newDict instanceof AbstractDict) {
+            dict=(AbstractDict)newDict;
             if (dict.__finditem__(PyString.fromInterned("__del__"))!=null&&!JyAttribute.hasAttr(this,JyAttribute.FINALIZE_TRIGGER_ATTR)) {
                 FinalizeTrigger.ensureFinalizer(this);
             }
diff --git a/src/templates/gderived-defs b/src/templates/gderived-defs
--- a/src/templates/gderived-defs
+++ b/src/templates/gderived-defs
@@ -98,19 +98,19 @@
     return super.`unary();
   }
 define: (ClassBodyDeclarations)userdict
-  private PyObject dict;
+  private AbstractDict dict;
 
-  public PyObject fastGetDict() {
+  public AbstractDict fastGetDict() {
     return dict;
   }
 
-  public PyObject getDict() {
+  public AbstractDict getDict() {
     return dict;
   }
 
   public void setDict(PyObject newDict) {
-    if (newDict instanceof PyStringMap || newDict instanceof PyDictionary ) {
-      dict = newDict;
+    if (newDict instanceof AbstractDict) {
+      dict = (AbstractDict) newDict;
       if (dict.__finditem__(PyString.fromInterned("__del__")) != null &&
         !JyAttribute.hasAttr(this, JyAttribute.FINALIZE_TRIGGER_ATTR)) {
         FinalizeTrigger.ensureFinalizer(this);
@@ -123,7 +123,7 @@
 
   public void delDict() {
     // deleting an object's instance dict makes it grow a new one
-    dict = new PyStringMap();  
+    dict = new PyStringMap();
   }
 
 define: (ClassBodyDeclarations)ctr

-- 
Repository URL: https://hg.python.org/jython


More information about the Jython-checkins mailing list