We need access to the affiliated keywords to do things like set the name of the element, and only half the element parsers are allowed to have affiliated keywords, so it makes sense to move it inside the specific parsers.
This shows that greater blocks of different types can be directly nested even if they are both special blocks (as long as they are different special blocks).