code: private boolean isScanRootAvailable(URL url)
    {
      for (ScanRoot scanRoot : _pendingScanRoots) {
        if (url.equals(scanRoot.getUrl()))
          return false;
      }
      
      return true;
    }
docs: /*
  public void addScanListener(ScanListenerByteCode listener)
  {
  if (_scanListeners == null) {
  _scanListeners = new ArrayList<>();
  }
  
  int i = 0;
  for (; i < _scanListeners.size(); i++) {
  if (listener.getScanPriority() < _scanListeners.get(i).getScanPriority())
  break;
  }
  _scanListeners.add(i, listener);
  
  ArrayList<URL> urlList = new ArrayList<URL>();
  if (getURLs() != null) {
  for (URL url : getURLs()) {
  if (isScanRootAvailable(url)) {
  urlList.add(url);
  }
  }
  }
  
  if (urlList.size() > 0) {
  try {
  make();
  } catch (Exception e) {
  log().log(Level.WARNING, e.toString(), e);
  
  if (_configException == null) {
  _configException = e;
  }
  }
  
  ArrayList<ScanListenerByteCode> selfList = new ArrayList<>();
  selfList.add(listener);
  ScanManagerByteCode scanManager = new ScanManagerByteCode(selfList);
  
  for (URL url : urlList) {
  scanManager.scan(this, url, null);
  }
  }
  }