anchor.diff:    String toString() => uri.toString() + " isHashPath: ${isHashPath}";
   
     /// Map represenation of this RouteUri.
  -  Map<String, dynamic> toMap() {
  +  Map<String, Object> toMap() {
       Map<String, dynamic> map = new Map<String, dynamic>();
       map['path'] = this.path;
       map['hash'] = this.hash;
  
positive.code:         // '#/'
          // hash path
          isHashPath = true;
          uri = replacePathAndQuery(uri, uri.fragment);
        } else if (uri.fragment.startsWith('!/')) {
          // '#!/'
          // hashbang path
          isHashPath = true;
          uri = replacePathAndQuery(uri, uri.fragment.substring(1));
        } else if (isHashPath) {
          // still use the hash if mode="hash"
          if (uri.fragment.length == 0) {
            uri = uri.replace(path: '/');
          } else {
            uri = replacePathAndQuery(uri, uri.fragment);
          }
        }
  
  
negative.code:     return map;
    }
  
    /// parseUrl(location, mode) - Augment the native URL() constructor to get info about hash paths
    ///  mode = "auto|hash|pushstate"
    ///
    /// Example:
    ///  parseUrl('http://domain.com/other/path?queryParam3=false#/example/path?queryParam1=true&queryParam2=example%20string#middle', 'auto')
    ///
    /// returns {
    ///   path: '/example/path',
  