anchor.diff:      this.children,
       this.overlay,
       this.duration: const Duration(milliseconds: 200),
  -    this.curve: linear
  +    this.curve: linear,
  +    this.targetRect
     }) : super(key: key);
   
     List<Widget> children;
     GlobalKey overlay;
     Duration duration;
     Curve curve;
  +  Rect targetRect;
   
     void syncFields(MimicOverlay source) {
       children = source.children;
  
positive.code:   Widget build() {
      List<Widget> layers = new List<Widget>();
  
      if (children != null)
        layers.addAll(children);
  
      if (_activeOverlay != null) {
        layers.add(
  
negative.code:     duration = source.duration;
      _expandPerformance.duration = duration;
  
      targetRect = source.targetRect;
      _mimicBounds.end = targetRect;
      if (_expandPerformance.isCompleted) {
        _mimicBounds.value = _mimicBounds.end;
      }
  
      curve = source.curve;
      _mimicBounds.curve = curve;
  
      if (overlay != source.overlay) {
        overlay = source.overlay;
        if (_expandPerformance.isDismissed) {
          _activeOverlay = overlay;
        } else {
          _expandPerformance.reverse();
        }
      }
    }
  
    void initState() {
      _mimicBounds = new AnimatedRect(new Rect(), curve: curve);
      _mimicBounds.end = targetRect;
      _expandPerformance = new AnimationPerformance()
        ..duration = duration
        ..addVariable(_mimicBounds)
  