As I added more and more cases, I found the dir structure hard to navigate. The new structure follows how you read a type: e.g. []*string -> slice/ptr_string This exposed some redundant cases and some missing cases, too.