anchor.diff:  ///
   /// Useful if, for instance, you're trying to align multiple descendants.
   ///
  +/// To listen for notifications in a subtree, use a
  +/// [NotificationListener<LayoutChangedNotification>].
  +///
  +/// 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].
  +///
   /// In the widgets library, only the [SizeChangedLayoutNotifier] class and
   /// [Scrollable] classes dispatch this notification (specifically, they dispatch
   /// [SizeChangedLayoutNotification]s and [ScrollNotification]s respectively).
  
positive.code: 
    /// Start bubbling this notification at the given build context.
    ///
    /// To receive notifications, use a [NotificationListener].
    void dispatch(BuildContext target) {
      assert(target != null); // Only call dispatch if the widget's State is still mounted.
      target.visitAncestorElements(visitAncestor);
  
negative.code: }
  
  /// A widget that listens for [Notification]s bubbling up the tree.
  ///
  /// Notifications will trigger the [onNotification] callback only if their
  /// [runtimeType] is a subtype of `T`.
  ///
  /// To dispatch notifications, use the [Notification.dispatch] method.
  class NotificationListener<T extends Notification> extends StatelessWidget {
  