code: def _select_target_candidates_for_class(self, classnames, target):
      
      class2deps, no_dep_found = {}, set()
      for classname in classnames:
        if classname not in class2deps:
          candidates_for_class = []
          for tgt in self.dep_analyzer.targets_for_class(target, classname):
            if tgt.is_synthetic and tgt.derived_from:
              tgt = tgt.derived_from
            candidates_for_class.append(tgt.address.spec)
          if candidates_for_class:
            candidates_for_class = StringSimilarityRanker(classname).sort(candidates_for_class)
            class2deps[classname] = OrderedSet(candidates_for_class)
          else:
            no_dep_found.add(classname)
      return class2deps, no_dep_found
docs: Select a target that contains the given classname.
  
      When multiple candidates are available, not uncommon in 3rdparty dependencies,
      they are ranked according to their string similiarities with the classname because
      the way 3rdparty targets are conventionally named often shares similar naming
      structure.