code: func (d *dir) calculateHash() {
  	h := fnv.New64a()
  	h.Write([]byte("dir "))
  	for _, c := range d.children {
  		h.Write([]byte(c.Name()))
  		h.Write([]byte(" "))
  		h.Write(c.Hash())
  	}
  	d.hash = h.Sum([]byte{})
  }
docs: // hash is calculated as the hash of "dir " plus the concatenation, for
  // each child, of its name, a space and its hash.  Children are sorted
  // alphabetically before calculating the hash, so the result is unique.