code: function(angle, absolute, origin, opt) {
  
          if (origin) {
  
              var center = this.getBBox().center();
              var size = this.get('size');
              var position = this.get('position');
              center.rotate(origin, this.get('angle') - angle);
              var dx = center.x - size.width / 2 - position.x;
              var dy = center.y - size.height / 2 - position.y;
              this.startBatch('rotate', { angle: angle, absolute: absolute, origin: origin });
              this.position(position.x + dx, position.y + dy, opt);
              this.rotate(angle, absolute, null, opt);
              this.stopBatch('rotate');
  
          } else {
  
              this.set('angle', absolute ? angle : (this.get('angle') + angle) % 360, opt);
          }
  
          return this;
      }
docs: Rotate element by `angle` degrees, optionally around `origin` point. If `origin` is not provided, it is considered to be the center of the element. If `absolute` is `true`, the `angle` is considered is abslute, i.e. it is not the difference from the previous angle.