Scala: case classes converted to object
<p>I have two case classes like these -</p>

<pre><code>case class GetList()
case class Add(num: Int)
</code></pre>

<p>I have an actor whose receive method looks like this -</p>

<pre><code>override def receive() = {
  case a: Add =&gt; // do something
  case g: GetList =&gt; // do something
  case x: Any =&gt; // something
}
</code></pre>

<p>I am calling the actor as -</p>

<pre><code>ref ! Add(1)
ref ! GetList
</code></pre>

<p>For the Add(1) message, I am getting a hit on a: Add in receive. But for the GetList message it's going to x: Any.
On closer inspection I found the instance I am getting is of type GetList$ which usually denotes an "object".</p>

<p>Who is doing this conversion and why? What is the rationale behind such a weird behaviour?</p>