Allow missing type and message params.
Create an assertion error so the runner will know not to modify it.
Fix up some error message generation.
Throw a SyntaxError when we encounter duplicate declarations.