code: func (d *Decoder) readName() (ok bool) {
  	var b byte
  	if b, ok = d.mustgetc(); !ok {
  		return
  	}
  	if b < utf8.RuneSelf && !isNameByte(b) {
  		d.ungetc(b)
  		return false
  	}
  	d.buf.WriteByte(b)
  
  	for {
  		if b, ok = d.mustgetc(); !ok {
  			return
  		}
  		if b < utf8.RuneSelf && !isNameByte(b) {
  			d.ungetc(b)
  			break
  		}
  		d.buf.WriteByte(b)
  	}
  	return true
  }
docs: // Read a name and append its bytes to d.buf.
  // The name is delimited by any single-byte character not valid in names.
  // All multi-byte characters are accepted; the caller must check their validity.