Split declaration and type checking into 2 visitors
Merge branch 'rewrite'
Merge branch 'origin/development'