···291291292292type LabelState struct {
293293 inner map[string]set
294294+ names map[string]string
294295}
295296296297func NewLabelState() LabelState {
297298 return LabelState{
298299 inner: make(map[string]set),
300300+ names: make(map[string]string),
299301 }
300302}
301303304304+func (s LabelState) LabelNames() []string {
305305+ var result []string
306306+ for key, valset := range s.inner {
307307+ if valset == nil {
308308+ continue
309309+ }
310310+ if name, ok := s.names[key]; ok {
311311+ result = append(result, name)
312312+ }
313313+ }
314314+ return result
315315+}
316316+302317func (s LabelState) Inner() map[string]set {
303318 return s.inner
319319+}
320320+321321+func (s LabelState) SetName(key, name string) {
322322+ s.names[key] = name
304323}
305324306325func (s LabelState) ContainsLabel(l string) bool {
···347366 // this def was deleted, but an op exists, so we just skip over the op
348367 return nil
349368 }
369369+370370+ state.names[op.OperandKey] = def.Name
350371351372 switch op.Operation {
352373 case LabelOperationAdd: