package kantan.csv

trait GeneratedRowCodecs {
  def codec1[C, A1: CellCodec](f: A1 ⇒ C, g: C ⇒ A1): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder1(f)(0), RowEncoder.encoder1(g))
  def codec2[C, A1: CellCodec, A2: CellCodec](f: (A1, A2) ⇒ C, g: C ⇒ (A1, A2))(i1: Int, i2: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder2(f)(i1, i2), RowEncoder.encoder2(g))
  def codec3[C, A1: CellCodec, A2: CellCodec, A3: CellCodec](f: (A1, A2, A3) ⇒ C, g: C ⇒ (A1, A2, A3))(i1: Int, i2: Int, i3: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder3(f)(i1, i2, i3), RowEncoder.encoder3(g))
  def codec4[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec](f: (A1, A2, A3, A4) ⇒ C, g: C ⇒ (A1, A2, A3, A4))(i1: Int, i2: Int, i3: Int, i4: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder4(f)(i1, i2, i3, i4), RowEncoder.encoder4(g))
  def codec5[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec](f: (A1, A2, A3, A4, A5) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder5(f)(i1, i2, i3, i4, i5), RowEncoder.encoder5(g))
  def codec6[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec](f: (A1, A2, A3, A4, A5, A6) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder6(f)(i1, i2, i3, i4, i5, i6), RowEncoder.encoder6(g))
  def codec7[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder7(f)(i1, i2, i3, i4, i5, i6, i7), RowEncoder.encoder7(g))
  def codec8[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder8(f)(i1, i2, i3, i4, i5, i6, i7, i8), RowEncoder.encoder8(g))
  def codec9[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder9(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9), RowEncoder.encoder9(g))
  def codec10[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder10(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10), RowEncoder.encoder10(g))
  def codec11[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder11(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11), RowEncoder.encoder11(g))
  def codec12[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder12(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12), RowEncoder.encoder12(g))
  def codec13[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder13(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13), RowEncoder.encoder13(g))
  def codec14[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder14(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14), RowEncoder.encoder14(g))
  def codec15[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder15(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15), RowEncoder.encoder15(g))
  def codec16[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder16(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16), RowEncoder.encoder16(g))
  def codec17[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder17(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17), RowEncoder.encoder17(g))
  def codec18[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder18(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18), RowEncoder.encoder18(g))
  def codec19[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder19(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19), RowEncoder.encoder19(g))
  def codec20[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder20(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20), RowEncoder.encoder20(g))
  def codec21[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec, A21: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int, i21: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder21(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21), RowEncoder.encoder21(g))
  def codec22[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec, A21: CellCodec, A22: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22) ⇒ C, g: C ⇒ (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22))(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int, i21: Int, i22: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder22(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22), RowEncoder.encoder22(g))

  def caseCodec1[C, A1: CellCodec](f: A1 ⇒ C, g: C ⇒ Option[A1]): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder1(f)(0), RowEncoder.caseEncoder1(g))
  def caseCodec2[C, A1: CellCodec, A2: CellCodec](f: (A1, A2) ⇒ C, g: C ⇒ Option[Tuple2[A1, A2]])(i1: Int, i2: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder2(f)(i1, i2), RowEncoder.caseEncoder2(g)(i1, i2))
  def caseCodec3[C, A1: CellCodec, A2: CellCodec, A3: CellCodec](f: (A1, A2, A3) ⇒ C, g: C ⇒ Option[Tuple3[A1, A2, A3]])(i1: Int, i2: Int, i3: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder3(f)(i1, i2, i3), RowEncoder.caseEncoder3(g)(i1, i2, i3))
  def caseCodec4[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec](f: (A1, A2, A3, A4) ⇒ C, g: C ⇒ Option[Tuple4[A1, A2, A3, A4]])(i1: Int, i2: Int, i3: Int, i4: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder4(f)(i1, i2, i3, i4), RowEncoder.caseEncoder4(g)(i1, i2, i3, i4))
  def caseCodec5[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec](f: (A1, A2, A3, A4, A5) ⇒ C, g: C ⇒ Option[Tuple5[A1, A2, A3, A4, A5]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder5(f)(i1, i2, i3, i4, i5), RowEncoder.caseEncoder5(g)(i1, i2, i3, i4, i5))
  def caseCodec6[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec](f: (A1, A2, A3, A4, A5, A6) ⇒ C, g: C ⇒ Option[Tuple6[A1, A2, A3, A4, A5, A6]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder6(f)(i1, i2, i3, i4, i5, i6), RowEncoder.caseEncoder6(g)(i1, i2, i3, i4, i5, i6))
  def caseCodec7[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7) ⇒ C, g: C ⇒ Option[Tuple7[A1, A2, A3, A4, A5, A6, A7]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder7(f)(i1, i2, i3, i4, i5, i6, i7), RowEncoder.caseEncoder7(g)(i1, i2, i3, i4, i5, i6, i7))
  def caseCodec8[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8) ⇒ C, g: C ⇒ Option[Tuple8[A1, A2, A3, A4, A5, A6, A7, A8]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder8(f)(i1, i2, i3, i4, i5, i6, i7, i8), RowEncoder.caseEncoder8(g)(i1, i2, i3, i4, i5, i6, i7, i8))
  def caseCodec9[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9) ⇒ C, g: C ⇒ Option[Tuple9[A1, A2, A3, A4, A5, A6, A7, A8, A9]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder9(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9), RowEncoder.caseEncoder9(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9))
  def caseCodec10[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) ⇒ C, g: C ⇒ Option[Tuple10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder10(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10), RowEncoder.caseEncoder10(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10))
  def caseCodec11[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ⇒ C, g: C ⇒ Option[Tuple11[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder11(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11), RowEncoder.caseEncoder11(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11))
  def caseCodec12[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) ⇒ C, g: C ⇒ Option[Tuple12[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder12(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12), RowEncoder.caseEncoder12(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12))
  def caseCodec13[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) ⇒ C, g: C ⇒ Option[Tuple13[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder13(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13), RowEncoder.caseEncoder13(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13))
  def caseCodec14[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) ⇒ C, g: C ⇒ Option[Tuple14[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder14(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14), RowEncoder.caseEncoder14(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14))
  def caseCodec15[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) ⇒ C, g: C ⇒ Option[Tuple15[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder15(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15), RowEncoder.caseEncoder15(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15))
  def caseCodec16[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) ⇒ C, g: C ⇒ Option[Tuple16[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder16(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16), RowEncoder.caseEncoder16(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16))
  def caseCodec17[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) ⇒ C, g: C ⇒ Option[Tuple17[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder17(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17), RowEncoder.caseEncoder17(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17))
  def caseCodec18[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) ⇒ C, g: C ⇒ Option[Tuple18[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder18(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18), RowEncoder.caseEncoder18(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18))
  def caseCodec19[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) ⇒ C, g: C ⇒ Option[Tuple19[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder19(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19), RowEncoder.caseEncoder19(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19))
  def caseCodec20[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) ⇒ C, g: C ⇒ Option[Tuple20[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder20(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20), RowEncoder.caseEncoder20(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20))
  def caseCodec21[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec, A21: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) ⇒ C, g: C ⇒ Option[Tuple21[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int, i21: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder21(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21), RowEncoder.caseEncoder21(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21))
  def caseCodec22[C, A1: CellCodec, A2: CellCodec, A3: CellCodec, A4: CellCodec, A5: CellCodec, A6: CellCodec, A7: CellCodec, A8: CellCodec, A9: CellCodec, A10: CellCodec, A11: CellCodec, A12: CellCodec, A13: CellCodec, A14: CellCodec, A15: CellCodec, A16: CellCodec, A17: CellCodec, A18: CellCodec, A19: CellCodec, A20: CellCodec, A21: CellCodec, A22: CellCodec](f: (A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22) ⇒ C, g: C ⇒ Option[Tuple22[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22]])(i1: Int, i2: Int, i3: Int, i4: Int, i5: Int, i6: Int, i7: Int, i8: Int, i9: Int, i10: Int, i11: Int, i12: Int, i13: Int, i14: Int, i15: Int, i16: Int, i17: Int, i18: Int, i19: Int, i20: Int, i21: Int, i22: Int): RowCodec[C] =
    RowCodec.combine(RowDecoder.decoder22(f)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22), RowEncoder.caseEncoder22(g)(i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22))
}
