Ответ 1
В файле .class есть атрибут файла класса с именем ScalaSig
, который содержит всю дополнительную информацию, необходимую для Scala. Это не очень понятно людям, но оно есть:
$ javap -verbose Foo.class
const #195 = Asciz ScalaSig;
const #196 = Asciz Lscala/reflect/ScalaSignature;;
const #197 = Asciz bytes;
const #198 = Asciz ^F^A!3A!^A^B^A^S\t\tb)^[7f^Y^Vtw\r^^5DQ^V^\7.^Z:^K^E\r!^
Q^A^B4jY^VT!!^B^D^B^UM^\^W\r\1tifdWMC^A^H^....
См. также Как хранится подпись Scala? и scala.reflect.ScalaSignature, что не очень интересно: -)