code: @Override
    public void setHeader(String key, String value)
    {
      int tail;
  
      if (_headerSize > 0) {
        tail = (_headerValues[_headerSize - 1].offset()
                + _headerValues[_headerSize - 1].length());
      }
      else {
        tail = 0;
      }
  
      int keyLength = key.length();
      int valueLength = value.length();
      char []headerBuffer = _headerBuffer;
      
      for (int i = keyLength - 1; i >= 0; i--) {
        headerBuffer[tail + i] = key.charAt(i);
      }
  
      _headerKeys[_headerSize].init(headerBuffer, tail, keyLength);
  
      tail += keyLength;
  
      for (int i = valueLength - 1; i >= 0; i--) {
        headerBuffer[tail + i] = value.charAt(i);
      }
  
      _headerValues[_headerSize].init(headerBuffer, tail, valueLength);
      _headerSize++;
      // XXX: size
    }
docs: Adds a new header.  Used only by the caching to simulate
  If-Modified-Since.
  
  @param key the key of the new header
  @param value the value for the new header