@SuppressWarnings("unchecked")
 private boolean containsConflicts(List<DependencyNodeHopCountPair> pairs) {
   ArtifactVersion resolvedVersion = pairs.get(0).extractArtifactVersion();
   for (DependencyNodeHopCountPair pair : pairs) {
     ArtifactVersion version = pair.extractArtifactVersion();
     if (resolvedVersion.compareTo(version) < 0) {
       return true;
     }
   }
   return false;
 }
 public boolean visit(DependencyNode node) {
   DependencyNodeHopCountPair pair = new DependencyNodeHopCountPair(node);
   String key = pair.constructKey();
   List<DependencyNodeHopCountPair> pairs = keyToPairsMap.get(key);
   if (pairs == null) {
     pairs = new ArrayList<DependencyNodeHopCountPair>();
     keyToPairsMap.put(key, pairs);
   }
   pairs.add(pair);
   Collections.sort(pairs);
   return true;
 }
 public List<List<DependencyNode>> getConflicts() {
   List<List<DependencyNode>> output = new ArrayList<List<DependencyNode>>();
   for (List<DependencyNodeHopCountPair> pairs : keyToPairsMap.values()) {
     if (containsConflicts(pairs)) {
       List<DependencyNode> outputSubList = new ArrayList<DependencyNode>(pairs.size());
       for (DependencyNodeHopCountPair pair : pairs) {
         outputSubList.add(pair.getNode());
       }
       output.add(outputSubList);
     }
   }
   return output;
 }
 public int compareTo(DependencyNodeHopCountPair other) {
   return Integer.valueOf(hopCount).compareTo(Integer.valueOf(other.getHopCount()));
 }