anchor.diff:    test('should support bindings', () async {
       final testBed = new NgTestBed<ProvideConsumeInjectableComponent>();
       final testFixture = await testBed.create();
  -    final debugNode = getDebugNode(testFixture.rootElement.children.first);
  -    final consumer = debugNode.getLocal('consumer');
  +    final consumer = testFixture.assertOnlyInstance.consumer;
       expect(consumer.injectable, new isInstanceOf<InjectableService>());
     });
   
     test('should support viewProviders', () async {
       final testBed = new NgTestBed<ProvidesInjectableInViewComponent>();
       final testFixture = await testBed.create();
  -    final debugNode = getDebugNode(testFixture.rootElement.children.first);
  -    final consumer = debugNode.getLocal('consumer');
  +    final consumer = testFixture.assertOnlyInstance.consumer;
       expect(consumer.injectable, new isInstanceOf<InjectableService>());
     });
   
     test('should support unbounded lookup', () async {
       final testBed = new NgTestBed<ProvidesInjectableUnboundedComponent>();
       final testFixture = await testBed.create();
  -    final debugNode = getDebugNode(testFixture.rootElement.children.first);
  -    final dir = debugNode.getLocal('dir');
  +    final dir = testFixture.assertOnlyInstance.container;
       expect(dir.directive.injectable, new isInstanceOf<InjectableService>());
     });
   
     test('should support the event-bus scenario', () async {
       final testBed = new NgTestBed<EventBusComponent>();
       final testFixture = await testBed.create();
  -    final grandParentElement = getDebugNode(testFixture.rootElement
  -        .querySelector('grand-parent-providing-event-bus'));
  -    final parentElement = getDebugNode(
  -        testFixture.rootElement.querySelector('parent-providing-event-bus'));
  -    final childElement = getDebugNode(
  -        testFixture.rootElement.querySelector('child-consuming-event-bus'));
  -    final grandParent = grandParentElement.inject(GrandParentProvidingEventBus);
  -    final parent = parentElement.inject(ParentProvidingEventBus);
  -    final child = childElement.inject(ChildConsumingEventBus);
  +    final grandParent = testFixture.assertOnlyInstance.grandParent;
  +    final parent = testFixture.assertOnlyInstance.parent;
  +    final child = parent.child;
       expect(grandParent.bus.name, 'grandparent');
       expect(parent.bus.name, 'parent');
       expect(parent.grandParentBus, grandParent.bus);
  
positive.code:     DirectiveProvidingInjectable,
      DirectiveContainingDirectiveConsumingAnInjectable,
    ],
    // TODO(b/71710685): Change to `Visibility.local` to reduce code size.
    visibility: Visibility.all,
  )
  class ProvidesInjectableUnboundedComponent {}
  
  class EventBus {
    final EventBus parentEventBus;
  
negative.code:   ],
    directives: const [ChildConsumingEventBus],
    template: '<child-consuming-event-bus></child-consuming-event-bus>',
  )
  class ParentProvidingEventBus {
    EventBus bus;
    EventBus grandParentBus;
  
    @ViewChild(ChildConsumingEventBus)
    ChildConsumingEventBus child;
  
    ParentProvidingEventBus(this.bus, @SkipSelf() this.grandParentBus);
  }
  
  @Directive(
    selector: 'child-consuming-event-bus',
  )
  class ChildConsumingEventBus {
    EventBus bus;
  