anchor.diff:  
     HtmlElement _mainContent;
     @ViewChild('mainContent')
  -  set mainContent(HtmlElement mainContent) => _mainContent = mainContent;
  +  set mainContent(HtmlElement mainContent) {
  +    _mainContent = mainContent;
  +    if (_mainContent == null) return;
  +    if (_pendingExpandedPanelHeightReads.isNotEmpty) {
  +      var height = _readMainContentHeight();
  +      for (var completer in _pendingExpandedPanelHeightReads) {
  +        completer.complete(height);
  +      }
  +      _pendingExpandedPanelHeightReads.clear();
  +    }
  +  }
   
     HtmlElement _headerContent;
     @ViewChild('headerContent')
  
positive.code:     final completeExpandedHeight = Completer<String>();
  
      _domService.scheduleRead(() {
        final contentHeight = _mainContent.scrollHeight;
        var expandedPanelHeight = '';
  
        final mainPanelStyle = _mainPanel.getComputedStyle();
        // Do our best to make sure that onTransitionEnd will fire later.
        final hasHeightTransition =
            contentHeight > 0 && mainPanelStyle.transition.contains('height');
  
        if (hasHeightTransition) {
          // If the content-wrapper has a top margin, it is not reflected in the
          // scroll height.
          final topMargin = _contentWrapper.getComputedStyle().marginTop;
          expandedPanelHeight = 'calc(${contentHeight}px + ${topMargin})';
        }
        completeExpandedHeight.complete(expandedPanelHeight);
      });
  
      return completeExpandedHeight.future;
    }
  
    /// Reads the DOM state to calculate the height of the header in its
  
negative.code:   final _disposer = Disposer.oneShot();
    final _defaultExpandIcon = 'expand_less';
    final bool shouldExpandOnLeft;
    final _pendingExpandedPanelHeightReads = <Completer<String>>[];
  
    bool initialized = false;
  
  