function stopTrackingPointer( tracker, pointsList, gPoint ) {
        //$.console.log('stopTrackingPointer *** ' + pointsList.type + ' ' + gPoint.id.toString());
        var listLength;

        var trackedGPoint = pointsList.getById( gPoint.id );

        if ( trackedGPoint ) {
            if ( trackedGPoint.captured ) {
                $.console.warn('stopTrackingPointer() called on captured pointer');
                releasePointer( tracker, trackedGPoint );
            }

            // If child element relinquishes capture to a parent we may get here
            //   from a pointerleave event while a pointerup event will never be received.
            //   In that case, we'll clean up the contact count
            pointsList.removeContact();

            listLength = pointsList.removeById( gPoint.id );
        } else {
            listLength = pointsList.getLength();
        }

        return listLength;
    }
@function
@private
@inner
@param {OpenSeadragon.MouseTracker} tracker
    A reference to the MouseTracker instance.
@param {OpenSeadragon.MouseTracker.GesturePointList} pointsList
    The GesturePointList to stop tracking the pointer on.
@param {OpenSeadragon.MouseTracker.GesturePoint} gPoint
     Gesture point to stop tracking.
@returns {Number} Number of gesture points in pointsList.