code: function (x, y, width, height, r, strokeWidth) {
  
              r = isObject(x) ? x.r : r;
  
              var wrapper = this.createElement('rect'),
                attribs = isObject(x) ? x : x === UNDEFINED ? {} : {
                    x: x,
                    y: y,
                    width: mathMax(width, 0),
                    height: mathMax(height, 0)
                };
  
              if (strokeWidth !== UNDEFINED) {
                  attribs.strokeWidth = strokeWidth;
                  attribs = wrapper.crisp(attribs);
              }
  
              if (r) {
                  attribs.r = r;
              }
  
              wrapper.rSetter = function (value) {
                  attr(this.element, {
                      rx: value,
                      ry: value
                  });
              };
  
              return wrapper.attr(attribs);
          }
docs: Draw and return a rectangle
  @param {Number} x Left position
  @param {Number} y Top position
  @param {Number} width
  @param {Number} height
  @param {Number} r Border corner radius
  @param {Number} strokeWidth A stroke width can be supplied to allow crisp drawing