anchor.diff:    final MimicableHandle original;
   
     Widget build(BuildContext context) {
  -    if (original != null && original._state._beingMimicked)
  +    if (original != null && original._state.mounted && original._state._placeholderSize != null)
         return original._state.config.child;
       return new Container();
     }
  
positive.code: 
  /// An overlay entry that is mimicking another widget.
  class MimicOverlayEntry {
    MimicOverlayEntry._(this._key) {
      _overlayEntry = new OverlayEntry(builder: _build);
      _initialGlobalBounds = _key.globalBounds;
    }
  
    Rect _initialGlobalBounds;
  
    MimicableHandle _key;
    OverlayEntry _overlayEntry;
  
    // Animation state
  
negative.code: ///
  /// Exposes an API for starting and stopping mimicking.
  class MimicableState extends State<Mimicable> {
    Size _placeholderSize;
  
    Rect get _globalBounds {
      assert(mounted);
      RenderBox box = context.findRenderObject();
      assert(box != null);
      assert(box.hasSize);
      assert(!box.needsLayout);
      // TODO(abarth): The bounds will be wrong if there's a scale or rotation transform involved
      return box.localToGlobal(Point.origin) & box.size;
    }
  
    /// Start the mimicking process.
    ///
    /// The child of this object will no longer be built at this
    /// location in the tree. Instead, this widget will build a
    /// transparent placeholder with the same dimensions as the widget
    /// had when the mimicking process started.
    ///
    /// If you use startMimic(), it is your responsibility to do
    /// something with the returned [MimicableHandle]; typically,
    /// passing it to a [Mimic] widget. To mimic the child in the
    /// [Overlay], consider using [liftToOverlay()] instead.
    MimicableHandle startMimic() {
      assert(_placeholderSize == null);
      RenderBox box = context.findRenderObject();
      assert(box != null);
      assert(box.hasSize);
      assert(!box.needsLayout);
      setState(() {
        _placeholderSize = box.size;
      });
      return new MimicableHandle._(this);
    }
  
    /// Start the mimicking process and mimic this object in the
    /// enclosing [Overlay].
    ///
    /// The child of this object will no longer be built at this
    /// location in the tree. Instead, (1) this widget will build a
    /// transparent placeholder with the same dimensions as the widget
    /// had when the mimicking process started and (2) the child will be
    /// placed in the enclosing overlay.
    MimicOverlayEntry liftToOverlay() {
      OverlayState overlay = Overlay.of(context);
      assert(overlay != null); // You need an overlay to lift into.
  