type annotation is given, the compiler will infer the type, or signal
an error if insufficient type information is available for definite
inference. Any variables introduced by a variable declaration are visible
-from the point of declaration until the end of the enclosing block scope.
+from the point of declaration until the end of the enclosing block scope,
+except when they are shadowed by another variable declaration.
## Expression statements