 
     # OUT: promise.then (bitmap) ->
     get: (url, initializerPromise) ->
+      return Canvas.Bitmap.get url unless isString url # non-string sources are not cached
       @_referenceCounts[url] = (@_referenceCounts[url] || 0) + 1
       out = @_cache[url] ||= initializerPromise || Canvas.Bitmap.get url
       out.then (bitmap) => @_loaded[url] = bitmap

    # returns true if the bitmap was released
    # returns false if there are still other references
    release: (url) ->
      return unless url
      # log "SourceToBitmapCache#release: #{url}"
      throw new Error "no references for #{url}" unless isNumber @_referenceCounts[url]
      if @_referenceCounts[url] == 0 || !isNumber @_referenceCounts[url]

    ###
    source:
      default:    null
      validate:   (v) ->
        !v ||
        (isImage v) ||
        (isString v)

      postSetter: (v) -> v && @_loadBitmapFromSource v

    ###
