Initial implementation of struct-type contract generation.

Can you add comments about what `struct-type/c` is designed to protect and how the current implementation actually works.