scalaprops /scalaprops-shapelessScala102Generation of arbitrary case classes / ADTs instances with scalaprops and shapelessscalapropsscalascalaztesting