anchor.diff:    ],
     directives: const [ChildConsumingEventBus],
     template: '<child-consuming-event-bus></child-consuming-event-bus>',
  -  // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
  -  visibility: Visibility.all,
   )
   class ParentProvidingEventBus {
     EventBus bus;
     EventBus grandParentBus;
   
  +  @ViewChild(ChildConsumingEventBus)
  +  ChildConsumingEventBus child;
  +
     ParentProvidingEventBus(this.bus, @SkipSelf() this.grandParentBus);
   }
   
   @Directive(
     selector: 'child-consuming-event-bus',
  -  // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
  -  visibility: Visibility.all,
   )
   class ChildConsumingEventBus {
     EventBus bus;
  
positive.code:   test('should instantiate bindings lazily', () async {
      final testBed = new NgTestBed<LazyBindingsComponent>();
      final testFixture = await testBed.create();
      final debugNode = getDebugNode(testFixture.rootElement.children.first);
      final providing = debugNode.getLocal('providing');
      expect(providing.created, false);
      await testFixture.update((component) => component.visible = true);
      expect(providing.created, true);
  
negative.code: </directive-consuming-injectable>''',
    directives: const [DirectiveConsumingInjectable],
    viewProviders: const [InjectableService],
  )
  class ProvidesInjectableInViewComponent {
    @ViewChild('consumer')
    DirectiveConsumingInjectable consumer;
  }
  
  @Component(
    selector: 'directive-containing-directive-consuming-an-injectable',
  