docs: public List<MetricDatum> toMetricData(MetricType metricType, Request<?> request, Response<?> response) {
          if (metricType instanceof Field) {
              // Predefined metrics across all AWS http clients
              Field predefined = (Field) metricType;
              switch(predefined) {
                  case HttpClientRetryCount:
                  case HttpClientPoolAvailableCount:
                  case HttpClientPoolLeasedCount:
                  case HttpClientPoolPendingCount:
                      return metricOfCount(predefined, request, response);
                  case RequestCount:  // intentionally fall through to reuse the same routine as RetryCount
                  case RetryCount:
                      return metricOfRequestOrRetryCount(predefined, request, response);
                  case ThrottledRetryCount: // drop through
                  case RetryCapacityConsumed:
                      return counterMetricOf(predefined, request, response, EXCLUDE_REQUEST_TYPE);
                  case ResponseProcessingTime: // drop through
                  case RequestSigningTime: // drop through
                      return latencyMetricOf(predefined, request, response, EXCLUDE_REQUEST_TYPE);
                  case ClientExecuteTime:
                      return latencyOfClientExecuteTime(request, response);
                  case HttpClientSendRequestTime:
                  case HttpClientReceiveResponseTime:
                  case HttpRequestTime:
                  case HttpSocketReadTime:
                      return latencyMetricOf(predefined, request, response, INCLUDE_REQUEST_TYPE);
                  case Exception:
                  case ThrottleException:
                      return counterMetricOf(predefined, request, response, INCLUDE_REQUEST_TYPE);
                  default:
                      break;
              }
          }
          // Predefined metrics for specific service clients
          for (AWSMetricTransformerFactory aws: AWSMetricTransformerFactory.values()) {
              if (metricType.name().startsWith(aws.name())) {
                  List<MetricDatum> metricData = aws.getRequestMetricTransformer()
                          .toMetricData(metricType, request, response);
                  if (metricData != null)
                      return metricData;
                  break;
              }
          }
          if (log.isDebugEnabled()) {
              AmazonWebServiceRequest origReq = request == null ? null : request
                      .getOriginalRequest();
              String reqClassName = origReq == null ? null : origReq.getClass().getName();
              log.debug("No request metric transformer can be found for metric type "
                      + metricType.name() + " for " + reqClassName);
          }
          return Collections.emptyList();
      }