private void Interact(Transform target, Vector3 position, Vector3 normal)
        {
            var interactable = FindInteractable(target);

            var held = hands.GetItemInHand();
            InteractionReceiver heldInteractionReceiver = null;

            if (held != null)
            {
                heldInteractionReceiver = FindInteractable(held.transform);
                if (heldInteractionReceiver)
                {
                    foreach (var kind in heldInteractionsOnClick)
                    {
                        heldInteractionReceiver.Trigger(new InteractionEvent(kind, hands.gameObject, gameObject)
                                                        .WorldPosition(position).WorldNormal(normal).ForwardTo(interactable)
                                                        .RunWhile(e => Input.GetButton("Click")));
                    }
                }
            }

            if (interactable)
            {
                foreach (var kind in interactionsOnClick)
                {
                    interactable.Trigger(new InteractionEvent(kind, hands.gameObject, gameObject)
                                         .WorldPosition(position).WorldNormal(normal).WaitFor(heldInteractionReceiver));
                }
            }
        }