I define case class in spark-shell or scala-shell, and found its constructor signature is changed, there's one extra parameter $iw
added, what is that? why that happens? This issue caused me unable to create new instance via its constructor in reflection
scala> case class People(id:Int, name: String)
class People
scala> classOf[People].getDeclaredConstructors.head
val res0: java.lang.reflect.Constructor[_] = public People($iw,int,java.lang.String)