anchor.diff:     * value is null which then determines the behavior based on
      * [History.supportsState].
      */
  -  Router({bool useFragment, Window window}) {
  -    _window = (window == null) ? html.window : window;
  -    _useFragment = (useFragment == null)
  -        ? !html.History.supportsState
  -        : useFragment;
  -  }
  +  Router({bool useFragment, Window windowImpl})
  +      : useFragment = (useFragment == null)
  +            ? !History.supportsState
  +            : useFragment,
  +        _window = (windowImpl == null) ? window : windowImpl;
   
     void addRoute({String name, Pattern path, bool defaultRoute: false,
         RouteHandler enter, RouteHandler leave, mount}) {
  
positive.code: library route.client;
  
  import 'dart:async';
  import 'dart:html' as html;
  import 'package:logging/logging.dart';
  import 'url_pattern.dart';
  export 'url_pattern.dart';
  
negative.code: 
    void _go(String path, String title) {
      title = (title == null) ? '' : title;
      if (useFragment) {
        _window.location.assign('#$path');
        (_window.document as HtmlDocument).title = title;
      } else {
        _window.history.pushState(null, title, path);
      }
  