code: func (id *HashID) Normalize() error {
  	// encoding/hex encodes using lower-case hexadecimal. Note that this is a
  	// no-op if the ID is already lowercase.
  	idv := strings.ToLower(string(*id))
  
  	if decodeSize := hex.DecodedLen(len(idv)); decodeSize != sha256.Size {
  		return fmt.Errorf("invalid SHA256 hash size (%d != %d)", decodeSize, sha256.Size)
  	}
  	for i, r := range idv {
  		if !strings.ContainsRune(validHashIDChars, r) {
  			return fmt.Errorf("invalid character '%c' at %d", r, i)
  		}
  	}
  	*id = HashID(idv)
  	return nil
  }
docs: // Normalize normalizes the hash ID and verifies its integrity.