anchor.diff:      push(new PageRoute(builder));
     }
   
  +  void _insertRoute(Route route) {
  +    _history.insert(_currentPosition, route);
  +    route._onDismissed = _handleRouteDismissed;
  +    route._onRemoveRoute = _handleRemoveRoute;
  +    route.didPush();
  +  }
  +
     void push(Route route) {
       assert(!_debugCurrentlyHaveRoute(route));
       setState(() {
  
positive.code:         assert(!route.modal);
          continue;
        }
        route.ensurePerformance(
          direction: (i <= _currentPosition) ? AnimationDirection.forward : AnimationDirection.reverse
        );
        route._onDismissed = () {
          assert(_history.contains(route));
          if (_history.lastIndexOf(route) <= _currentPosition)
            popRoute(route);
        };
        route._onRemoveRoute = () {
          assert(_history.contains(route));
          setState(() {
            _history.remove(route);
          });
        };
        visibleRoutes.add(
          new KeyedSubtree(
            key: new ObjectKey(route),
  
negative.code:         currentRoute.didPop(null);
          _currentPosition -= 1;
        }
        _currentPosition += 1;
        _insertRoute(route);
      });
    }
  
  