anchor.diff:    /// On iOS, this identifies the scroll view that will scroll to top in
     /// response to a tap in the status bar.
     ///
  -  /// Defaults to true when `scrollDirection` is vertical and `controller` is
  -  /// not specified.
  +  /// Defaults to true when [scrollDirection] is [Axis.vertical] and
  +  /// [controller] is null.
     final bool primary;
   
  +  /// How the scroll view should respond to user input.
  +  ///
  +  /// For example, determines how the scroll view continues to animate after the
  +  /// user stops dragging the scroll view.
  +  ///
  +  /// Defaults to matching platform conventions.
     final ScrollPhysics physics;
   
  +  /// Whether the extent of the scroll view in the [scrollDirection] should be
  +  /// determined by the contents being viewed.
  +  ///
  +  /// If the scroll view does not shrink wrap, then the scroll view will expand
  +  /// to the maximum allowed size in the [scrollDirection]. If the scroll view
  +  /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must
  +  /// be true.
  +  ///
  +  /// Shrink wrapping the content of the scroll view is significantly more
  +  /// expensive than expanding to the maximum allowed size because the content
  +  /// can expand and contract during scrolling, which means the size of the
  +  /// scroll view needs to be recomputed whenever the scroll position changes.
  +  ///
  +  /// Defaults to false.
     final bool shrinkWrap;
   
  +  /// Returns the [AxisDirection] in which the scroll view scrolls.
  +  ///
  +  /// Combines the [scrollDirection] with the [reverse] boolean to obtain the
  +  /// concrete [AxisDirection].
  +  ///
  +  /// In the future, this function will also consider the reading direction.
     @protected
     AxisDirection getDirection(BuildContext context) {
       // TODO(abarth): Consider reading direction.
  
positive.code:   }
  }
  
  class CustomScrollView extends ScrollView {
    CustomScrollView({
      Key key,
      Axis scrollDirection: Axis.vertical,
  
negative.code:     padding: padding,
    );
  
    /// Creates a scrollable, linear array of widgets with a custom child model.
    ///
    /// For example, a custom child model can control the algorithm used to
    /// estimate the size of children that are not actually visible.
    ListView.custom({
      Key key,
      Axis scrollDirection: Axis.vertical,
  