code: public Set<SIFInteraction> searchSIF(final Model model)
  	{
  		if (miners == null) initMiners();
  
  		final Map<SIFInteraction, SIFInteraction> map = new ConcurrentHashMap<SIFInteraction, SIFInteraction>();
  
  		for (final SIFMiner miner : miners)
  		{
  			if (miner instanceof MinerAdapter)
  				((MinerAdapter) miner).setIdMap(new HashMap<BioPAXElement, Set<String>>());
  
  			Map<BioPAXElement,List<Match>> matches = Searcher.search(model, miner.getPattern());
  			for (final List<Match> matchList : matches.values())
  			{
  				for (Match m : matchList)
  				{
  					Set<SIFInteraction> sifs = miner.createSIFInteraction(m, idFetcher);
  					for (SIFInteraction sif : sifs)
  					{
  						if ( sif != null && sif.hasIDs() && !sif.sourceID.equals(sif.targetID)
  								&& (types == null || types.contains(sif.type)) )
  						{
  							SIFInteraction existing = map.get(sif);
  							if(existing != null)
  								existing.mergeWith(sif);
  							else
  								map.put(sif, sif);
  						}
  					}
  				}
  			}
  		}
  
  		return new HashSet<SIFInteraction>(map.values());
  	}
docs: Searches the given model with the contained miners.
  @param model model to search
  @return sif interactions