anchor.diff:    final _disposer = Disposer.oneShot();
     final _defaultExpandIcon = 'expand_less';
     final bool shouldExpandOnLeft;
  +  final _pendingExpandedPanelHeightReads = <Completer<String>>[];
   
     bool initialized = false;
   
  
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: 
    HtmlElement _mainContent;
    @ViewChild('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')
  