@@ -1955,12 +1955,12 @@ internal PythonType(PythonContext context, PythonType[] baseTypes, Type underlyi
                     if (TryLookupSlot(context, x, out dts)) {
                         //??? why check for DTVS?
                         object val;
-                        if (dts.TryGetValue(context, null, this, out val)) {
-                            if (dts is PythonTypeUserDescriptorSlot) {
-                                dict[x] = val;
-                            } else {
-                                dict[x] = dts;
-                            }
+                        if (dts is PythonTypeUserDescriptorSlot) {
+                            dict[x] = ((PythonTypeUserDescriptorSlot) dts).Value;
+                        } else if (dts.TryGetValue(context, null, this, out val)) {
+                            dict[x] = val;
+                        } else {
+                            dict[x] = dts;
                         }
                     }
                 }
