code: function GsetStops(str) {
              var grad = str,
                  stops = this.stops();
              if (typeof str == "string") {
                  grad = eve("snap.util.grad.parse", null, "l(0,0,0,1)" + str).firstDefined().stops;
              }
              if (!Snap.is(grad, "array")) {
                  return;
              }
              for (var i = 0; i < stops.length; i++) {
                  if (grad[i]) {
                      var color = Snap.color(grad[i].color),
                          attr = {"offset": grad[i].offset + "%"};
                      attr["stop-color"] = color.hex;
                      if (color.opacity < 1) {
                          attr["stop-opacity"] = color.opacity;
                      }
                      stops[i].attr(attr);
                  } else {
                      stops[i].remove();
                  }
              }
              for (i = stops.length; i < grad.length; i++) {
                  this.addStop(grad[i].color, grad[i].offset);
              }
              return this;
          }
docs: /*\
  Element.setStops
  [ method ]
  *
  Only for gradients!
  Updates stops of the gradient based on passed gradient descriptor. See @Ppaer.gradient
  - str (string) gradient descriptor part after `()`.
  = (object) gradient element
  | var g = paper.gradient("l(0, 0, 1, 1)#000-#f00-#fff");
  | g.setStops("#fff-#000-#f00-#fc0");
  \