code: private Stmt parseSwitchStatement(EnclosingScope scope) {
  		int start = index;
  		match(Switch);
  		// NOTE: expression terminated by ':'
  		Expr condition = parseExpression(scope, true);
  		match(Colon);
  		int end = index;
  		matchEndLine();
  		// Match case block
  		Tuple<Stmt.Case> cases = parseCaseBlock(scope);
  		// Done
  		return annotateSourceLocation(new Stmt.Switch(condition, cases), start,end-1);
  	}
docs: Parse a switch statement, which has the form:
  
  <pre>
  SwitchStmt ::= "switch" Expr ':' NewLine CaseStmt+
  
  CaseStmt ::= "case" UnitExpr (',' UnitExpr)* ':' NewLine Block
  </pre>
  
  @see wyc.lang.Stmt.Switch
  
  @param scope
  The enclosing scope for this statement, which determines the
  set of visible (i.e. declared) variables and also the current
  indentation level.
  @return
  @author David J. Pearce