code: func CopyHeader(h *Header) *Header {
  	cpy := *h
  	if cpy.Difficulty = new(big.Int); h.Difficulty != nil {
  		cpy.Difficulty.Set(h.Difficulty)
  	}
  	if cpy.Number = new(big.Int); h.Number != nil {
  		cpy.Number.Set(h.Number)
  	}
  	if len(h.Extra) > 0 {
  		cpy.Extra = make([]byte, len(h.Extra))
  		copy(cpy.Extra, h.Extra)
  	}
  	return &cpy
  }
docs: // CopyHeader creates a deep copy of a block header to prevent side effects from
  // modifying a header variable.