docs: public void setFlowProperties(Flow[] flows)
      throws SIIncorrectCallException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "setFlowProperties", flows);
  
      try
      {
        // Take the Write Lock for classifications
        classificationWriteLock.lock();
  
        // Disallow null flows
        if(flows == null)
        {
          SIIncorrectCallException e =
            new SIIncorrectCallException(
              nls.getFormattedMessage(
                  "NULL_FLOW_CLASSIFICATIONS_CWSIP0851",
                  new Object[] {
                    "com.ibm.ws.sib.processor.impl.JSConsumerSet.setFlowProperties",
                    "1:877:1.16",
                    label },
                  null));
          
          // FFDC
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.impl.JSConsumerSet.setFlowProperties",
            "1:885:1.16",
            this);
              
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
            SibTr.exit(tc, "setFlowProperties", "SIIncorrectCallException");
          throw e;
        }
      
        // Set up the new classifications for the ConsumerSet
        boolean weightChangeOnly = classifications.setClassifications(flows);
      
        // Need to notify registered keys of the change but only if the flow change is
        // substantive - i.e. more than just a change in the relative weightings of the 
        // current flows.
        if(!weightChangeOnly)
        {
          Iterator<DispatchableKey> it = keyRegistry.iterator();
          while (it.hasNext())
          {
            DispatchableKey key = (DispatchableKey)it.next();
            // Notify the appropriate key
            if(key instanceof LocalQPConsumerKey)
            {
              ((LocalQPConsumerKey)(key)).notifyResetFlowProperties();
            }
            else if(key instanceof LocalQPConsumerKeyGroup)
            {
              ((LocalQPConsumerKeyGroup)(key)).notifyResetFlowProperties();
            }
          }
        }
      }
      catch(InvalidFlowsException ife)
      {
        // FFDC
        FFDCFilter.processException(
          ife,
          "com.ibm.ws.sib.processor.impl.JSConsumerSet.setFlowProperties",
          "1:923:1.16",
          this);
        
        // Map the InvalidFlowsException to an SIIncorrectCallException
        SIIncorrectCallException e =
          new SIIncorrectCallException(
            nls.getFormattedMessage(
                "INVALID_FLOW_CLASSIFICATIONS_CWSIP0852",
                new Object[] {
                  "com.ibm.ws.sib.processor.impl.JSConsumerSet.setFlowProperties",
                  "1:933:1.16",
                  label },
                null));
            
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
          SibTr.exit(tc, "setFlowProperties", "SIIncorrectCallException");
        throw e;
      }
      finally
      {
        // Free the write lock
        classificationWriteLock.unlock();
      }
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "setFlowProperties");        
    }