Better errors when a block is given to a method that doesn't expect a block, or viceversa
Show block argument to distinguish different overloads
Syntax error on local variable shadowing with a block argument
Block args are declared in a new scope. Using a block arg outside the block scope is an error.
Error when using return at the top level