code: func incrementIP(ip net.IP, index int) net.IP {
  	bigInt := new(big.Int)
  	bigInt.SetBytes([]byte(ip))
  	incr := new(big.Int).Lsh(big.NewInt(1), 128-uint(index))
  	bigInt.Add(bigInt, incr)
  	// bigInt.Bytes can be shorter than 16 bytes, so stick it into a
  	// full-sized net.IP.
  	resultBytes := bigInt.Bytes()
  	if len(resultBytes) > 16 {
  		return net.ParseIP("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
  	}
  	result := make(net.IP, 16)
  	copy(result[16-len(resultBytes):], resultBytes)
  	return result
  }
docs: // incrementIP returns a copy of `ip` incremented at a bit index `index`,
  // or in other words the first IP of the next highest subnet given a mask of
  // length `index`.
  // In order to easily account for overflow, we treat ip as a big.Int and add to
  // it. If the increment overflows the max size of a net.IP, return the highest
  // possible net.IP.