docs: def _find_library_candidates(library_names,
                               library_file_extensions,
                               library_search_paths):
      """
      Finds and returns filenames which might be the library you are looking for.
      """
      candidates = set()
      for library_name in library_names:
          for search_path in library_search_paths:
              glob_query = os.path.join(search_path, '*'+library_name+'*')
              for filename in glob.iglob(glob_query):
                  filename = os.path.realpath(filename)
                  if filename in candidates:
                      continue
                  basename = os.path.basename(filename)
                  if basename.startswith('lib'+library_name):
                      basename_end = basename[len('lib'+library_name):]
                  elif basename.startswith(library_name):
                      basename_end = basename[len(library_name):]
                  else:
                      continue
                  for file_extension in library_file_extensions:
                      if basename_end.startswith(file_extension):
                          if basename_end[len(file_extension):][:1] in ('', '.'):
                              candidates.add(filename)
                      if basename_end.endswith(file_extension):
                          basename_middle = basename_end[:-len(file_extension)]
                          if all(c in '0123456789.' for c in basename_middle):
                              candidates.add(filename)
      return candidates