Move the logic. This required introducing a type parameter to the specs. This refactoring also revealed an issue with our validation here: due to Flow, we weren't strictly checking if e.g. thick member type is used in a thick thread. This diff keeps this issue, and it won't be easy to fix.
Depends on D14640