code: func positionAfterWhitespace(body []byte, startPosition int) (position int, runePosition int) {
  	bodyLength := len(body)
  	position = startPosition
  	runePosition = startPosition
  	for {
  		if position < bodyLength {
  			code, n := runeAt(body, position)
  
  			// Skip Ignored
  			if code == 0xFEFF || // BOM
  				// White Space
  				code == 0x0009 || // tab
  				code == 0x0020 || // space
  				// Line Terminator
  				code == 0x000A || // new line
  				code == 0x000D || // carriage return
  				// Comma
  				code == 0x002C {
  				position += n
  				runePosition++
  			} else if code == 35 { // #
  				position += n
  				runePosition++
  				for {
  					code, n := runeAt(body, position)
  					if position < bodyLength &&
  						code != 0 &&
  						// SourceCharacter but not LineTerminator
  						(code > 0x001F || code == 0x0009) && code != 0x000A && code != 0x000D {
  						position += n
  						runePosition++
  						continue
  					} else {
  						break
  					}
  				}
  			} else {
  				break
  			}
  			continue
  		} else {
  			break
  		}
  	}
  	return position, runePosition
  }
docs: // Reads from body starting at startPosition until it finds a non-whitespace
  // or commented character, then returns the position of that character for lexing.
  // lexing.
  // Returns both byte positions and rune position