       @_clipDraw null, stagingBitmap, elementToTargetMatrix
     else
       @_drawChildren stagingBitmap, elementToTargetMatrix, true
-
-    # log _renderStagingBitmap:
-    #   element: @inspectedName
-    #   targetSpaceDrawArea:targetSpaceDrawArea
-    #   elementToTargetMatrix: elementToTargetMatrix
-    #   stagingBitmap: stagingBitmap
 
     stagingBitmap
 


  @_cachingDraws: 0

  @getter
    cacheDrawRequired: -> @getNeedsStagingBitmap() || (config.drawCacheEnabled && Element._cachingDraws == 0 && @getCacheable() && @getCacheDraw())
    cacheIsValid: -> !!@_drawCacheBitmap
    needsStagingBitmap: ->
      (@getHasChildren() || @getIsMask()) && (@_compositeMode != "normal" || @_opacity < 1 || @getChildRequiresParentStagingBitmap())

    # override this for elements which are faster w/o caching (RectangleElement, BitmapElement)
    cacheable: -> true

      proposedTargetSpaceDrawArea = child.overDraw proposedTargetSpaceDrawArea, elementToTargetMatrix
    proposedTargetSpaceDrawArea

  # OVERRIDE _clipDraw AND hasCustomClipping for custom clipping (RectangleElement, for example)
  _clipDraw: (clipArea, target, elementToTargetMatrix)->
    throw new Error "bad matrix" unless elementToTargetMatrix.getIsTranslateAndScaleOnly()
    target.clippedTo clipArea, =>
      @_drawChildren target, elementToTargetMatrix

  @getter
    hasCustomClipping: -> false

  draw: (target, elementToTargetMatrix)->
    stats.elementsDrawn++
