anchor.diff:  typedef dynamic _GetPropertyFn(jsObj, String key);
   typedef dynamic _SetPropertyFn(jsObj, String key, value);
   
  -// Necessary because `external operator[]` isn't allowed on JS interop classes https://github.com/dart-lang/sdk/issues/25053
  +/// Returns the property at the given [_GetPropertyFn.key] on the
  +/// specified JavaScript object [_GetPropertyFn.jsObj]
  +///
  +/// Necessary because `external operator[]` isn't allowed on JS interop classes
  +/// (see: https://github.com/dart-lang/sdk/issues/25053).
   final _GetPropertyFn getProperty = (() {
     _eval(r'''
       function _getProperty(obj, key) {
  
positive.code:   return _getProperty;
  })();
  
  // Necessary because `external operator[]=` isn't allowed on JS interop classes https://github.com/dart-lang/sdk/issues/25053
  final _SetPropertyFn setProperty = (() {
    _eval(r'''
      function _setProperty(obj, key, value) {
  
negative.code: })();
  
  
  /// A interop class for an anonymous JavaScript object, with no properties.
  ///
  /// For use when dealing with dynamic properties via [getProperty]/[setProperty].
  @JS()
  @anonymous
  class EmptyObject {
    external factory EmptyObject();
  }
  
  /// Returns [map] converted to a JavaScript object, similar to
  /// `new JsObject.jsify` in `dart:js`.
  ///
  /// Recursively converts nested [Map]s, and wraps [Function]s with [allowInterop].
  EmptyObject jsify(Map map) {
    var jsMap = new EmptyObject();
  
  