anchor.diff:    sb.write("\n");
   }
   
  -// TODO(jacobr): make this check more robust.
  -bool _isExternal(mirrors.Mirror mirror) {
  -  /*
  -  var source = mirror.source;
  -  return source != null && source.startsWith("external ");
  -  */
  -  return mirror.isExternal;
  +bool _isExternal(mirrors.MethodMirror mirror) {
  +  // This try-catch block is a workaround for BUG:24834.
  +  try {
  +    return mirror.isExternal;
  +  } catch (e) { }
  +  return false;
   }
   
   List<String> _generateExternalMethods() {
  
positive.code:   return sb.toString();
  }
  
  
  String _accessJsPathSetter(String path) {
    var parts = path.split(".");
    return "${_JS_LIBRARY_PREFIX}.JsNative.setProperty(${_accessJsPath(parts.getRange(0, parts.length - 1).join('.'))
        }, '{parts.end}', v)";
  }
  
  @Deprecated("Internal Use Only")
  
negative.code: final _JS_LIBRARY_PREFIX = "js_library";
  final _UNDEFINED_VAR = "_UNDEFINED_JS_CONST";
  
  String _accessJsPath(String path) => _accessJsPathHelper(path.split("."));
  
  String _accessJsPathHelper(Iterable<String> parts) {
    var sb = new StringBuffer();
    sb
      ..write('${_JS_LIBRARY_PREFIX}.JsNative.getProperty(' * parts.length)
  