code: private Environment checkVariableDeclaration(Decl.Variable decl, Environment environment) {
  		// Check type is sensible
  		checkNonEmpty(decl, environment);
  		// Check type of initialiser.
  		if (decl.hasInitialiser()) {
  			SemanticType type = checkExpression(decl.getInitialiser(), environment);
  			checkIsSubtype(decl.getType(), type, environment, decl.getInitialiser());
  		}
  		// Done.
  		return environment;
  	}
docs: Type check a variable declaration statement. In particular, when an
  initialiser is given we must check it is well-formed and that it is a subtype
  of the declared type.
  
  @param decl
  Statement to type check
  @param environment
  Determines the type of all variables immediately going into this
  block
  @return