     //  bounds
     //----------------------------------
 
-    private var _bounds:Rectangle;
-
     private function getBounds():Rectangle
     {
-        if (_bounds)
-            return _bounds;
-
-		// First, allocate temporary bounds, as getBoundingBox() requires
-		// natual bounds to calculate a scaling factor
-		_bounds = new Rectangle(0, 0, 1, 1);
-
-		// Pass in the same size to getBoundingBox
-		// so that the scaling factor is (1, 1).
-		_bounds = getBoundingBox(1, 1, null /*Matrix*/);
-		return _bounds;
+		return segments ? segments.getBounds() : new Rectangle();
     }
 
     //--------------------------------------------------------------------------

    {
        graphicsPathChanged = true;
        super.invalidateDisplayObjectSharing();
    }
    
    /**
     *  @private
     */
    private function boundsChanged(): void
    {
        // Clear our cached measurement and data values
        clearBounds();
        _data = null;
        invalidateSize();
        invalidateDisplayList();
    }
   
    /**
     *  @private
     */
    private function clearBounds():void
    {
        _bounds = null;
        clearCachedBoundingBoxWithStroke();
    }
    
    /**

        measuredY = bounds.top;
    }

    /**
     *  @private
     *  Storage for the cached bounding box for particular transformation and size.
