1foo(Tensor x, (Tensor, Tensor) y) -> ((Tensor, Tensor)) 2foo(Tensor x, (Tensor, Tensor) y) -> ((Tensor, Tensor)) 3foo(str x, (Tensor, Tensor) y) -> ((str, str)) 4foo(int x, (Tensor, Tensor) y) -> ((int, int)) 5foo(bool x, (Tensor, Tensor) y) -> ((bool, bool)) 6foo(float[3] x, (Tensor, Tensor) y) -> ((float[], float[])) 7foo(int[2] x, (Tensor, Tensor) y) -> ((int[], int[])) 8foo(int[] x, (Tensor, Tensor) y) -> ((int[], int[])) 9foo(int? x, (Tensor, Tensor) y) -> ((int?, int?)) 10