Due to the JVM erasure, the scala.Predef.ArrowAssoc.->
method generates a Tuple2 and the following cannot be distinguished
"table_name" -> "column1"
"table_name" -> ("column1", "column2")
After erasure a Tuple2[String,String] is identical to a
Tuple2[String,Tuple2[String,String]]. So to work around this, the
-> operator is redefined to operate only on String's, which
effectively removes the type from the first type of the Tuple2 and
allows it to be overloaded on the second type of the Tuple2. The
MigrationArrowAssoc class has the new -> method.
Due to the JVM erasure, the scala.Predef.ArrowAssoc.-> method generates a Tuple2 and the following cannot be distinguished
"table_name" -> "column1"
"table_name" -> ("column1", "column2")
After erasure a Tuple2[String,String] is identical to a Tuple2[String,Tuple2[String,String]]. So to work around this, the -> operator is redefined to operate only on String's, which effectively removes the type from the first type of the Tuple2 and allows it to be overloaded on the second type of the Tuple2. The MigrationArrowAssoc class has the new -> method.