docs: public boolean addSelectionCriteria(SelectionCriteria selCriteria)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "addSelectionCriteria", selCriteria);
  
          boolean duplicateCriteria = false;
  
          if (this.selectionCriteriaList == null)
          {
              // If we did not have any on the original creation then
              // create them now.
              this.topics = new String[] { (selCriteria == null) ? null : selCriteria.getDiscriminator() };
              this.selectionCriteriaList = new SelectionCriteria[] { selCriteria };
          }
          else
          {
              // Check that this is not a duplicate of one we already have
              // Loop through the selectionCriteriaList
              for (int i = 0; i < selectionCriteriaList.length; ++i)
              {
  
                  if ((selectionCriteriaList[i] == null && selCriteria == null)
                      || (selectionCriteriaList[i].equals(selCriteria)))
                  {
                      duplicateCriteria = true;
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                          SibTr.debug(tc, "Duplicate selectionCriteria exists");
                      break;
                  }
              }
  
              if (!duplicateCriteria)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, "Adding selection criteria");
                  // Dynamically increases the selectionCriteriaList array size.
                  final SelectionCriteria[] tmp = new SelectionCriteria[selectionCriteriaList.length + 1];
                  System.arraycopy(selectionCriteriaList, 0, tmp, 0, selectionCriteriaList.length);
                  tmp[selectionCriteriaList.length] = selCriteria;
                  selectionCriteriaList = tmp;
  
                  // Dynamically increates the topic array size.
                  final String[] tmptopics = new String[topics.length + 1];
                  System.arraycopy(topics, 0, tmptopics, 0, topics.length);
                  tmptopics[topics.length] = (selCriteria == null) ? null : selCriteria.getDiscriminator();
                  topics = tmptopics;
              }
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "addSelectionCriteria", Boolean.valueOf(duplicateCriteria));
  
          return duplicateCriteria;
      }