| Index: pkg/smoke/lib/mirrors.dart
 | 
| diff --git a/pkg/smoke/lib/mirrors.dart b/pkg/smoke/lib/mirrors.dart
 | 
| index d30baa2ef90df4df998d6cbf1fedc2faf314a9aa..c49c536adcffe6dd6bb2ce6ee66739088261aced 100644
 | 
| --- a/pkg/smoke/lib/mirrors.dart
 | 
| +++ b/pkg/smoke/lib/mirrors.dart
 | 
| @@ -218,7 +218,18 @@ Symbol _setterName(Symbol getter) =>
 | 
|  
 | 
|  ClassMirror _safeSuperclass(ClassMirror type) {
 | 
|    try {
 | 
| -    return type.superclass;
 | 
| +    var t = type.superclass;
 | 
| +    // TODO(sigmund): workaround for darbug.com/17779.
 | 
| +    // Interceptor is leaked by dart2js. It has the same methods as Object
 | 
| +    // (including noSuchMethod), and our code above assumes that it doesn't
 | 
| +    // exist. Most queries exclude Object, so they should exclude Interceptor
 | 
| +    // too. We don't check for t.simpleName == #Interceptor because depending on
 | 
| +    // dart2js optimizations it may be #Interceptor or #num/Interceptor.
 | 
| +    // Checking for a private library seems to reliably filter this out.
 | 
| +    if (t != null && t.owner != null && t.owner.isPrivate) {
 | 
| +      t = _objectType;
 | 
| +    }
 | 
| +    return t;
 | 
|    } on UnsupportedError catch (e) {
 | 
|      // Note: dart2js throws UnsupportedError when the type is not reflectable.
 | 
|      return _objectType;
 | 
| 
 |