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