code: func (nh *NodeHash) hash(node *UnCompiledNode) int64 {
  	// fmt.Println("hash unfrozen")
  	h := int64(0)
  	for arcIdx := 0; arcIdx < node.NumArcs; arcIdx++ {
  		arc := node.Arcs[arcIdx]
  		// fmt.Printf("  label=%v target=%v h=%v output=%v isFinal?=%v\n",
  		// 	arc.label, arc.Target.(*CompiledNode).node, h,
  		// 	nh.fst.outputs.outputToString(arc.output), arc.isFinal)
  		h = PRIME*h + int64(arc.label)
  		n := arc.Target.(*CompiledNode).node
  		h = PRIME*h + int64(n^(n>>32))
  		h = PRIME*h + hashPtr(arc.output)
  		h = PRIME*h + hashPtr(arc.nextFinalOutput)
  		if arc.isFinal {
  			h += 17
  		}
  	}
  	// fmt.Printf("  ret %v\n", int32(h))
  	return h
  }
docs: /* hash code for an unfrozen node. This must be identical to the frozen case (below) !! */