code: public void validate(String destName, String busName) throws SINotPossibleInCurrentConfigurationException 
    {
      if (tc.isEntryEnabled())
        SibTr.entry(tc, "validate", new Object[] { destName, busName }); 
            
      if (collector.contains(destName, busName))
      {
        // Throw out exception detailing loop    
        // Add the destination name which has triggered the exception to the end
        // of the list, making the problem obvious.
        String chainText = toStringPlus(destName, busName);
        
        CompoundName firstInChain = getFirstInChain();
        
        String nlsMessage = nls.getFormattedMessage(
          "ALIAS_CIRCULAR_DEPENDENCY_ERROR_CWSIP0621",
          new Object[] { firstInChain, chainText, busName },
          null); 
        
        SINotPossibleInCurrentConfigurationException e 
          = new SINotPossibleInCurrentConfigurationException(nlsMessage);
                
        SibTr.exception(tc, e);
          
        if (tc.isEntryEnabled())
          SibTr.exit(tc, "validate", nlsMessage);
  
        throw e;
      }
  
      collector.add(destName, busName);
      
      if (tc.isEntryEnabled())
        SibTr.exit(tc, "validate");     
    }
docs: Check that the given destination, busname combination has not been seen
  before when resolving an alias.  If it has not been seen, we add it to the
  map for checking next time.
  
  @param destName
  @param busName
  @throws SINotPossibleInCurrentConfigurationException  Thrown if a loop has
  been detected.