anchor.diff:  @Directive(
     selector: '[my-dir]',
     exportAs: 'myDir',
  -  // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
  -  visibility: Visibility.all,
   )
   class MyDir {
     @Input('elProp')
  
positive.code:       () async {
      final testBed = new NgTestBed<OverrideNativePropertyComponent>();
      final testFixture = await testBed.create();
      final div = getDebugNode(testFixture.rootElement.querySelector('div'));
      expect(div.inject(IdDir).id, 'some_id');
      await testFixture.update((component) => component.value = 'other_id');
      expect(div.inject(IdDir).id, 'other_id');
    });
  
    test('should support directives whose selector matches event binding',
        () async {
      final testBed = new NgTestBed<EventDirectiveComponent>();
      final testFixture = await testBed.create();
      final p = getDebugNode(testFixture.rootElement.querySelector('p'));
      expect(p.inject(EventDir), isNotNull);
    });
  
    test('should read directives metadata from their binding token', () async {
      final testBed = new NgTestBed<RetrievesDependencyFromHostComponent>();
      await testBed.create(); // Directive constructor tests expected condition.
    });
  
    test('should consume pipe binding', () async {
      final testBed = new NgTestBed<PipedDirectiveInputComponent>();
      final testFixture = await testBed.create();
      final div = getDebugNode(testFixture.rootElement.querySelector('div'));
      expect(div.getLocal('dir').dirProp, 'aa');
    });
  
    test('should not bind attribute matcher when generating host view', () async {
  
negative.code:     PrivateImpl,
      NeedsPublicApi,
    ],
  )
  class RetrievesDependencyFromHostComponent {
    @ViewChild(NeedsPublicApi)
    NeedsPublicApi needsPublicApi;
  }
  
  @Pipe('double')
  class DoublePipe implements PipeTransform {
  