docs: private void createSingleHeader(HeaderKeys key, byte[] value, int offset, int length) {
          HeaderElement elem = findHeader(key);
          if (null != elem) {
              // delete all secondary instances first
              if (null != elem.nextInstance) {
                  HeaderElement temp = elem.nextInstance;
                  while (null != temp) {
                      temp.remove();
                      temp = temp.nextInstance;
                  }
              }
              if (HeaderStorage.NOTSET != this.headerChangeLimit) {
                  // parse buffer reuse is enabled, see if we can use existing obj
                  if (length <= elem.getValueLength()) {
                      this.headerChangeCount++;
                      elem.setByteArrayValue(value, offset, length);
                  } else {
                      elem.remove();
                      elem = null;
                  }
              } else {
                  // parse buffer reuse is disabled
                  elem.setByteArrayValue(value, offset, length);
              }
          }
          if (null == elem) {
              // either it didn't exist or we chose not to re-use the object
              elem = getElement(key);
              elem.setByteArrayValue(value, offset, length);
              addHeader(elem, FILTER_NO);
          } else if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "Replacing header " + key.getName() + " [" + elem.getDebugValue() + "]");
          }
      }