code: func (o *MemoryObject) Hash() Hash {
  	if o.h == ZeroHash && int64(len(o.cont)) == o.sz {
  		o.h = ComputeHash(o.t, o.cont)
  	}
  
  	return o.h
  }
docs: // Hash returns the object Hash, the hash is calculated on-the-fly the first
  // time it's called, in all subsequent calls the same Hash is returned even
  // if the type or the content have changed. The Hash is only generated if the
  // size of the content is exactly the object size.