Geoffrey Gerrietts discovered that a KeyError was caught that probably
should have been a NameError.  I'm checking in a change that catches
both, just to be sure -- I can't be bothered trying to understand this
code any more. :-)
diff --git a/Demo/metaclasses/Meta.py b/Demo/metaclasses/Meta.py
index 771205c..39cbef6 100644
--- a/Demo/metaclasses/Meta.py
+++ b/Demo/metaclasses/Meta.py
@@ -30,7 +30,7 @@
         except AttributeError:
             try:
                 ga = self.__formalclass__.__getattr__('__usergetattr__')
-            except KeyError:
+            except (KeyError, AttributeError):
                 raise AttributeError, name
             return ga(self, name)
         if type(raw) != types.FunctionType: