anchor.diff:  @Directive(
     selector: '[listenernoprevent]',
     host: const {'(click)': 'onEvent(\$event)'},
  -  // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
  -  visibility: Visibility.all,
   )
   class DirectiveListeningDomEventNoPrevent {
     onEvent(Event event) {}
  
positive.code:     DirectiveListeningDomEventNoPrevent,
      DirectiveListeningDomEventPrevent,
    ],
    // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
    visibility: Visibility.all,
  )
  class TestPreventDefaultComponent {}
  
negative.code:   test('should support directive outputs on template elements', () async {
      final testBed = new NgTestBed<TemplateWithEventDirectivesComponent>();
      final testFixture = await testBed.create();
      final component = testFixture.assertOnlyInstance;
      expect(component.msg, isNull);
      expect(component.listener.msg, isNull);
      await testFixture.update((_) => component.emitter.fireEvent('fired!'));
      expect(component.msg, 'fired!');
      expect(component.listener.msg, 'fired!');
    });
  
    test('should support [()] syntax', () async {
      final testBed = new NgTestBed<TwoWayBindingComponent>();
      final testFixture = await testBed.create();
      final component = testFixture.assertOnlyInstance;
      expect(component.directive.control, 'one');
      await testFixture.update((_) => component.directive.triggerChange('two'));
      expect(component.ctxProp, 'two');
      expect(component.directive.control, 'two');
    });
  
    test('should support render events', () async {
      final testBed = new NgTestBed<ElementWithDomEventComponent>();
      final testFixture = await testBed.create();
      final div = testFixture.rootElement.children.first;
      final listener = testFixture.assertOnlyInstance.listener;
      await testFixture.update((_) => div.dispatchEvent(new Event('domEvent')));
      expect(listener.eventTypes, ['domEvent']);
    });
  