// writePropertyImpl is an implementation of WriteProperty and // WriteIndexProperty. func writePropertyImpl(buf Buffer, context KeyContext, p *ds.Property, index bool) (err error) { defer recoverTo(&err) it, v := p.IndexTypeAndValue() if !index { it = p.Type() } typb := byte(it) if p.IndexSetting() != ds.NoIndex { typb |= 0x80 } panicIf(buf.WriteByte(typb)) err = writeIndexValue(buf, context, v) return }