docs: public static HystrixCommandMetrics getInstance(HystrixCommandKey key, HystrixCommandGroupKey commandGroup, HystrixThreadPoolKey threadPoolKey, HystrixCommandProperties properties) {
          // attempt to retrieve from cache first
          HystrixCommandMetrics commandMetrics = metrics.get(key.name());
          if (commandMetrics != null) {
              return commandMetrics;
          } else {
              synchronized (HystrixCommandMetrics.class) {
                  HystrixCommandMetrics existingMetrics = metrics.get(key.name());
                  if (existingMetrics != null) {
                      return existingMetrics;
                  } else {
                      HystrixThreadPoolKey nonNullThreadPoolKey;
                      if (threadPoolKey == null) {
                          nonNullThreadPoolKey = HystrixThreadPoolKey.Factory.asKey(commandGroup.name());
                      } else {
                          nonNullThreadPoolKey = threadPoolKey;
                      }
                      HystrixCommandMetrics newCommandMetrics = new HystrixCommandMetrics(key, commandGroup, nonNullThreadPoolKey, properties, HystrixPlugins.getInstance().getEventNotifier());
                      metrics.putIfAbsent(key.name(), newCommandMetrics);
                      return newCommandMetrics;
                  }
              }
          }
      }