anchor.diff:          scrollable,
           moveStep,
           maxIteration: maxScrolls,
  -        duration: duration);
  +        duration: duration,
  +      );
       });
     }
   
  -  /// Repeatedly drags the `view` by `moveStep` until `finder` is visible.
  -  ///
  -  /// Between each operation, wait for `duration` time for settling.
  -  ///
  -  /// Throws a [StateError] if `finder` is not found for maximum `maxIteration`
  -  /// times.
  +  /// Repeatedly drags `view` by `moveStep` until `finder` is visible.
  +  ///
  +  /// Between each drag, advances the clock by `duration`.
  +  ///
  +  /// Throws a [StateError] if `finder` is not found after `maxIteration`
  +  /// drags.
  +  ///
  +  /// See also:
  +  ///
  +  ///  * [scrollUntilVisible], which wraps this method with an API that is more
  +  ///    convenient when dealing with a [Scrollable].
     Future<void> dragUntilVisible(
       Finder finder,
       Finder view,
  
positive.code:   /// Given a widget `W` specified by [finder] and a [Scrollable] widget `S` in
    /// its ancestry tree, this scrolls `S` so as to make `W` visible.
    ///
    /// Usually the `finder` for this method should be labeled
    /// `skipOffstage: false`, so that [Finder] deals with widgets that's out of
    /// the screen correctly.
    ///
    /// This does not work when the `S` is long and `W` far away from the
    /// displayed part does not have a cached element yet. See
    /// https://github.com/flutter/flutter/issues/61458
    ///
    /// Shorthand for `Scrollable.ensureVisible(element(finder))`
    Future<void> ensureVisible(Finder finder) => Scrollable.ensureVisible(element(finder));
  
    /// Repeatedly scrolls a [Scrollable] by `delta` in the
    /// [Scrollable.axisDirection] until `finder` is visible.
    ///
    /// Between each scroll, wait for `duration` time for settling.
    ///
    /// If `scrollable` is `null`, this will find a [Scrollable].
    ///
    /// Throws a [StateError] if `finder` is not found for maximum `maxScrolls`
    /// times.
    ///
    /// This is different from [ensureVisible] in that this allows looking for
    /// `finder` that is not built yet, but the caller must specify the scrollable
    /// that will build child specified by `finder` when there are multiple
    ///[Scrollable]s.
    ///
    /// Scroll is performed until the start of the `finder` is visible. This is
    /// due to the default parameter values of [Scrollable.ensureVisible] method.
    ///
    /// See also [dragUntilVisible].
    Future<void> scrollUntilVisible(
      Finder finder,
      double delta, {
  
negative.code:       Duration duration = const Duration(milliseconds: 50),
    }) {
      return TestAsyncUtils.guard<void>(() async {
        while (maxIteration > 0 && finder.evaluate().isEmpty) {
          await drag(view, moveStep);
          await pump(duration);
          maxIteration -= 1;
        }
        await Scrollable.ensureVisible(element(finder));
      });
  