code: func parseList(scanner *bufio.Scanner, count int) ([]string, error) {
  	got := 0
  	items := make([]string, 0, count)
  	for {
  		if !scanner.Scan() {
  			if err := scanner.Err(); err != nil {
  				return nil, err
  			}
  			return nil, fmt.Errorf("expected either an empty line or a line with an item, unexpected EOF?")
  		}
  		line := scanner.Text()
  		if line == "" {
  			if got < count {
  				return nil, fmt.Errorf("too few items (declared %d, got %d)", count, got)
  			}
  			break
  		}
  		got++
  		if got > count {
  			return nil, fmt.Errorf("too many items (declared %d)", count)
  		}
  		items = append(items, line)
  	}
  	return items, nil
  }
docs: // parseList parses the list part of a block. It makes sure that there
  // is an exactly expected count of items.