How do I use the return type of a function with overloads that will be returned in the same function - Theo's Typesafe Cult