code: func (iter *Iterator) readFieldHash() int64 {
  	hash := int64(0x811c9dc5)
  	c := iter.nextToken()
  	if c != '"' {
  		iter.ReportError("readFieldHash", `expect ", but found `+string([]byte{c}))
  		return 0
  	}
  	for {
  		for i := iter.head; i < iter.tail; i++ {
  			// require ascii string and no escape
  			b := iter.buf[i]
  			if b == '\\' {
  				iter.head = i
  				for _, b := range iter.readStringSlowPath() {
  					if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive {
  						b += 'a' - 'A'
  					}
  					hash ^= int64(b)
  					hash *= 0x1000193
  				}
  				c = iter.nextToken()
  				if c != ':' {
  					iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c}))
  					return 0
  				}
  				return hash
  			}
  			if b == '"' {
  				iter.head = i + 1
  				c = iter.nextToken()
  				if c != ':' {
  					iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c}))
  					return 0
  				}
  				return hash
  			}
  			if 'A' <= b && b <= 'Z' && !iter.cfg.caseSensitive {
  				b += 'a' - 'A'
  			}
  			hash ^= int64(b)
  			hash *= 0x1000193
  		}
  		if !iter.loadMore() {
  			iter.ReportError("readFieldHash", `incomplete field name`)
  			return 0
  		}
  	}
  }
docs: // CaseInsensitive