docs: private void removeDiscriminatorNode(Discriminator d) throws DiscriminationProcessException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "removeDiscriminatorNode: " + d);
          }
          if (d == null) {
              DiscriminationProcessException e = new DiscriminationProcessException("Can't remove a null discriminator");
              FFDCFilter.processException(e, getClass().getName() + ".removeDiscriminatorNode", "484", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "removeDiscriminatorNode");
              }
              throw e;
          }
          if (discriminators.disc.equals(d)) {
              // removing the first discriminator
              discriminators = discriminators.next;
              if (discriminators != null) {
                  discriminators.prev = null;
              }
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "removeDiscriminatorNode");
              }
              return;
          }
          // search through the list of discriminators
          DiscriminatorNode thisDN = discriminators.next, lastDN = discriminators;
          while (thisDN.next != null) {
              if (thisDN.disc.equals(d)) {
                  thisDN.next.prev = lastDN;
                  lastDN.next = thisDN.next;
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                      Tr.exit(tc, "removeDiscriminatorNode");
                  }
                  return;
              }
              // somewhere in the middle
              lastDN = thisDN;
              thisDN = thisDN.next;
          }
          if (thisDN.disc.equals(d)) {
              // found it!
              lastDN.next = null;
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "removeDiscriminatorNode");
              }
              return;
          }
          // Does not exist?
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "removeDiscriminatorNode: not found");
          }
          throw new NoSuchElementException();
      }