switch(subreaders.length)
{
case 2:
return (T)new Pair(data[0], data[1]);
case 3:
return (T)new Tuple3(data[0], data[1], data[2]);
case 4:
return (T)new Tuple4(data[0], data[1], data[2], data[3]);
case 5:
return (T)new Tuple5(data[0], data[1], data[2], data[3], data[4]);
case 8: