anchor.diff:      });
     }
     
  -  Future _remove() {
  -    if (_snackbar == null) return new Future.value();
  -    var element = _snackbar.snackbar.template;
  -    return _animateOut(element).then((_) {
  -      element.remove();
  -    });
  -  }
  -  
     Future _append() {
       if (_snackbar == null) return new Future.value();
       var element = _snackbar.snackbar.template;
       _container.append(element);
  -    return _animateIn(element);
  -  }
  -  
  -  Future _animateIn(element) {
  +    
       var promise = new Completer();
       var animation = new JsObject.fromBrowserObject(element).callMethod('animate', [
         new JsObject.jsify([
  
positive.code:       })
      ]);
      animation['onfinish'] = (_) {
        promise.complete();
      };
      return promise.future;
  
negative.code:     return promise.future;
    }
    
    Future _remove() {
      if (_snackbar == null) return new Future.value();
      var element = _snackbar.snackbar.template;
      
      var promise = new Completer();
      var animation = new JsObject.fromBrowserObject(element).callMethod('animate', [
        new JsObject.jsify([
  