code: func (m *Manager) CounterInfoByName(ctx context.Context) (map[string]*types.PerfCounterInfo, error) {
  	m.infoByName.Lock()
  	defer m.infoByName.Unlock()
  
  	if m.infoByName.m != nil {
  		return m.infoByName.m, nil
  	}
  
  	info, err := m.CounterInfo(ctx)
  	if err != nil {
  		return nil, err
  	}
  
  	m.infoByName.m = make(map[string]*types.PerfCounterInfo)
  
  	for i := range info {
  		c := &info[i]
  
  		m.infoByName.m[c.Name()] = c
  	}
  
  	return m.infoByName.m, nil
  }
docs: // CounterInfoByName converts the PerformanceManager.PerfCounter property to a map,
  // where key is types.PerfCounterInfo.Name().