TypeAssertion ::= Expression “as” TypeStuff TypeStuff ::= TypeStuffItem+ TypeStuffItem ::= Block | any token except , ; ) } ] Block ::= ParenBlock | CurlyBracketsBlock | SquareBracketsBlock | AngleBracketsBlock ParenBlock ::= ( ParenBlockItem* ) ParenBlockItem ::= Block | any token except ( )