anchor.diff:        // maintainState = true, then the hero's final dimensions can be measured
         // immediately because their page's layout is still valid.
         if (isUserGestureTransition && flightType == HeroFlightDirection.pop && to.maintainState) {
  -        _startHeroTransition(from, to, animation, flightType, isUserGestureTransition);
  +        _startHeroTransition(from, to, flightType, isUserGestureTransition);
         } else {
           // Otherwise, delay measuring until the end of the next frame to allow
           // the 'to' route to build and layout.
  
positive.code:   void _startHeroTransition(
      PageRoute<dynamic> from,
      PageRoute<dynamic> to,
      Animation<double> animation,
      HeroFlightDirection flightType,
      bool isUserGestureTransition,
    ) {
  
negative.code:     if (toRoute != fromRoute && toRoute is PageRoute<dynamic> && fromRoute is PageRoute<dynamic>) {
        final PageRoute<dynamic> from = fromRoute;
        final PageRoute<dynamic> to = toRoute;
  
        // A user gesture may have already completed the pop, or we might be the initial route
        switch (flightType) {
          case HeroFlightDirection.pop:
            if (from.animation!.value == 0.0) {
              return;
            }
            break;
          case HeroFlightDirection.push:
            if (to.animation!.value == 1.0) {
              return;
            }
            break;
  