Theory with multiple types

1. Value type
2. Simple ref type (string?)
3. Struct
4. Complex type
5. Task ? The test might go else where because tasks should never reach this method, so perhaps throw