code: func NewHeapWithRecorder(keyFn KeyFunc, lessFn LessFunc, metricRecorder metrics.MetricRecorder) *Heap {
  	return &Heap{
  		data: &heapData{
  			items:    map[string]*heapItem{},
  			queue:    []string{},
  			keyFunc:  keyFn,
  			lessFunc: lessFn,
  		},
  		metricRecorder: metricRecorder,
  	}
  }
docs: // NewHeapWithRecorder wraps an optional metricRecorder to compose a Heap object.