code: def check(self,
              targets,
              topological_order=False):
      
      all_vts = self.wrap_targets(targets, topological_order=topological_order)
      invalid_vts = [vt for vt in all_vts if not vt.valid]
      return InvalidationCheck(all_vts, invalid_vts)
docs: Checks whether each of the targets has changed and invalidates it if so.
  
      Returns a list of VersionedTargetSet objects (either valid or invalid). The returned sets
      'cover' the input targets, with one caveat: if the FingerprintStrategy
      opted out of fingerprinting a target because it doesn't contribute to invalidation, then that
      target will be excluded from all_vts and invalid_vts.
  
      Callers can inspect these vts and rebuild the invalid ones, for example.