             when 'left'   then newDirection[1] = 'right'
           $trigger.data @attr('direction'), newDirection.join ' '
 
-    # `_setBounds` updates `_bounds` per `$viewport`'s inner bounds, and those
-    # measures get used by `_updateDirectionByTrigger`.
-    _setBounds: ->
-      $viewport = if @$viewport.is('body') then $(window) else @$viewport
-      @_bounds =
-        top:    $.css @$viewport[0], 'padding-top', yes
-        left:   $.css @$viewport[0], 'padding-left', yes
-        bottom: $viewport.innerHeight()
-        right:  $viewport.innerWidth()
-
-    _setState: (state) ->
-      return no if state is @_state
-      @_state = state
-      @debugLog @_state
-
-    # `sizeForTrigger` does a stealth render via `_wrapStealthRender` to find tip
-    # size. It will return saved data if possible before doing a measure. The
-    # measures, used by `_updateDirectionByTrigger`, are stored on the trigger
-    # as namespaced, `width` and `height` jQuery data values. If on,
-    # `contentOnly` will factor in content padding into the size value for the
-    # current size.
-    sizeForTrigger: ($trigger, contentOnly=no) ->
-      # Short on existing data.
-      size =
-        width:  $trigger.data 'width'
-        height: $trigger.data 'height'
-      # Get size.
-      $content = @selectByClass('content')
-      if not (size.width? and size.height?)
-        $content.text $trigger.data @attr('content')
-        wrapped = @_wrapStealthRender ->
-          $trigger.data 'width',  (size.width = @$tip.outerWidth())
-          $trigger.data 'height', (size.height = @$tip.outerHeight())
-        wrapped()
-      # Get content size.
-      if contentOnly is yes
-        padding = $content.css('padding').split(' ')
-        [top, right, bottom, left] = (parseInt side, 10 for side in padding)
-        bottom ?= top
-        left ?= right
-        size.width -= left + right
-        size.height -= top + bottom + @selectByClass('stem').height() # TODO: This isn't always true.
-      size
-
-    # `_wrapStealthRender` is a helper mostly for size detection on tips and
+    # 𝒇 `_wrapStealthRender` is a helper mostly for size detection on tips and
     # triggers. Without stealth rendering the elements by temporarily un-hiding
     # and making invisible, we can't do `getComputedStyle` on them.
     _wrapStealthRender: (func) ->


    # SnapTip Options
    # ---------------
    # These options extend the tip options.
    defaults: do (pre = 'js-snap-tip-') ->
      $.extend (deep = yes), {}, hlf.tip.defaults,
        # - `snap.toXAxis` is the switch for snapping along x-axis. Off by default.
        # - `snap.toYAxis` is the switch for snapping along y-axis. Off by default.
        # - `snap.toTrigger` is the switch snapping to trigger that builds on top of
        #   axis-snapping. On by default. 
        snap:
          toTrigger: on
          toXAxis: off

          visibility: 'visible'
        return result

    # ### Delegation to Subclass

    # These methods are hooks for custom functionality from subclasses. (Some are
    # set to no-ops becase they are given no arguments.)
    onShow: (triggerChanged, event) -> undefined
    onHide: $.noop
    afterShow: (triggerChanged, event) -> undefined
