anchor.diff:  typedef bool NotificationListenerCallback<T extends Notification>(T notification);
   
   /// A notification that can bubble up the widget tree.
  +///
  +/// You can determine the type of a notification using the `is` operator to
  +/// check the [runtimeType] of the notification.
  +///
  +/// To listen for notifications in a subtree, use a [NotificationListener].
  +///
  +/// To send a notification, call [dispatch] on the notification you wish to
  +/// send. The notification will be delivered to any [NotificationListener]
  +/// widgets with the appropriate type parameters that are ancestors of the given
  +/// [BuildContext].
   abstract class Notification {
     /// Applied to each ancestor of the [dispatch] target.
     ///
  
positive.code: }
  
  /// A widget that listens for [Notification]s bubbling up the tree.
  ///
  /// To dispatch notifications, use the [Notification.dispatch] method.
  class NotificationListener<T extends Notification> extends StatelessWidget {
  
negative.code: 
    /// Start bubbling this notification at the given build context.
    ///
    /// The notification will be delivered to any [NotificationListener] widgets
    /// with the appropriate type parameters that are ancestors of the given
    /// [BuildContext].
    void dispatch(BuildContext target) {
      assert(target != null); // Only call dispatch if the widget's State is still mounted.
      target.visitAncestorElements(visitAncestor);
  