code: func (i *iNode) copyToGen(gen *generation, ctrie *Ctrie) *iNode {
  	nin := &iNode{gen: gen}
  	main := gcasRead(i, ctrie)
  	atomic.StorePointer(
  		(*unsafe.Pointer)(unsafe.Pointer(&nin.main)), unsafe.Pointer(main))
  	return nin
  }
docs: // copyToGen returns a copy of this I-node copied to the given generation.