code: @VisibleForTesting
      Counter getCounter(Level level, StackTraceElement stackTraceElement) {
          final String fullyQualifiedClassName = changePeriodsToDashes(stackTraceElement.getClassName());
          //final String lineNumber = Integer.toString(stackTraceElement.getLineNumber());
          @SuppressWarnings("UnnecessaryLocalVariable")
          final String key = fullyQualifiedClassName/* + ':' + lineNumber*/;
          if (!ERRORS_COUNTERS.containsKey(key)) {
              final Counter counter = factory.createCounter(
                      metricObjects, subsystem, fullyQualifiedClassName, /*lineNumber, */level.toString());
  
              // It is possible but highly unlikely that two threads are in this if() block at the same time; if that
              // occurs, only one of the calls to ERRORS_COUNTERS.putIfAbsent(hashCode, counter) in the next line of code
              // will succeed, but the increment of the thread whose call did not succeed will not be lost, because the
              // value returned by this method will be the Counter put successfully by the other thread.
              ERRORS_COUNTERS.putIfAbsent(key, counter);
          }
          return ERRORS_COUNTERS.get(key);
      }
docs: package to create both types of Graphite metrics.