Reconstruct missing types

I decided to do this rather than read the data as a Dict because 1) it
is a bit easier and 2) reading the data as a Dict could be extremely
slow if there is a lot of data to be read.