code:     protected void populateResponse(Exchange exchange, JettyContentExchange httpExchange,
                                      Message in, HeaderFilterStrategy strategy, int responseCode) throws IOException {
          Message answer = exchange.getOut();
  
          answer.setHeader(Exchange.HTTP_RESPONSE_CODE, responseCode);
  
          // must use response fields to get the http headers as
          // httpExchange.getHeaders() does not work well with multi valued headers
          Map<String, Collection<String>> headers = httpExchange.getResponseHeaders();
          for (Map.Entry<String, Collection<String>> ent : headers.entrySet()) {
              String name = ent.getKey();
              Collection<String> values = ent.getValue();
              for (String value : values) {
                  if (name.toLowerCase().equals("content-type")) {
                      name = Exchange.CONTENT_TYPE;
                      exchange.setProperty(Exchange.CHARSET_NAME, IOHelper.getCharsetNameFromContentType(value));
                  }
                  if (strategy != null && !strategy.applyFilterToExternalHeaders(name, value, exchange)) {
                      HttpHelper.appendHeader(answer.getHeaders(), name, value);
                  }
              }
          }
          
          // preserve headers from in by copying any non existing headers
          // to avoid overriding existing headers with old values
          // We also need to apply the httpProtocolHeaderFilterStrategy to filter the http protocol header
          MessageHelper.copyHeaders(exchange.getIn(), answer, httpProtocolHeaderFilterStrategy, false);
  
          // extract body after headers has been set as we want to ensure content-type from Jetty HttpExchange
          // has been populated first
          answer.setBody(extractResponseBody(exchange, httpExchange));
      }
  
  