anchor.diff:      assert(() { _debugLifecycleState = _ElementLifecycle.active; return true; });
     }
   
  -  /// Called when an Element receives a new configuration widget.
  +  /// Change the widget used to configure this element.
  +  ///
  +  /// The framework calls this function when the parent wishes to use a
  +  /// different widget to configure this element. The new widget is guaranteed
  +  /// to have the same [runtimeType] as the old widget.
  +  ///
  +  /// This function is called only during the "active" lifecycle state.
     @mustCallSuper
     void update(Widget newWidget) {
       assert(_debugLifecycleState == _ElementLifecycle.active);
  
positive.code:     return '$name(${data.join("; ")})';
    }
  
    @protected
    @mustCallSuper
    void debugFillDescription(List<String> description) {
  
negative.code:     assert(_debugLifecycleState == _ElementLifecycle.inactive);
    }
  
    /// Transition from the "inactive" to the "defunct" lifecycle state.
    ///
    /// Called when the framework determines that an inactive element will never
    /// be reactivated. At the end of each animation frame, the framework calls
    /// [unmount] on any remaining inactive elements, preventing inactive elements
    /// from remaining inactive for longer than a single animation frame.
    ///
    /// After this function is called, the element will not be incorporated into
    /// the tree again.
    ///
    /// See the lifecycle documentation for [Element] for additional information.
    @mustCallSuper
    void unmount() {
      assert(_debugLifecycleState == _ElementLifecycle.inactive);
  