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