docs: private void processForwardedAddressExtract(String nodeExtract, ListType type) {
  
          ArrayList<String> list = null;
          if (type == ListType.BY) {
              list = this.forwardedByList;
          }
          if (type == ListType.FOR) {
              list = this.forwardedForList;
          }
  
          //The node identifier is defined by the ABNF syntax as
          //        node     = nodename [ ":" node-port ]
          //                   nodename = IPv4address / "[" IPv6address "]" /
          //                             "unknown" / obfnode
          //As such, to make it equivalent to the de-facto headers, remove the quotations
          //and possible port
          String extract = nodeExtract.replaceAll("\"", "").trim();
          String nodeName = null;
  
          //obfnodes are only allowed to contain ALPHA / DIGIT / "." / "_" / "-"
          //so if the token contains "[", it is an IPv6 address
          int openBracket = extract.indexOf("[");
          int closedBracket = extract.indexOf("]");
  
          if (openBracket > -1) {
              //This is an IPv6address
              //The nodename is enclosed in "[ ]", get it now
  
              //If the first character isn't the open bracket or if a close bracket
              //is not provided, this is a badly formed header
              if (openBracket != 0 || !(closedBracket > -1)) {
                  processForwardedErrorState();
                  //badly formated header
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                      Tr.debug(tc, "Forwarded header IPv6 was malformed.");
                      Tr.exit(tc, "processForwardedHeader");
                  }
                  return;
              }
  
              nodeName = extract.substring(openBracket + 1, closedBracket);
  
              //If this extract contains a port, there will be a ":" after
              //the closing bracket. Only get it if this is the first address
              //being added to the "for" list
              if ((type == ListType.FOR) && list.isEmpty() && extract.contains("]:")) {
                  try {
                      this.forwardedPort = extract.substring(closedBracket + 2);
                  } catch (IndexOutOfBoundsException e) {
                      processForwardedErrorState();
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                          Tr.debug(tc, "Forwarded header IPv6 port was malformed.");
                          Tr.exit(tc, "processForwardedHeader");
                      }
                      return;
                  }
              }
  
          }
  
          //Simply delimit by ":" on other node types to separate nodename and node-port
          else {
  
              if (extract.contains(":")) {
                  int index = extract.indexOf(":");
                  nodeName = extract.substring(0, index);
                  //Record the port if this is the first address being added to the
                  //"for" list, corresponding to the client
                  if ((type == ListType.FOR) && list.isEmpty()) {
                      try {
                          this.forwardedPort = extract.substring(index + 1);
                      } catch (IndexOutOfBoundsException e) {
                          processForwardedErrorState();
                          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                              Tr.debug(tc, "Forwarded header node-port was malformed.");
                              Tr.exit(tc, "processForwardedHeader");
                          }
                          return;
                      }
  
                  }
              }
              //No port or "[ ]" characters, the nodename is the entire provided extract
              else {
                  nodeName = extract;
              }
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.debug(tc, "Forwarded address [" + nodeName + "] being tracked in " + type.toString() + " list.");
              Tr.exit(tc, "processForwardedHeader");
          }
          list.add(nodeName);
      }