using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.CompilerServices;
private static void Bench(Action method,int passes=1000){
var stopwatch = Stopwatch.StartNew();
for(var index=0;index<passes;++index){method();}
Console.WriteLine(stopwatch.Elapsed.TotalMilliseconds + " ms");
public static void Main(string[] args){
var x = (56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56);
var z = x.ToArray<int>();
var z = x.ToArrayList<int>();
var z = x.ToArraySlow<int>();
public static class Extensions{
public static IEnumerable<X> Inline<X>(this ITuple current){
for(var index=0;index<current.Length;++index){
yield return (X)current[index];
public static X[] ToArray<X>(this ITuple current){
return current.Inline<X>().ToArray();
public static X[] ToArrayList<X>(this ITuple current){
for(var index=0;index<current.Length;++index){
x.Add((X)current[index]);
public static X[] ToArraySlow<X>(this ITuple current){
var items = new X[current.Length];
for(var index=0;index<current.Length;++index){
items.Add((X)current[index]);
public static X[] Add<X>(this X[] current,params X[] other){
var result = new X[current.Length + other.Length];
current.CopyTo(result,0);
other.CopyTo(result,current.Length);