anchor.diff:    void drawVertices(Vertices vertices, BlendMode blendMode, Paint paint) {
       _drawVertices(vertices, blendMode, paint._objects, paint._data);
     }
  +
     void _drawVertices(Vertices vertices,
                        BlendMode blendMode,
                        List<dynamic> paintObjects,
                        ByteData paintData) native "Canvas_drawVertices";
   
  +  //
  +  // See also:
  +  //
  +  //  * [drawRawAtlas], which takes its arguments as typed data lists rather
  +  //    than objects.
     // TODO(eseidel): Paint should be optional, but optional doesn't work.
     void drawAtlas(Image atlas,
                    List<RSTransform> transforms,
  
positive.code:   /// specified as a list of values in column-major order.
    void transform(Float64List matrix4) {
      if (matrix4.length != 16)
        throw new ArgumentError("[matrix4] must have 16 entries.");
      _transform(matrix4);
    }
    void _transform(Float64List matrix4) native "Canvas_transform";
  
negative.code:     final int rectCount = rects.length;
  
      if (transforms.length != rectCount)
        throw new ArgumentError('"transforms" and "rects" lengths must match.');
      if (colors.isNotEmpty && colors.length != rectCount)
        throw new ArgumentError('If non-null, "colors" length must match that of "transforms" and "rects".');
  
      final Float32List rstTransformBuffer = new Float32List(rectCount * 4);
      final Float32List rectBuffer = new Float32List(rectCount * 4);
  