can someone create an instance of the Shuffler actor and send it like a main class to test these functions in SCALA, please? I already tried ChatGPT Don't use it, please FOR THIS CODE: import akka.actor._ case class Shuffle[T](deck: List[T], n: Int, isOutShuffle: Boolean) case class Split(deck: List[String], faroShuffler: ActorRef, isOutShuffle: Boolean) case class ShuffleType(isOutShuffle: Boolean) case class CollectCards(name: String, numCards: Int) case class Card(card: String) case class ShuffledDeck[T](deck: List[T]) class Shuffler extends Actor { var shufflesLeft = 0 var senderRef: ActorRef = _ def receive = { case Shuffle(deck: List[String], n, isOutShuffle) => shufflesLeft = n senderRef = sender() val splitter = context.actorOf(Props[Splitter]) splitter ! Split(deck, context.actorOf(Props[FaroShuffler]), isOutShuffle) case ShuffledDeck(deck: List[String]) => shufflesLeft -= 1 if (shufflesLeft == 0) { senderRef ! ShuffledDeck(deck) } } } class Splitter extends Actor { def receive = { case Split(deck, faroShuffler, isOutShuffle) => val (left, right) = deck.splitAt(deck.length / 2) faroShuffler ! ShuffleType(isOutShuffle) faroShuffler ! left faroShuffler ! right } } class FaroShuffler extends Actor { var cardCollector: Option[ActorRef] = None var deck1: List[String] = Nil var deck2: List[String] = Nil var isOutShuffle: Boolean = false def receive = { case ShuffleType(out) => isOutShuffle = out case deck: List[String] => if (deck1.isEmpty) deck1 = deck else deck2 = deck if (deck1.nonEmpty && deck2.nonEmpty) { val numCards = deck1.length + deck2.length cardCollector = Some(context.actorOf(Props[CardCollector])) cardCollector.foreach(_ ! CollectCards(self.path.name, numCards)) val (firstDeck, secondDeck) = if (isOutShuffle) (deck2, deck1) else (deck1, deck2) val shuffledDeck = (for { i <- 0 until firstDeck.length j = if (i < secondDeck.length) i * 2 + 1 else (i - secondDeck.length) * 2 card <- List(firstDeck(i), secondDeck(j)) } yield card).toList cardCollector.foreach(_ ! ShuffledDeck(shuffledDeck)) deck1 = Nil deck2 = Nil } } } class CardCollector extends Actor { var collectedCards: List[String] = Nil var senderRef: ActorRef = _ def receive = { case CollectCards(name, numCards) => senderRef = sender() collectedCards = Nil context.become(collectingCards(name, numCards)) } def collectingCards(name: String, numCards: Int): Receive = { case Card(card) => collectedCards = card :: collectedCards if (collectedCards.length == numCards) { senderRef ! ShuffledDeck(collectedCards.reverse) context.unbecome() } } }.