code: public void setDeferredTrailer(HeaderKeys hdr, HttpTrailerGenerator htg) {
          if (tc.isDebugEnabled()) {
              Tr.debug(tc, "setDeferredTrailer(HeaderKeys): " + hdr);
          }
          if (null == hdr) {
              throw new IllegalArgumentException("Null header name");
          }
          if (null == htg) {
              throw new IllegalArgumentException("Null value generator");
          }
  
          this.knownTGs.put(hdr, htg);
      }
docs: Set a trailer based upon a not-yet established value.
  
  When the deferred trailer is set, it is the users responsibility to
  synchronize the deferred trailer list with the Trailer header field
  up front. For instance if one sets the deferred trailer
  HDR_CONTENT_LANGUAGE, then the trailer header in the head of the HTTP
  request/response should contain "Trailer:Content-Language"
  
  @param hdr
  the header to use.
  @param htg
  the object which will generate the value for this trailer
  dynamically. An <code>HttpTrailerGenerator</code> is called
  immediately after the 0-size chunk is sent, but before closing
  or recycling the connection.
  @throws IllegalArgumentException
  if any parameter is NULL or if the
  header represented is unsupported.