code: protected void writeSIFsUsingSIFFramework(Map<BioPAXElement, List<Match>> matches,
  		OutputStream out) throws IOException
  	{
  		Map<SIFInteraction, SIFInteraction> sifMap = new HashMap<SIFInteraction, SIFInteraction>();
  
  		for (List<Match> matchList : matches.values())
  		{
  			for (Match match : matchList)
  			{
  				for (SIFInteraction inter : this.createSIFInteraction(match, new CommonIDFetcher()))
  				{
  					if (inter.hasIDs())
  					{
  						if (sifMap.containsKey(inter))
  						{
  							sifMap.get(inter).mergeWith(inter);
  						}
  						else sifMap.put(inter, inter);
  					}
  				}
  			}
  		}
  		OutputStreamWriter writer = new OutputStreamWriter(out);
  
  		boolean first = true;
  		for (SIFInteraction inter : sifMap.keySet())
  		{
  			if (first) first = false;
  			else writer.write("\n");
  
  			writer.write(inter.toString());
  		}
  		writer.flush();
  	}
docs: This method writes the output as pairs of gene symbols of the given two ProteinReference.
  Parameters labels have to map to ProteinReference.
  @param matches the search result
  @param out output stream for text output
  @throws IOException if cannot write to output stream