docs: function advanceActivatedRoute(route) {
      if (route.snapshot) {
          var currentSnapshot = route.snapshot;
          var nextSnapshot = route._futureSnapshot;
          route.snapshot = nextSnapshot;
          if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {
              route.queryParams.next(nextSnapshot.queryParams);
          }
          if (currentSnapshot.fragment !== nextSnapshot.fragment) {
              route.fragment.next(nextSnapshot.fragment);
          }
          if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {
              route.params.next(nextSnapshot.params);
          }
          if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {
              route.url.next(nextSnapshot.url);
          }
          if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {
              route.data.next(nextSnapshot.data);
          }
      }
      else {
          route.snapshot = route._futureSnapshot;
          // this is for resolved data
          route.data.next(route._futureSnapshot.data);
      }
  }