anchor.diff:      
       window.requestAnimationFrame(
           (_) {
  -          _currentPeformance = perf - getPerformanceNow();
  +          _currentPeformance = getPerformanceNow() - perf;
             
             _animationFrameCompleter.complete();
  +          
  +          _animationFrameCompleter = null;
           }
       );
       
  -    final Future result = _animationFrameCompleter.future;
  -    
  -    result.whenComplete(() => _animationFrameCompleter = null);
  -    
  -    return result;
  +    _animationFrameFuture = _animationFrameCompleter.future;
  +    
  +    return _animationFrameFuture;
     }
     
     //---------------------------------
  
positive.code:   //---------------------------------
    
    Completer _invocationFrameCompleter;
    
    Future get invocationFrame {
      if (_invocationFrameCompleter != null) return _invocationFrameCompleter.future;
      
      _invocationFrameCompleter = new Completer();
      
      new Timer(
        new Duration(milliseconds: (_currentPeformance < 40.0) ? 40 : (_currentPeformance > 120.0) ? 120 : _currentPeformance.toInt()),
        _invocationFrameCompleter.complete
      );
      
      final Future result = _invocationFrameCompleter.future;
      
      result.whenComplete(() => _invocationFrameCompleter = null);
      
      return result;
    }
    
    //---------------------------------
  
negative.code:             invocationFrame,
              animationFrame
          ]
      ).whenComplete(
        () {
          _layoutFrameCompleter.complete();
          
          _layoutFrameCompleter = null;
        }
      );
      
      _layoutFuture = _layoutFrameCompleter.future;
      
      return _layoutFuture;
    }
    
    //---------------------------------
  