Я думаю, это какое-то приспособление. Компилятор Scala обычно использует $ в именах классов, и некоторые java-коды могут потерпеть неудачу, он может генерировать некоторые дополнительные методы, пакеты и т. Д. При создании, скажем, статического объекта
object Foo {
case class Bar()
}
val bar = new Foo.Bar().getClass().getSimpleName() shouldEqual "Foo$Bar"
Так что, вероятно, он был сгенерирован компилятором или какой-то другой библиотекой уровня-магии-макроса-библиотеки