All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.twitter.scalding.GeneratedTupleAdders.scala Maven / Gradle / Ivy

There is a newer version: 0.16.1-RC3
Show newest version
// following were autogenerated by tuple_adder_generator.rb at Tue Aug 14 11:29:35 -0700 2012 do not edit
package com.twitter.scalding

trait GeneratedTupleAdders {
  class Tuple1Adder[A](tup: Tuple1[A]) {
    def :+[B](other: B) = {
      (tup._1, other)
    }
    def +:[B](other: B) = {
      (other, tup._1)
    }

    def ++[B](other: Tuple1[B]) = {
      (tup._1, other._1)
    }

    def ++[B, C](other: Tuple2[B, C]) = {
      (tup._1, other._1, other._2)
    }

    def ++[B, C, D](other: Tuple3[B, C, D]) = {
      (tup._1, other._1, other._2, other._3)
    }

    def ++[B, C, D, E](other: Tuple4[B, C, D, E]) = {
      (tup._1, other._1, other._2, other._3, other._4)
    }

    def ++[B, C, D, E, F](other: Tuple5[B, C, D, E, F]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[B, C, D, E, F, G](other: Tuple6[B, C, D, E, F, G]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[B, C, D, E, F, G, H](other: Tuple7[B, C, D, E, F, G, H]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[B, C, D, E, F, G, H, I](other: Tuple8[B, C, D, E, F, G, H, I]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[B, C, D, E, F, G, H, I, J](other: Tuple9[B, C, D, E, F, G, H, I, J]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[B, C, D, E, F, G, H, I, J, K](other: Tuple10[B, C, D, E, F, G, H, I, J, K]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L](other: Tuple11[B, C, D, E, F, G, H, I, J, K, L]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M](other: Tuple12[B, C, D, E, F, G, H, I, J, K, L, M]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N](other: Tuple13[B, C, D, E, F, G, H, I, J, K, L, M, N]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O](other: Tuple14[B, C, D, E, F, G, H, I, J, K, L, M, N, O]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](other: Tuple15[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](other: Tuple16[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple17[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple18[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple19[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple20[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19, other._20)
    }

    def ++[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple21[B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19, other._20, other._21)
    }
  }

  implicit def tup1ToAdder[A](tup: Tuple1[A]) = new Tuple1Adder(tup)

  class Tuple2Adder[A, B](tup: Tuple2[A, B]) {
    def :+[C](other: C) = {
      (tup._1, tup._2, other)
    }
    def +:[C](other: C) = {
      (other, tup._1, tup._2)
    }

    def ++[C](other: Tuple1[C]) = {
      (tup._1, tup._2, other._1)
    }

    def ++[C, D](other: Tuple2[C, D]) = {
      (tup._1, tup._2, other._1, other._2)
    }

    def ++[C, D, E](other: Tuple3[C, D, E]) = {
      (tup._1, tup._2, other._1, other._2, other._3)
    }

    def ++[C, D, E, F](other: Tuple4[C, D, E, F]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4)
    }

    def ++[C, D, E, F, G](other: Tuple5[C, D, E, F, G]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[C, D, E, F, G, H](other: Tuple6[C, D, E, F, G, H]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[C, D, E, F, G, H, I](other: Tuple7[C, D, E, F, G, H, I]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[C, D, E, F, G, H, I, J](other: Tuple8[C, D, E, F, G, H, I, J]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[C, D, E, F, G, H, I, J, K](other: Tuple9[C, D, E, F, G, H, I, J, K]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[C, D, E, F, G, H, I, J, K, L](other: Tuple10[C, D, E, F, G, H, I, J, K, L]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M](other: Tuple11[C, D, E, F, G, H, I, J, K, L, M]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N](other: Tuple12[C, D, E, F, G, H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O](other: Tuple13[C, D, E, F, G, H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P](other: Tuple14[C, D, E, F, G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](other: Tuple15[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple16[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple17[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple18[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple19[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19)
    }

    def ++[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple20[C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19, other._20)
    }
  }

  implicit def tup2ToAdder[A, B](tup: Tuple2[A, B]) = new Tuple2Adder(tup)

  class Tuple3Adder[A, B, C](tup: Tuple3[A, B, C]) {
    def :+[D](other: D) = {
      (tup._1, tup._2, tup._3, other)
    }
    def +:[D](other: D) = {
      (other, tup._1, tup._2, tup._3)
    }

    def ++[D](other: Tuple1[D]) = {
      (tup._1, tup._2, tup._3, other._1)
    }

    def ++[D, E](other: Tuple2[D, E]) = {
      (tup._1, tup._2, tup._3, other._1, other._2)
    }

    def ++[D, E, F](other: Tuple3[D, E, F]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3)
    }

    def ++[D, E, F, G](other: Tuple4[D, E, F, G]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4)
    }

    def ++[D, E, F, G, H](other: Tuple5[D, E, F, G, H]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[D, E, F, G, H, I](other: Tuple6[D, E, F, G, H, I]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[D, E, F, G, H, I, J](other: Tuple7[D, E, F, G, H, I, J]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[D, E, F, G, H, I, J, K](other: Tuple8[D, E, F, G, H, I, J, K]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[D, E, F, G, H, I, J, K, L](other: Tuple9[D, E, F, G, H, I, J, K, L]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[D, E, F, G, H, I, J, K, L, M](other: Tuple10[D, E, F, G, H, I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N](other: Tuple11[D, E, F, G, H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O](other: Tuple12[D, E, F, G, H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P](other: Tuple13[D, E, F, G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q](other: Tuple14[D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple15[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple16[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple17[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple18[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18)
    }

    def ++[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple19[D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18, other._19)
    }
  }

  implicit def tup3ToAdder[A, B, C](tup: Tuple3[A, B, C]) = new Tuple3Adder(tup)

  class Tuple4Adder[A, B, C, D](tup: Tuple4[A, B, C, D]) {
    def :+[E](other: E) = {
      (tup._1, tup._2, tup._3, tup._4, other)
    }
    def +:[E](other: E) = {
      (other, tup._1, tup._2, tup._3, tup._4)
    }

    def ++[E](other: Tuple1[E]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1)
    }

    def ++[E, F](other: Tuple2[E, F]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2)
    }

    def ++[E, F, G](other: Tuple3[E, F, G]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3)
    }

    def ++[E, F, G, H](other: Tuple4[E, F, G, H]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4)
    }

    def ++[E, F, G, H, I](other: Tuple5[E, F, G, H, I]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[E, F, G, H, I, J](other: Tuple6[E, F, G, H, I, J]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[E, F, G, H, I, J, K](other: Tuple7[E, F, G, H, I, J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[E, F, G, H, I, J, K, L](other: Tuple8[E, F, G, H, I, J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[E, F, G, H, I, J, K, L, M](other: Tuple9[E, F, G, H, I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[E, F, G, H, I, J, K, L, M, N](other: Tuple10[E, F, G, H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O](other: Tuple11[E, F, G, H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P](other: Tuple12[E, F, G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q](other: Tuple13[E, F, G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple14[E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple15[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple16[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple17[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17)
    }

    def ++[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple18[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17, other._18)
    }
  }

  implicit def tup4ToAdder[A, B, C, D](tup: Tuple4[A, B, C, D]) = new Tuple4Adder(tup)

  class Tuple5Adder[A, B, C, D, E](tup: Tuple5[A, B, C, D, E]) {
    def :+[F](other: F) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other)
    }
    def +:[F](other: F) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5)
    }

    def ++[F](other: Tuple1[F]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1)
    }

    def ++[F, G](other: Tuple2[F, G]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2)
    }

    def ++[F, G, H](other: Tuple3[F, G, H]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3)
    }

    def ++[F, G, H, I](other: Tuple4[F, G, H, I]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4)
    }

    def ++[F, G, H, I, J](other: Tuple5[F, G, H, I, J]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[F, G, H, I, J, K](other: Tuple6[F, G, H, I, J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[F, G, H, I, J, K, L](other: Tuple7[F, G, H, I, J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[F, G, H, I, J, K, L, M](other: Tuple8[F, G, H, I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[F, G, H, I, J, K, L, M, N](other: Tuple9[F, G, H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[F, G, H, I, J, K, L, M, N, O](other: Tuple10[F, G, H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P](other: Tuple11[F, G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q](other: Tuple12[F, G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple13[F, G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple14[F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple15[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple16[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }

    def ++[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple17[F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16, other._17)
    }
  }

  implicit def tup5ToAdder[A, B, C, D, E](tup: Tuple5[A, B, C, D, E]) = new Tuple5Adder(tup)

  class Tuple6Adder[A, B, C, D, E, F](tup: Tuple6[A, B, C, D, E, F]) {
    def :+[G](other: G) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other)
    }
    def +:[G](other: G) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6)
    }

    def ++[G](other: Tuple1[G]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1)
    }

    def ++[G, H](other: Tuple2[G, H]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2)
    }

    def ++[G, H, I](other: Tuple3[G, H, I]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3)
    }

    def ++[G, H, I, J](other: Tuple4[G, H, I, J]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4)
    }

    def ++[G, H, I, J, K](other: Tuple5[G, H, I, J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[G, H, I, J, K, L](other: Tuple6[G, H, I, J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[G, H, I, J, K, L, M](other: Tuple7[G, H, I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[G, H, I, J, K, L, M, N](other: Tuple8[G, H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[G, H, I, J, K, L, M, N, O](other: Tuple9[G, H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[G, H, I, J, K, L, M, N, O, P](other: Tuple10[G, H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q](other: Tuple11[G, H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q, R](other: Tuple12[G, H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple13[G, H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple14[G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple15[G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }

    def ++[G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple16[G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15, other._16)
    }
  }

  implicit def tup6ToAdder[A, B, C, D, E, F](tup: Tuple6[A, B, C, D, E, F]) = new Tuple6Adder(tup)

  class Tuple7Adder[A, B, C, D, E, F, G](tup: Tuple7[A, B, C, D, E, F, G]) {
    def :+[H](other: H) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other)
    }
    def +:[H](other: H) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7)
    }

    def ++[H](other: Tuple1[H]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1)
    }

    def ++[H, I](other: Tuple2[H, I]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2)
    }

    def ++[H, I, J](other: Tuple3[H, I, J]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3)
    }

    def ++[H, I, J, K](other: Tuple4[H, I, J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4)
    }

    def ++[H, I, J, K, L](other: Tuple5[H, I, J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[H, I, J, K, L, M](other: Tuple6[H, I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[H, I, J, K, L, M, N](other: Tuple7[H, I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[H, I, J, K, L, M, N, O](other: Tuple8[H, I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[H, I, J, K, L, M, N, O, P](other: Tuple9[H, I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q](other: Tuple10[H, I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q, R](other: Tuple11[H, I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q, R, S](other: Tuple12[H, I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple13[H, I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple14[H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }

    def ++[H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple15[H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14, other._15)
    }
  }

  implicit def tup7ToAdder[A, B, C, D, E, F, G](tup: Tuple7[A, B, C, D, E, F, G]) = new Tuple7Adder(tup)

  class Tuple8Adder[A, B, C, D, E, F, G, H](tup: Tuple8[A, B, C, D, E, F, G, H]) {
    def :+[I](other: I) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other)
    }
    def +:[I](other: I) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8)
    }

    def ++[I](other: Tuple1[I]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1)
    }

    def ++[I, J](other: Tuple2[I, J]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2)
    }

    def ++[I, J, K](other: Tuple3[I, J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3)
    }

    def ++[I, J, K, L](other: Tuple4[I, J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4)
    }

    def ++[I, J, K, L, M](other: Tuple5[I, J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[I, J, K, L, M, N](other: Tuple6[I, J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[I, J, K, L, M, N, O](other: Tuple7[I, J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[I, J, K, L, M, N, O, P](other: Tuple8[I, J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[I, J, K, L, M, N, O, P, Q](other: Tuple9[I, J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[I, J, K, L, M, N, O, P, Q, R](other: Tuple10[I, J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[I, J, K, L, M, N, O, P, Q, R, S](other: Tuple11[I, J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[I, J, K, L, M, N, O, P, Q, R, S, T](other: Tuple12[I, J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[I, J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple13[I, J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }

    def ++[I, J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple14[I, J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13, other._14)
    }
  }

  implicit def tup8ToAdder[A, B, C, D, E, F, G, H](tup: Tuple8[A, B, C, D, E, F, G, H]) = new Tuple8Adder(tup)

  class Tuple9Adder[A, B, C, D, E, F, G, H, I](tup: Tuple9[A, B, C, D, E, F, G, H, I]) {
    def :+[J](other: J) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other)
    }
    def +:[J](other: J) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9)
    }

    def ++[J](other: Tuple1[J]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1)
    }

    def ++[J, K](other: Tuple2[J, K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2)
    }

    def ++[J, K, L](other: Tuple3[J, K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3)
    }

    def ++[J, K, L, M](other: Tuple4[J, K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4)
    }

    def ++[J, K, L, M, N](other: Tuple5[J, K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[J, K, L, M, N, O](other: Tuple6[J, K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[J, K, L, M, N, O, P](other: Tuple7[J, K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[J, K, L, M, N, O, P, Q](other: Tuple8[J, K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[J, K, L, M, N, O, P, Q, R](other: Tuple9[J, K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[J, K, L, M, N, O, P, Q, R, S](other: Tuple10[J, K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[J, K, L, M, N, O, P, Q, R, S, T](other: Tuple11[J, K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[J, K, L, M, N, O, P, Q, R, S, T, U](other: Tuple12[J, K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }

    def ++[J, K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple13[J, K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12, other._13)
    }
  }

  implicit def tup9ToAdder[A, B, C, D, E, F, G, H, I](tup: Tuple9[A, B, C, D, E, F, G, H, I]) = new Tuple9Adder(tup)

  class Tuple10Adder[A, B, C, D, E, F, G, H, I, J](tup: Tuple10[A, B, C, D, E, F, G, H, I, J]) {
    def :+[K](other: K) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other)
    }
    def +:[K](other: K) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10)
    }

    def ++[K](other: Tuple1[K]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1)
    }

    def ++[K, L](other: Tuple2[K, L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2)
    }

    def ++[K, L, M](other: Tuple3[K, L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3)
    }

    def ++[K, L, M, N](other: Tuple4[K, L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4)
    }

    def ++[K, L, M, N, O](other: Tuple5[K, L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[K, L, M, N, O, P](other: Tuple6[K, L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[K, L, M, N, O, P, Q](other: Tuple7[K, L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[K, L, M, N, O, P, Q, R](other: Tuple8[K, L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[K, L, M, N, O, P, Q, R, S](other: Tuple9[K, L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[K, L, M, N, O, P, Q, R, S, T](other: Tuple10[K, L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[K, L, M, N, O, P, Q, R, S, T, U](other: Tuple11[K, L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }

    def ++[K, L, M, N, O, P, Q, R, S, T, U, V](other: Tuple12[K, L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11, other._12)
    }
  }

  implicit def tup10ToAdder[A, B, C, D, E, F, G, H, I, J](tup: Tuple10[A, B, C, D, E, F, G, H, I, J]) = new Tuple10Adder(tup)

  class Tuple11Adder[A, B, C, D, E, F, G, H, I, J, K](tup: Tuple11[A, B, C, D, E, F, G, H, I, J, K]) {
    def :+[L](other: L) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other)
    }
    def +:[L](other: L) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11)
    }

    def ++[L](other: Tuple1[L]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1)
    }

    def ++[L, M](other: Tuple2[L, M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2)
    }

    def ++[L, M, N](other: Tuple3[L, M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3)
    }

    def ++[L, M, N, O](other: Tuple4[L, M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4)
    }

    def ++[L, M, N, O, P](other: Tuple5[L, M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[L, M, N, O, P, Q](other: Tuple6[L, M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[L, M, N, O, P, Q, R](other: Tuple7[L, M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[L, M, N, O, P, Q, R, S](other: Tuple8[L, M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[L, M, N, O, P, Q, R, S, T](other: Tuple9[L, M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[L, M, N, O, P, Q, R, S, T, U](other: Tuple10[L, M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }

    def ++[L, M, N, O, P, Q, R, S, T, U, V](other: Tuple11[L, M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10, other._11)
    }
  }

  implicit def tup11ToAdder[A, B, C, D, E, F, G, H, I, J, K](tup: Tuple11[A, B, C, D, E, F, G, H, I, J, K]) = new Tuple11Adder(tup)

  class Tuple12Adder[A, B, C, D, E, F, G, H, I, J, K, L](tup: Tuple12[A, B, C, D, E, F, G, H, I, J, K, L]) {
    def :+[M](other: M) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other)
    }
    def +:[M](other: M) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12)
    }

    def ++[M](other: Tuple1[M]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1)
    }

    def ++[M, N](other: Tuple2[M, N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2)
    }

    def ++[M, N, O](other: Tuple3[M, N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3)
    }

    def ++[M, N, O, P](other: Tuple4[M, N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4)
    }

    def ++[M, N, O, P, Q](other: Tuple5[M, N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[M, N, O, P, Q, R](other: Tuple6[M, N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[M, N, O, P, Q, R, S](other: Tuple7[M, N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[M, N, O, P, Q, R, S, T](other: Tuple8[M, N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[M, N, O, P, Q, R, S, T, U](other: Tuple9[M, N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }

    def ++[M, N, O, P, Q, R, S, T, U, V](other: Tuple10[M, N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9, other._10)
    }
  }

  implicit def tup12ToAdder[A, B, C, D, E, F, G, H, I, J, K, L](tup: Tuple12[A, B, C, D, E, F, G, H, I, J, K, L]) = new Tuple12Adder(tup)

  class Tuple13Adder[A, B, C, D, E, F, G, H, I, J, K, L, M](tup: Tuple13[A, B, C, D, E, F, G, H, I, J, K, L, M]) {
    def :+[N](other: N) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other)
    }
    def +:[N](other: N) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13)
    }

    def ++[N](other: Tuple1[N]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1)
    }

    def ++[N, O](other: Tuple2[N, O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2)
    }

    def ++[N, O, P](other: Tuple3[N, O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3)
    }

    def ++[N, O, P, Q](other: Tuple4[N, O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4)
    }

    def ++[N, O, P, Q, R](other: Tuple5[N, O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[N, O, P, Q, R, S](other: Tuple6[N, O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[N, O, P, Q, R, S, T](other: Tuple7[N, O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[N, O, P, Q, R, S, T, U](other: Tuple8[N, O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }

    def ++[N, O, P, Q, R, S, T, U, V](other: Tuple9[N, O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8, other._9)
    }
  }

  implicit def tup13ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M](tup: Tuple13[A, B, C, D, E, F, G, H, I, J, K, L, M]) = new Tuple13Adder(tup)

  class Tuple14Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N](tup: Tuple14[A, B, C, D, E, F, G, H, I, J, K, L, M, N]) {
    def :+[O](other: O) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other)
    }
    def +:[O](other: O) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14)
    }

    def ++[O](other: Tuple1[O]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1)
    }

    def ++[O, P](other: Tuple2[O, P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2)
    }

    def ++[O, P, Q](other: Tuple3[O, P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3)
    }

    def ++[O, P, Q, R](other: Tuple4[O, P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3, other._4)
    }

    def ++[O, P, Q, R, S](other: Tuple5[O, P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[O, P, Q, R, S, T](other: Tuple6[O, P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[O, P, Q, R, S, T, U](other: Tuple7[O, P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }

    def ++[O, P, Q, R, S, T, U, V](other: Tuple8[O, P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, other._1, other._2, other._3, other._4, other._5, other._6, other._7, other._8)
    }
  }

  implicit def tup14ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N](tup: Tuple14[A, B, C, D, E, F, G, H, I, J, K, L, M, N]) = new Tuple14Adder(tup)

  class Tuple15Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O](tup: Tuple15[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]) {
    def :+[P](other: P) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other)
    }
    def +:[P](other: P) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15)
    }

    def ++[P](other: Tuple1[P]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1)
    }

    def ++[P, Q](other: Tuple2[P, Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2)
    }

    def ++[P, Q, R](other: Tuple3[P, Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2, other._3)
    }

    def ++[P, Q, R, S](other: Tuple4[P, Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2, other._3, other._4)
    }

    def ++[P, Q, R, S, T](other: Tuple5[P, Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[P, Q, R, S, T, U](other: Tuple6[P, Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2, other._3, other._4, other._5, other._6)
    }

    def ++[P, Q, R, S, T, U, V](other: Tuple7[P, Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, other._1, other._2, other._3, other._4, other._5, other._6, other._7)
    }
  }

  implicit def tup15ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O](tup: Tuple15[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]) = new Tuple15Adder(tup)

  class Tuple16Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](tup: Tuple16[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]) {
    def :+[Q](other: Q) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other)
    }
    def +:[Q](other: Q) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16)
    }

    def ++[Q](other: Tuple1[Q]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1)
    }

    def ++[Q, R](other: Tuple2[Q, R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1, other._2)
    }

    def ++[Q, R, S](other: Tuple3[Q, R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1, other._2, other._3)
    }

    def ++[Q, R, S, T](other: Tuple4[Q, R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1, other._2, other._3, other._4)
    }

    def ++[Q, R, S, T, U](other: Tuple5[Q, R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1, other._2, other._3, other._4, other._5)
    }

    def ++[Q, R, S, T, U, V](other: Tuple6[Q, R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, other._1, other._2, other._3, other._4, other._5, other._6)
    }
  }

  implicit def tup16ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](tup: Tuple16[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]) = new Tuple16Adder(tup)

  class Tuple17Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](tup: Tuple17[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) {
    def :+[R](other: R) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other)
    }
    def +:[R](other: R) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17)
    }

    def ++[R](other: Tuple1[R]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other._1)
    }

    def ++[R, S](other: Tuple2[R, S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other._1, other._2)
    }

    def ++[R, S, T](other: Tuple3[R, S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other._1, other._2, other._3)
    }

    def ++[R, S, T, U](other: Tuple4[R, S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other._1, other._2, other._3, other._4)
    }

    def ++[R, S, T, U, V](other: Tuple5[R, S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, other._1, other._2, other._3, other._4, other._5)
    }
  }

  implicit def tup17ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](tup: Tuple17[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]) = new Tuple17Adder(tup)

  class Tuple18Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](tup: Tuple18[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) {
    def :+[S](other: S) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, other)
    }
    def +:[S](other: S) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18)
    }

    def ++[S](other: Tuple1[S]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, other._1)
    }

    def ++[S, T](other: Tuple2[S, T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, other._1, other._2)
    }

    def ++[S, T, U](other: Tuple3[S, T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, other._1, other._2, other._3)
    }

    def ++[S, T, U, V](other: Tuple4[S, T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, other._1, other._2, other._3, other._4)
    }
  }

  implicit def tup18ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](tup: Tuple18[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]) = new Tuple18Adder(tup)

  class Tuple19Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](tup: Tuple19[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) {
    def :+[T](other: T) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, other)
    }
    def +:[T](other: T) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19)
    }

    def ++[T](other: Tuple1[T]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, other._1)
    }

    def ++[T, U](other: Tuple2[T, U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, other._1, other._2)
    }

    def ++[T, U, V](other: Tuple3[T, U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, other._1, other._2, other._3)
    }
  }

  implicit def tup19ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](tup: Tuple19[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]) = new Tuple19Adder(tup)

  class Tuple20Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](tup: Tuple20[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) {
    def :+[U](other: U) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, other)
    }
    def +:[U](other: U) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20)
    }

    def ++[U](other: Tuple1[U]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, other._1)
    }

    def ++[U, V](other: Tuple2[U, V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, other._1, other._2)
    }
  }

  implicit def tup20ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](tup: Tuple20[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]) = new Tuple20Adder(tup)

  class Tuple21Adder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](tup: Tuple21[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) {
    def :+[V](other: V) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, tup._21, other)
    }
    def +:[V](other: V) = {
      (other, tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, tup._21)
    }

    def ++[V](other: Tuple1[V]) = {
      (tup._1, tup._2, tup._3, tup._4, tup._5, tup._6, tup._7, tup._8, tup._9, tup._10, tup._11, tup._12, tup._13, tup._14, tup._15, tup._16, tup._17, tup._18, tup._19, tup._20, tup._21, other._1)
    }
  }

  implicit def tup21ToAdder[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](tup: Tuple21[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]) = new Tuple21Adder(tup)

}
// end of autogenerated




© 2015 - 2025 Weber Informatics LLC | Privacy Policy