Type inference prototype, supports Subtypes, Type Unions, Function Overloads, and Recursive Types.