Make use of final for temporaries
Make StatementVisitor a struct
Make ExpressionVisitor a struct