This was just the quick and dirty version so I could get the idea down and working. I will look for a more elegant solution to lists/maps/sets. should I export it as `func (t *TypeInfo) New() interface{}`?