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:   static void _validateColorStops(List<Color> colors, List<double> colorStops) {
      if (colorStops == null) {
        if (colors.length != 2)
          throw new ArgumentError("[colors] must have length 2 if [colorStops] is omitted.");
      } else {
        if (colors.length != colorStops.length)
          throw new ArgumentError("[colors] and [colorStops] arguments must have equal length.");
      }
    }
  }
  
negative.code:   /// be null.
    ImageShader(Image image, TileMode tmx, TileMode tmy, Float64List matrix4) {
      if (image == null)
        throw new ArgumentError('"image" argument cannot be null.');
      if (tmx == null)
        throw new ArgumentError('"tmx" argument cannot be null.');
      if (tmy == null)
        throw new ArgumentError('"tmy" argument cannot be null.');
      if (matrix4 == null)
        throw new ArgumentError('"matrix4" argument cannot be null.');
      if (matrix4.length != 16)
        throw new ArgumentError('"matrix4" must have 16 entries.');
      _constructor();
      _initWithImage(image, tmx.index, tmy.index, matrix4);
    }
  