code: function (shadowOptions, group, cutOff) {
  		var shadows = [],
  			i,
  			shadow,
  			element = this.element,
  			strokeWidth,
  			shadowWidth,
  			shadowElementOpacity,
  
  			// compensate for inverted plot area
  			transform;
  
  
  		if (shadowOptions) {
  			shadowWidth = pick(shadowOptions.width, 3);
  			shadowElementOpacity = (shadowOptions.opacity || 0.15) / shadowWidth;
  			transform = this.parentInverted ?
  				'(-1,-1)' :
  				'(' + pick(shadowOptions.offsetX, 1) + ', ' + pick(shadowOptions.offsetY, 1) + ')';
  			for (i = 1; i <= shadowWidth; i++) {
  				shadow = element.cloneNode(0);
  				strokeWidth = (shadowWidth * 2) + 1 - (2 * i);
  				attr(shadow, {
  					'isShadow': 'true',
  					'stroke': shadowOptions.color || 'black',
  					'stroke-opacity': shadowElementOpacity * i,
  					'stroke-width': strokeWidth,
  					'transform': 'translate' + transform,
  					'fill': NONE
  				});
  				if (cutOff) {
  					attr(shadow, 'height', mathMax(attr(shadow, 'height') - strokeWidth, 0));
  					shadow.cutHeight = strokeWidth;
  				}
  
  				if (group) {
  					group.element.appendChild(shadow);
  				} else {
  					element.parentNode.insertBefore(shadow, element);
  				}
  
  				shadows.push(shadow);
  			}
  
  			this.shadows = shadows;
  		}
  		return this;
  
  	}
docs: Add a shadow to the element. Must be done after the element is added to the DOM
  @param {Boolean|Object} shadowOptions