class Persist3Imp[A1, A2, A3, R](val typeStr: String, val name1: String, val fArg1: R => A1, val name2: String, val fArg2: R => A2, val name3: String, val fArg3: R => A3, val newT: (A1, A2, A3) => R, val opt3: Option[A3], opt2In: Option[A2], opt1In: Option[A1])(implicit val ev1: Persist[A1], val ev2: Persist[A2], val ev3: Persist[A3]) extends Persist3[A1, A2, A3, R]