anchor.diff:    }
   
     /// Specify the child's origin relative to this origin.
  +  ///
  +  /// Call this from your [performLayout] function to position each
  +  /// child. If you do not call this for a child, its position will
  +  /// remain unchanged. Children initially have their position set to
  +  /// (0,0), i.e. the top left of the [RenderCustomMultiChildLayoutBox].
     void positionChild(Object childId, Offset offset) {
       final RenderBox child = _idToChild[childId];
       assert(() {
  
positive.code:     }
    }
  
    /// Override this method to return true when the children need to be laid out.
    bool shouldRelayout(MultiChildLayoutDelegate oldDelegate);
  
    /// Layout and position all children given this widget's size and the specified
    /// constraints. This method must apply layoutChild() to each child. It should
    /// specify the final position of each child with positionChild().
    void performLayout(Size size, BoxConstraints constraints);
  
    String toString() => '$runtimeType';
  }
  
  
negative.code:   }
  
    void _callPerformLayout(Size size, BoxConstraints constraints, RenderBox firstChild) {
      // A particular layout delegate could be called reentrantly, e.g. if it used
      // by both a parent and a child. So, we must restore the _idToChild map when
      // we return.
      final Map<Object, RenderBox> previousIdToChild = _idToChild;
  
      Set<RenderBox> debugPreviousChildrenNeedingLayout;
  