           lineNumbers: {}
     # Shared state that is copied into ``@state.gutters`.
     @sharedGutterStyles = {}
+    @customGutterDecorations = {}
 
     @updateState()
 

  updateCustomGutterDecorationState: ->
    return unless @startRow? and @endRow? and @lineHeight?

    @state.gutters.customDecorations = {}
    return if @model.isMini()

    for gutter in @model.getGutters()
      gutterName = gutter.name
      @state.gutters.customDecorations[gutterName] = {}
      return if not @gutterIsVisible(gutter)

      relevantDecorations = @customGutterDecorationsInRange(gutterName, @startRow, @endRow - 1)
      relevantDecorations.forEach (decoration) =>
        decorationRange = decoration.getMarker().getScreenRange()
        @state.gutters.customDecorations[gutterName][decoration.id] =
          top: @lineHeight * decorationRange.start.row
          height: @lineHeight * decorationRange.getRowCount()
          item: decoration.getProperties().item

        visible: isVisible,
        styles: @sharedGutterStyles
      })
    @state.gutters.customDecorations = @customGutterDecorations # TODO jssln Remove

  # Updates the decoration state for the gutter with the given gutterName.
  # @customGutterDecorations is an {Object}, with the form:
  #   * gutterName : {
  #     decoration.id : {
  #       top: # of pixels from top
