public void Execute(Collision collision)
        {
            IProjectile proj   = (IProjectile)collision.Collider;
            IPlayer     player = (IPlayer)collision.Collidee;

            switch (proj)
            {
            case EnemyBoomerang _:

                if (player.GetDirection() != CompassDirectionUtil.GetDirectionCharCaps(collision.Side))
                {
                    player.ReceiveDamage(boomerangDamage, CompassDirectionUtil.GetOppositeDirectionVector(collision.Side));
                }
                else
                {
                    AudioManager.PlayFireForget(shield);
                }

                proj.BeginDespawn();

                break;

            case Fireballs _:

                player.ReceiveDamage(fireballDamage, CompassDirectionUtil.GetOppositeDirectionVector(collision.Side));
                proj.BeginDespawn();

                break;

            case CandleFire _:
                player.ReceiveDamage(fireballDamage, CompassDirectionUtil.GetOppositeDirectionVector(collision.Side));
                break;
            }
        }