anchor.diff:  
     @override
     Future type(String keys, {bool sync: true}) => loader.executeSynced(() async {
  -        await focus(sync: false);
  -        await _fireKeyPressEvents(node, keys);
  -        if (node is InputElement || node is TextAreaElement) {
  -          // suppress warning by hiding field
  -          var node = this.node;
  -          var value = node.value + keys;
  -          node.value = '';
  -          await _microtask(() =>
  -              node.dispatchEvent(new TextEvent('textInput', data: value)));
  -        }
  -        return blur(sync: false);
  -      }, sync);
  +    await focus(sync: false);
  +    await _fireKeyPressEvents(node, keys);
  +    if (node is InputElement || node is TextAreaElement) {
  +      // suppress warning by hiding field
  +      var node = this.node;
  +      var value = node.value + keys;
  +      node.value = '';
  +      await _microtask(
  +          () => node.dispatchEvent(new TextEvent('textInput', data: value)));
  +    }
  +    return blur(sync: false);
  +  }, sync);
   
     @override
     Future clear({bool sync: true}) => loader.executeSynced(() async {
  -        if (node is InputElement || node is TextAreaElement) {
  -          var node = this.node;
  -          await focus(sync: false);
  -          node.value = '';
  -          await _microtask(
  -              () => node.dispatchEvent(new TextEvent('textInput', data: '')));
  -          return blur(sync: false);
  -        } else {
  -          throw new PageLoaderException('$this does not support clear.');
  -        }
  -      }, sync);
  +    if (node is InputElement || node is TextAreaElement) {
  +      var node = this.node;
  +      await focus(sync: false);
  +      node.value = '';
  +      await _microtask(
  +          () => node.dispatchEvent(new TextEvent('textInput', data: '')));
  +      return blur(sync: false);
  +    } else {
  +      throw new PageLoaderException('$this does not support clear.');
  +    }
  +  }, sync);
   
     @override
     Future blur({bool sync: true}) =>
  
positive.code:   @override
    _HtmlMouse get mouse => _mouse;
  
    HtmlPageLoader(Node globalContext,
        {bool useShadowDom: true,
        SyncedExecutionFn executeSyncedFn: noOpExecuteSyncedFn})
        : super(useShadowDom: useShadowDom, executeSyncedFn: executeSyncedFn) {
      this._globalContext = new HtmlPageLoaderElement(globalContext, this);
  
negative.code: 
    @override
    Future type(String keys, {bool sync: true}) => loader.executeSynced(() async {
      // TODO(DrMarcII) consider whether this should be sent to
      // document.activeElement to more closely match WebDriver behavior.
      await _microtask(() => document.body.focus());
      await _fireKeyPressEvents(document.body, keys);
      return _microtask(() => document.body.blur());
    }, sync);
  }
  
  class _ElementAttributes extends PageLoaderAttributes {
  