anchor.diff:      with TickerProviderStateMixin {
     /// A tag used for [Hero] widgets to keep the [AppBar] in the same place
     /// across route transitions.
  -  static const String _appBarTag = 'DevTools AppBar';
  -
  -  AnimationController appBarAnimation;
  -  CurvedAnimation appBarCurve;
  +  static const Object _appBarTag = 'DevTools AppBar';
   
     /// The controller for animating between tabs.
     ///
  
positive.code:         onTap: _pushScreenToLocalPageRoute,
          tabs: [for (var screen in widget.tabs) screen.buildTab(context)],
        );
        preferredSize = Tween<Size>(
          begin: const Size.fromHeight(kToolbarHeight),
          end: const Size.fromHeight(kToolbarHeight + 40.0),
        ).evaluate(appBarCurve);
        final animatedAlignment = Tween<Alignment>(
          begin: Alignment.centerRight,
          end: Alignment.bottomLeft,
        ).evaluate(appBarCurve);
  
        final rightAdjust =
            isNarrow ? 0.0 : DevToolsScaffold.actionWidgetSize / 2;
        final animatedRightPadding = Tween<double>(
          begin: math.max(
              0.0,
              DevToolsScaffold.actionWidgetSize * (actions?.length ?? 0.0) -
                  rightAdjust),
          end: 0.0,
        ).evaluate(appBarCurve);
  
        flexibleSpace = Align(
          alignment: animatedAlignment,
          child: Padding(
            padding: EdgeInsets.only(
              top: 4.0,
              right: animatedRightPadding,
            ),
            child: tabBar,
          ),
  
negative.code:       Notifications.of(context),
        _pushSnapshotScreenForImport,
      );
    }
  
    @override
    void dispose() {
      _tabController?.dispose();
      _currentScreen?.dispose();
      _connectVmSubscription?.cancel();
      _showPageSubscription?.cancel();
  
  