anchor.diff:    directives: [Child, NgIf],
   )
   class TestEmbeddedViewChildren {
  +  TestEmbeddedViewChildren(this._changeDetectorRef, this._ngZone);
  +
  +  final ChangeDetectorRef _changeDetectorRef;
  +  final NgZone _ngZone;
  +
     var isSecondChildVisible = false;
     var areRemainingChildrenVisible = false;
   
  +  List<Child> _children = [];
  +  var _value = '';
  +
     @ViewChildren(Child)
  -  List<Child> children;
  -
  -  void update(String value) {
  -    for (final child in children) {
  -      child.value = value;
  -      // TODO: _changeDetectorRef.markChildForCheck(child);
  -    }
  -  }
  -}
  +  set children(List<Child> value) {
  +    _children = value;
  +    _ngZone.runAfterChangesObserved(() => update(_value));
  +  }
  +
  +  void update(String value) {
  +    _value = value;
  +    for (final child in _children) {
  +      child.value = value;
  +      // TODO: _changeDetectorRef.markChildForCheck(child);
  +    }
  +  }
  +}
  
positive.code:   providers: [
      ExistingProvider(HasValue, ChildWithExistingProvider),
    ],
  )
  class ChildWithExistingProvider implements HasValue {
    var value = '';
  
negative.code:   template: '<ng-content></ng-content>',
  )
  class HasContentChildren {
    HasContentChildren(this._changeDetectorRef, this._ngZone);
  
    // ignore: unused_field
    final ChangeDetectorRef _changeDetectorRef;
    final NgZone _ngZone;
  
    List<Child> _children = [];
    var _value = '';
  
    @ContentChildren(Child)
    set children(List<Child> value) {
      _children = value;
      _ngZone.runAfterChangesObserved(() => update(_value));
    }
  
    void update(String value) {
      _value = value;
      for (final child in _children) {
        child.value = value;
        // TODO: _changeDetectorRef.markChildForCheck(child);
      }
  