foo(Tensor x, (Tensor, Tensor) y) -> ((Tensor, Tensor)) foo(Tensor x, (Tensor, Tensor) y) -> ((Tensor, Tensor)) foo(str x, (Tensor, Tensor) y) -> ((str, str)) foo(int x, (Tensor, Tensor) y) -> ((int, int)) foo(bool x, (Tensor, Tensor) y) -> ((bool, bool)) foo(float[3] x, (Tensor, Tensor) y) -> ((float[], float[])) foo(int[2] x, (Tensor, Tensor) y) -> ((int[], int[])) foo(int[] x, (Tensor, Tensor) y) -> ((int[], int[])) foo(int? x, (Tensor, Tensor) y) -> ((int?, int?))