https://omkarkulkarni.medium.com/scaling-data-engineering-using-scala-implicits-and-ad-hoc-polymorphism-with-apache-spark-156ba092e419