docs: protected void setHeaderValue() throws MalformedMessageException {
  
          // Empty header values valid, we'll store a space character for that
          if (null == this.parsedToken) {
              this.parsedToken = new byte[] { BNFHeaders.SPACE };
          }
          if (this.bIsMultiLine) {
              // must append the new value to the old
              byte[] oldValue = this.currentElem.asBytes();
              int size = oldValue.length + this.parsedToken.length + 1;
              if (size > this.limitTokenSize) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "Multiline header value too large: " + size);
                  }
                  throw new MalformedMessageException("Multiline value length: " + size);
              }
              byte[] newValue = new byte[oldValue.length + this.parsedToken.length + 1];
              System.arraycopy(oldValue, 0, newValue, 0, oldValue.length);
              newValue[oldValue.length] = BNFHeaders.SPACE;
              System.arraycopy(this.parsedToken, 0,
                               newValue, oldValue.length + 1, this.parsedToken.length);
              this.currentElem.setByteArrayValue(newValue);
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Saved multiline header value [" + this.currentElem.getDebugValue() + "]");
              }
              // note: header is already saved in storage, we're just updating the
              // value with more data. Don't call add header API.
          } else {
              // just save this value itself
              this.currentElem.setByteArrayValue(this.parsedToken);
              addHeader(this.currentElem, FILTER_YES);
          }
          // now that we have the parsed value saved, start tracking changes/removes
          this.currentElem.startTracking();
      }