code: func (l *lexer) lexWhitespace() (int, int) {
  	r := l.next()
  	indent := 0
  	newLines := 0
  	for ; isWhitespace(r); r = l.next() {
  		switch r {
  		case '\r':
  			// Ignore.
  			break
  
  		case '\n':
  			indent = 0
  			newLines++
  			break
  
  		case ' ':
  			indent++
  			break
  
  		// This only works for \t at the beginning of lines, but we strip it everywhere else
  		// anyway.  The only case where this will cause a problem is spaces followed by \t
  		// at the beginning of a line.  However that is rare, ill-advised, and if re-indentation
  		// is enabled it will be fixed later.
  		case '\t':
  			indent += 8
  			break
  		}
  	}
  	l.backup()
  	return newLines, indent
  }
docs: // lexWhitespace consumes all whitespace and returns the number of \n and number of
  // spaces after last \n.  It also converts \t to spaces.
  // The parameter 'r' is the rune that begins the whitespace.