anchor.diff:    bool _debugCurrentlyHaveRoute(Route route) {
       int index = _history.indexOf(route);
       return index >= 0 && index <= _currentPosition;
  +  }
  +
  +  void _handleRouteDismissed(Route route) {
  +    assert(_history.contains(route));
  +    if (_history.lastIndexOf(route) <= _currentPosition)
  +      popRoute(route);
  +  }
  +
  +  void _handleRemoveRoute(Route route) {
  +    assert(_history.contains(route));
  +    setState(() {
  +      _history.remove(route);
  +    });
     }
   
     Widget build(BuildContext context) {
  
positive.code:   bool get isActuallyOpaque => (performance == null || _performance.isCompleted) && opaque;
  
    Widget build(NavigatorState navigator, PerformanceView nextRoutePerformance);
    void didPop([dynamic result]) {
      if (performance == null && _onRemoveRoute != null)
        _onRemoveRoute();
    }
  
    String toString() => '$runtimeType()';
  
negative.code:         assert(!route.modal);
          continue;
        }
        visibleRoutes.add(
          new KeyedSubtree(
            key: new ObjectKey(route),
  