func NewID(path string, bits uint) ID {
	if bits == 0 {
		return ID{}
	} else if mx := uint(len(path)) * 8; bits > mx {
		panic(fmt.Sprintf("NewID: bits %d > %d", bits, mx))
	}
	bytes, tailBits := split(bits)
	return newMaskedID(path[:bytes], path[bytes], tailBits)
}
NewID creates a node ID from the given path bytes truncated to the specified
number of bits if necessary. Panics if the number of bits is more than the
byte string contains.
package node
import "fmt"
type ID struct {
	path string
	last byte   
	bits uint8  
}