I haven't looked at D yet, but... yuck! `var` for return types in a method signature is seriously unhelpful!
If the docs are filled with this, then D is certainly coming off my list of langs to look at.
For functions that can return different types, I think interfaces or union types would be more helpful (not sure if D supports either though).