@SuppressWarnings("unchecked")
    public static <T1, T2, T3> Tuple3<T1, T2, T3>[] zip(T1[] arr1, T2[] arr2, T3[] arr3) {
        int resultSize = _max(arr1.length, arr2.length, arr3.length);
        Tuple3[] result = new Tuple3[resultSize];

        for (int i = 0; i < resultSize; i++)
            result[i] = tuple(next(arr1, i), next(arr2, i), next(arr3, i));

        return result;
    }
@ SuppressWarnings ( "unchecked" ) public static < T1 , T2 , T3 > Tuple3 < T1 , T2 , T3 > [ ] zip ( T1 [ ] arr1 , T2 [ ] arr2 , T3 [ ] arr3 ) { int resultSize = _max ( arr1 . length , arr2 . length , arr3 . length ) ; Tuple3 [ ] result = new Tuple3 [ resultSize ] ; for ( int i = 0 ; i < resultSize ; i ++ ) result [ i ] = tuple ( next ( arr1 , i ) , next ( arr2 , i ) , next ( arr3 , i ) ) ; return result ; }
Zips arrays into single array of tuples

@return