      *  Callout, use <code>actualHorizontalPosition</code> and
      *  <code>actualVerticalPosition</code> to compute
      *  <code>arrowDirection</code> and positioning in
-     *  <code>positionPopUp()</code> and <code>updateSkinDisplayList()</code>.
+     *  <code>updatePopUpPosition()</code> and <code>updateSkinDisplayList()</code>.
      *
      *  <p>The default implementation chooses "outer" positions for the callout
      *  such that the owner is not obscured. Horizontal/Vertical orientation

     * 
     *  <p>Update this property in <code>commitProperties()</code> when the
     *  explicit <code>verticalPosition</code> is CalloutPosition.AUTO. 
     *  This property must be updated in <code>positionPopUp()</code>
     *  when attempting to reposition the Callout.</p> 
     *  
     *  <p>Subclasses should read this property when computing the <code>arrowDirection</code>,

        // skin must override commitProperties() and account for
        // arrowDirection on it's own.
        skin.invalidateProperties();
        
        // adjust margins based on arrow direction
        if (popUpTransition)
        {
            switch (arrowDirection)
            {
                case ArrowDirection.DOWN:
                {
                    // set the marginBottom to zero to place the arrow adjacent to the keyboard
                    popUpTransition.marginBottom = 0;
                    popUpTransition.marginTop = margin;
                    break;
                }
                case ArrowDirection.UP:
                {
                    // disable moving when the arrow points up
                    popUpTransition.moveForSoftKeyboard = false;
                    popUpTransition.marginBottom = margin;
                    break;
                }
                default:
                {
                    popUpTransition.marginBottom = margin;
                    popUpTransition.marginTop = margin;
                    break;
                }
            }
        }
        
        if (hasEventListener("arrowDirectionChanged"))
            dispatchEvent(new Event("arrowDirectionChanged"));
