 
         return null
 
-      # ## computeBoundingBoxX
+      # ## computeBoundingBoxX (ContainerViewNode)
       # Layout bounding box positions horizontally.
       # This needs to be separate from y-coordinate computation
       # because of glue spacing (the space between lines

              Math.max(dimension.width, @view.opts.emptySocketWidth)
        return null

      # ## computeBoundingBoxX
      computeBoundingBoxX: (left, line) ->
        # Use cache if possible.
        if @computedVersion is @model.version and
            left is @bounds[line]?.x
          return @bounds[line]

        # A Socket should copy its content
        # block, if there is a content block
        if @model.start.next.type is 'blockStart'
          @bounds[line] =
            @view.getViewNodeFor(@model.start.next.container).computeBoundingBoxX(left, line).clone()

          @boundingBoxFlag = @view.getViewNodeFor(@model.start.next.container).boundingBoxFlag

        # Otherwise, decrement to force super to recompute,
        # and call super.
        else
          super

        return @bounds[line]

      # ## computeGlue
      # Sockets have one exception to normal glue spacing computation:
      # sockets containing a block should **not** add padding to

        # placing children down and
        # adding padding and sizes
        # to make them not overlap.
        childLeft = left

        # Get rendering info on each of these children
        for lineChild, i in @lineChildren[line]
          childView = @view.getViewNodeFor lineChild.child
          childLine = line - lineChild.startLine

          childLeft += childView.margins.left
          childView.computeBoundingBoxX childLeft, childLine
          childLeft +=
            childView.dimensions[childLine].width + childView.margins.right

        # Return the bounds we just
        # computed.
