anchor.diff:      return _leaveCurrentRoute(startingFrom, event);
     }
   
  -  Iterable<Route> _matchingTreePath(String path, Route baseRoute) {
  -    List<Route> treePath = <Route>[];
  +  Iterable<_Match> _matchingTreePath(String path, Route baseRoute) {
  +    List<_Match> treePath = <_Match>[];
       Route matchedRoute;
       do {
         matchedRoute = null;
  
positive.code:     });
    }
  
    Future<bool> _leaveOldRoutes(Route startingFrom, Iterable<Route> treePath) {
      if (treePath.isEmpty) {
        return new Future.value(true);
      }
  
negative.code:         }
        }
        if (matchedRoute != null) {
          var match = _getMatch(matchedRoute, path);
          treePath.add(new _Match(matchedRoute, match));
          baseRoute = matchedRoute;
          path = match.tail;
        }
  