docs: def index_file(self, f, overwrite=False):
          """Index metadata for the specified file.
  
          Args:
              f (BIDSFile, str): A BIDSFile or path to an indexed file.
              overwrite (bool): If True, forces reindexing of the file even if
                  an entry already exists.
          """
          if isinstance(f, six.string_types):
              f = self.layout.get_file(f)
  
          if f.path in self.file_index and not overwrite:
              return
  
          if 'suffix' not in f.entities:  # Skip files without suffixes
              return
  
          md = self._get_metadata(f.path)
  
          for md_key, md_val in md.items():
              if md_key not in self.key_index:
                  self.key_index[md_key] = {}
              self.key_index[md_key][f.path] = md_val
              self.file_index[f.path][md_key] = md_val