@Dr Herbie: I'm sure you can return anonymous types, if the return type in the signature is T.

Subsequent variables have to be typed T or var, the same goes for input parameters.

 But in practice it usually better to have a "concrete" type instead.