anchor.diff:  
     /// Initialize the router: core-animated-pages and listen for change events.
     void initialize() {
  -    if (isInitialized) {
  +    if (_isInitialized) {
         return;
       }
  -    isInitialized = true;
  +    _isInitialized = true;
  +    _previousUrl = new RouteUri.parse(window.location.href, mode);
   
       // <app-router core-animated-pages transitions="hero-transition cross-fade">
       if (core_animated_pages) {
  
positive.code:   // /article/1), then we have to simply replace the route's content instead of animating a transition.
    if (!router.core_animated_pages ||
        eventDetail['route'] == eventDetail['oldRoute']) {
      removeRouteContent(router.previousRoute);
    }
  
    // add the new content
    router.activeRoute.append(element);
  
    // animate the transition if core-animated-pages are being used
    if (router.core_animated_pages) {
      router.coreAnimatedPages.selected = router.activeRoute.path;
  
      // we already wired up transitionAnimationEnd() in init()
  
      // use to check if the previous route has finished animating before being removed
      if (router.previousRoute != null) {
        router.previousRoute.transitionAnimationInProgress = true;
      }
    }
  
  
negative.code:   /// listen with document.querySelector('app-router').addEventListener(type, function(event) {
    ///   event.detail, event.preventDefault()
    /// })
    bool fireEvent(String type, Object detail, Node node) {
      CustomEvent event = new CustomEvent(type,
          detail: detail, canBubble: false, cancelable: true);
      return node.dispatchEvent(event);
    }
  }
  
  /*---------------------------------------------------------------------------*/
  
  /// Activate the route
  void activateRoute(WebRouter router, WebRoute route, RouteUri url) {
  