/// <summary>
    /// Ring "Touch End" handler
    /// </summary>
    /// <param name="ring">Ring to handle</param>
    public void RingDropHandler(GameObject ring)
    {
        _RingMovementController.StopObjectMovementHandling();

        if (IsTopRingOnPinSelected(ring))
        {
            Transform holderPin = _PinController.GetPinIfRingOnTop(ring);
            ring.SendMessage("SetCurrentStateNeutral");
            _RingMovementController.enabled = false;
            PinMonitor  pinMonitor          = holderPin.GetComponent <PinMonitor>();
            RingMonitor ringMonitor         = ring.GetComponent <RingMonitor>();
            Vector3     topRingSlotPosition = pinMonitor.GetCurrentTopRingSlotPosition();
            ringMonitor.onMoveComplete += MoveToPositionOnPinHandler;
            ringMonitor.MoveToPosition(topRingSlotPosition, RingMovementTime / ringMonitor.GetRingSize(), true);
        }
        else
        {
            ring.SendMessage("SetCurrentStateSurprised");
        }
    }