code: func (a Affine) Transform(dst draw.Image, src image.Image, i interp.Interp) error {
  	if dst == nil {
  		return errors.New("graphics: dst is nil")
  	}
  	if src == nil {
  		return errors.New("graphics: src is nil")
  	}
  
  	// RGBA fast path.
  	dstRGBA, dstOk := dst.(*image.RGBA)
  	srcRGBA, srcOk := src.(*image.RGBA)
  	interpRGBA, interpOk := i.(interp.RGBA)
  	if dstOk && srcOk && interpOk {
  		return a.transformRGBA(dstRGBA, srcRGBA, interpRGBA)
  	}
  
  	srcb := src.Bounds()
  	b := dst.Bounds()
  	for y := b.Min.Y; y < b.Max.Y; y++ {
  		for x := b.Min.X; x < b.Max.X; x++ {
  			sx, sy := a.pt(x, y)
  			if inBounds(srcb, sx, sy) {
  				dst.Set(x, y, i.Interp(src, sx, sy))
  			}
  		}
  	}
  	return nil
  }
docs: // Transform applies the affine transform to src and produces dst.