anchor.diff:  ///
   ///   @override
   ///   void didPush() {
  -///     // Do something
  +///     // Route was pushed onto navigator and is now topmost route.
   ///   }
   ///
   ///   @override
   ///   void didPopNext() {
  -///     // Do something
  +///     // Covering route was popped off the navigator.
   ///   }
   ///
  +///   @override
  +///   Widget build(BuildContext context) => new Container();
  +///
   /// }
  +///
   /// ```
   class RouteObserver<T extends Route<dynamic>> extends NavigatorObserver {
     final Map<T, RouteAware> _listeners = <T, RouteAware>{};
   
  +  /// Subscribe [routeAware] to be informed about changes to [route].
  +  ///
  +  /// Going forward, [routeAware] will be informed about qualifying changes
  +  /// to [route], e.g. when [route] is covered by another route or when [route]
  +  /// is popped off the [Navigator] stack.
     void subscribe(RouteAware routeAware, T route) {
       assert(routeAware != null);
       assert(route != null);
  
positive.code: /// A [Navigator] observer that notifies [RouteAware]s of changes to the
  /// state of their [Route].
  ///
  /// To make a [StatefulWidget] aware of its current [Route] state, implement
  /// [RouteAware] in its [State] and subscribe it to the [RouteObserver]:
  ///
  /// ```dart
  /// class RouteAwareWidgetState extends State<RouteAwareWidget> with RouteAware {
  ///   @override
  ///   void didChangeDependencies() {
  ///     super.didChangeDependencies();
  
negative.code:   /// Called when a new route has been pushed, and the current route is no
    /// longer visible.
    void didPushNext() { }
  }
  