docs: public synchronized void removeTarget(
      Conjunction conjunction,
      MatchTarget target)
      throws MatchingException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        tc.entry(this,cclass, "removeTarget", new Object[] { conjunction, target, matchCache });
      OrdinalPosition rootOrd = new OrdinalPosition(0,0);
      SimpleTest test = Factory.findTest(rootOrd, conjunction);
      if (rootId == null || test == null || test.getKind() != SimpleTest.EQ)
      {
        // removal of non-equality on rootId or removal with cacheing disabled
        if (matchTree == null)
        {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            tc.exit(this,cclass, "removeTarget", "matchTree == null");
          throw new MatchingException();
        }
        matchTreeGeneration++;
        try
        {
          matchTree.remove(conjunction, target, subExpr, rootOrd);
        }
        catch (RuntimeException e)
        {
          // No FFDC Code Needed.
          // FFDC driven by wrapper class.
          FFDC.processException(this,
              cclass,
              "com.ibm.ws.sib.matchspace.impl.MatchSpaceImpl.removeTarget",
              e,
              "1:798:1.44");          
  //TODO:        tc.exception(tc, e);
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            tc.exit(this,cclass, "removeTarget", e);  
          throw new MatchingException(e);
        }
        finally
        {
          matchTreeGeneration++;
        }
      }
      else
      {
        // removal of equality match on rootId with cacheing active
        CacheEntry e = (CacheEntry) matchCache.get(test.getValue());
  
        if (e == null || e.exactMatcher == null)
        {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            tc.exit(this,cclass, "removeTarget", "MatchingException");
          throw new MatchingException();
        }
        e.exactGeneration++;
  
        try
        {
          e.exactMatcher =
            e.exactMatcher.remove(conjunction, target, subExpr, rootOrd);
        }
        catch (RuntimeException exc)
        {
          // No FFDC Code Needed.
          // FFDC driven by wrapper class.
          FFDC.processException(this,
              cclass,
              "com.ibm.ws.sib.matchspace.impl.MatchSpaceImpl.removeTarget",
              exc,
              "1:835:1.44");   
  //TODO:        tc.exception(tc, exc);
            
          e.exactGeneration++; // just in case, tho this is probably terminal
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            tc.exit(this,cclass, "removeTarget", "MatchingException");
          throw new MatchingException(exc);
        }
  
        if (e.exactMatcher == null)
        {
          if (e.otherMatchers == null
            || e.matchTreeGeneration != matchTreeGeneration
            || e.otherMatchers.length == 0)
          {
            // This entry can be safely removed and isn't serving an obvious purpose
            matchCache.remove(test.getValue());
            cacheRemoves++;
          }
        }
        e.cachedResults = null; // in any case, result cache is now invalid
        e.exactGeneration++;
      }
      removals++;
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        tc.exit(this,cclass, "removeTarget");
    }