code: public LinkedHashMap getHeadersSorted() {
          if (sortedHeaders != null) {
              return sortedHeaders;
          }
  
          sortedHeaders = new LinkedHashMap<String, String>(headers.size());
  
          List<Map.Entry> headerEntries = new ArrayList(headers.entrySet());
  
          Collections.sort(headerEntries, new HeaderComparator());
  
          for (Map.Entry entry : headerEntries) {
              String name = (String) entry.getKey();
              String value = (String) entry.getValue();
  
              sortedHeaders.put(name, value);
          }
  
          return sortedHeaders;
      }
docs: Returns the map of HTTP headers contained in this message, sorted by
  <u>lower case</u> character order.
  
  If the map of sorted headers has already been created that will be
  returned. Otherwise, a new LinkedHashMap will be constructed and cached
  for future use.
  
  @return A LinkedHashMap containing the sorted HTTP headers, using the
  header names as the hash key
  @see java.util.LinkedHashMap