anchor.diff:  
     /// Construct a rounded rectangle from its left, top, right, and bottom edges,
     /// and topLeft, topRight, bottomRight, and bottomLeft radii.
  -  RRect.fromLTRBCustom(double left, double top, double right, double bottom,
  -                      Radius topLeft, Radius topRight, Radius bottomRight,
  -                      Radius bottomLeft) {
  +  ///
  +  /// The corner radii default to [Radius.zero], i.e. right-angled corners.
  +  RRect.fromLTRBAndCorners(
  +    double left,
  +    double top,
  +    double right,
  +    double bottom,
  +    {
  +      Radius topLeft: Radius.zero,
  +      Radius topRight: Radius.zero,
  +      Radius bottomRight: Radius.zero,
  +      Radius bottomLeft: Radius.zero
  +    }
  +  ) {
       _value
         ..[0] = left
         ..[1] = top
  
positive.code: 
    /// Construct a rounded rectangle from its bounding box and and topLeft,
    /// topRight, bottomRight, and bottomLeft radii.
    RRect.fromRectCustom(Rect rect, Radius topLeft, Radius topRight,
                        Radius bottomRight, Radius bottomLeft) {
      _value
        ..[0] = rect.left
        ..[1] = rect.top
  
negative.code: 
    /// Returns a new RRect translated by the given offset.
    RRect shift(Offset offset) {
      return new RRect.fromLTRBAndCorners(
        _value[0] + offset.dx,
        _value[1] + offset.dy,
        _value[2] + offset.dx,
        _value[3] + offset.dy,
        topLeft: new Radius.elliptical(
          _value[4],
          _value[5]
        ),
        topRight: new Radius.elliptical(
          _value[6],
          _value[7]
        ),
        bottomRight: new Radius.elliptical(
          _value[8],
          _value[9]
        ),
        bottomLeft: new Radius.elliptical(
          _value[10],
          _value[11]
        )
  