anchor.diff:  }
   
   // TODO(gram): If we support more than one on-screen canvas, we will
  -// need to filter dispatched events by the target Node.
  -_dispatchEvent(String event_type, Event e) {
  -  if (!_listeners.containsKey(event_type)) return;
  -  var event_listeners = _listeners[event_type];
  -  for (var i = 0; i < event_listeners.length; i++) {
  -    if (event_listeners[i] != null) {
  -      event_listeners[i](e);
  -    }
  -  }
  -}
  -
  -_dispatchKeyEvent(String type, int keyCode, bool alt, bool ctrl, bool shift) =>
  -    _dispatchEvent(type, new KeyEvent(type, keyCode, alt, ctrl, shift));
  -
  -_dispatchMouseEvent(String type, double x, double y) =>
  -    _dispatchEvent(type, new MouseEvent(type, x.toInt(), y.toInt()));
  +// need to filter dispatched mouse and key events by the target Node
  +// with more granularity; right now we just iterate through DOM nodes
  +// until we find one that handles the event.
  +_dispatchEvent(Event event) {
  +  assert(document.body.nodes.length <= 1);
  +  for (var target in document.body.nodes) {
  +    event.target = target;
  +    if (target.dispatchEvent(event)) {
  +      break;
  +    }
  +  }
  +}
  +
  +_dispatchKeyEvent(String type, int keyCode, bool alt, bool ctrl, bool shift) {
  +  _dispatchEvent(new KeyEvent(type, keyCode, alt, ctrl, shift));
  +}
  +
  +_dispatchMouseEvent(String type, double x, double y) {
  +  _dispatchEvent(new MouseEvent(type, x.toInt(), y.toInt()));
  +}
   
   // These next few are called by vmglue.cc.
   onKeyDown_(int when, int keyCode, bool alt, bool ctrl, bool shift, int repeat)
  
positive.code: void C2DCreateNativeContext(int handle, int width, int height)
      native "C2DCreateNativeContext";
  
  class ElementEvents {
    final List load;
    ElementEvents()
      : load =new List() {
    }
  }
  
  class ImageElement {
    ElementEvents on;
    String _src;
    int _width;
    int _height;
  
negative.code:   }
  }
  
  
  class _EventStreamSubscription<T extends Event> extends StreamSubscription<T> {
    int _pauseCount = 0;
    EventTarget _target;
    final String _eventType;
    var _onData;
  
  