// auto generated code, do not modify

pub trait Tuple2: Tuple {
    type Item0;
    type Item1;
}
impl<T0, T1> Tuple2 for (T0, T1) {
    type Item0 = T0;
    type Item1 = T1;
}
pub trait Tuple3: Tuple {
    type Item0;
    type Item1;
    type Item2;
}
impl<T0, T1, T2> Tuple3 for (T0, T1, T2) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
}
pub trait Tuple4: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
}
impl<T0, T1, T2, T3> Tuple4 for (T0, T1, T2, T3) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
}
pub trait Tuple5: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
}
impl<T0, T1, T2, T3, T4> Tuple5 for (T0, T1, T2, T3, T4) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
}
pub trait Tuple6: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
}
impl<T0, T1, T2, T3, T4, T5> Tuple6 for (T0, T1, T2, T3, T4, T5) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
}
pub trait Tuple7: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
}
impl<T0, T1, T2, T3, T4, T5, T6> Tuple7 for (T0, T1, T2, T3, T4, T5, T6) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
}
pub trait Tuple8: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7> Tuple8 for (T0, T1, T2, T3, T4, T5, T6, T7) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
}
pub trait Tuple9: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Tuple9 for (T0, T1, T2, T3, T4, T5, T6, T7, T8) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
}
pub trait Tuple10: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Tuple10 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
}
pub trait Tuple11: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Tuple11 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
}
pub trait Tuple12: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tuple12 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
}
pub trait Tuple13: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tuple13 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
}
pub trait Tuple14: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tuple14 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
}
pub trait Tuple15: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tuple15 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
}
pub trait Tuple16: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Tuple16 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
}
pub trait Tuple17: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Tuple17 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
}
pub trait Tuple18: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Tuple18 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
}
pub trait Tuple19: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Tuple19 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
}
pub trait Tuple20: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Tuple20 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
}
pub trait Tuple21: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Tuple21 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
}
pub trait Tuple22: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Tuple22 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
}
pub trait Tuple23: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Tuple23 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
}
pub trait Tuple24: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Tuple24 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
}
pub trait Tuple25: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tuple25 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
}
pub trait Tuple26: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tuple26 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
}
pub trait Tuple27: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tuple27 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
}
pub trait Tuple28: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
    type Item27;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tuple28 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
    type Item27 = T27;
}
pub trait Tuple29: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
    type Item27;
    type Item28;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tuple29 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
    type Item27 = T27;
    type Item28 = T28;
}
pub trait Tuple30: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
    type Item27;
    type Item28;
    type Item29;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> Tuple30 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
    type Item27 = T27;
    type Item28 = T28;
    type Item29 = T29;
}
pub trait Tuple31: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
    type Item27;
    type Item28;
    type Item29;
    type Item30;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> Tuple31 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
    type Item27 = T27;
    type Item28 = T28;
    type Item29 = T29;
    type Item30 = T30;
}
pub trait Tuple32: Tuple {
    type Item0;
    type Item1;
    type Item2;
    type Item3;
    type Item4;
    type Item5;
    type Item6;
    type Item7;
    type Item8;
    type Item9;
    type Item10;
    type Item11;
    type Item12;
    type Item13;
    type Item14;
    type Item15;
    type Item16;
    type Item17;
    type Item18;
    type Item19;
    type Item20;
    type Item21;
    type Item22;
    type Item23;
    type Item24;
    type Item25;
    type Item26;
    type Item27;
    type Item28;
    type Item29;
    type Item30;
    type Item31;
}
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> Tuple32 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) {
    type Item0 = T0;
    type Item1 = T1;
    type Item2 = T2;
    type Item3 = T3;
    type Item4 = T4;
    type Item5 = T5;
    type Item6 = T6;
    type Item7 = T7;
    type Item8 = T8;
    type Item9 = T9;
    type Item10 = T10;
    type Item11 = T11;
    type Item12 = T12;
    type Item13 = T13;
    type Item14 = T14;
    type Item15 = T15;
    type Item16 = T16;
    type Item17 = T17;
    type Item18 = T18;
    type Item19 = T19;
    type Item20 = T20;
    type Item21 = T21;
    type Item22 = T22;
    type Item23 = T23;
    type Item24 = T24;
    type Item25 = T25;
    type Item26 = T26;
    type Item27 = T27;
    type Item28 = T28;
    type Item29 = T29;
    type Item30 = T30;
    type Item31 = T31;
}
