public static Map<Concept, TreeSet<SNP>> run(
      Map<Concept, LinkedList<Gene>> conceptToGenes, Map<Gene, LinkedList<SNP>> geneToSNPs) {
    Map<Concept, TreeSet<SNP>> map = new HashMap<Concept, TreeSet<SNP>>();

    for (Concept concept : conceptToGenes.keySet()) {
      TreeSet<SNP> snpSet = new TreeSet<SNP>();
      for (Gene gene : conceptToGenes.get(concept)) {
        if (geneToSNPs.containsKey(gene)) {
          concept.addGene(gene);
          for (SNP snp : geneToSNPs.get(gene)) {
            snpSet.add(snp);
            concept.addSNP(snp);
          }
        }
      }
      map.put(concept, snpSet);
    }

    return map;
  }