code: def fetch(self, chrom_or_region, begin=None, end=None):
          
          if begin is not None and end is None:
              raise ValueError("begin and end must both be None or neither")
          # close tabix file if any and is open
          if self.tabix_file and not self.tabix_file.closed:
              self.tabix_file.close()
          # open tabix file if not yet open
          if not self.tabix_file or self.tabix_file.closed:
              self.tabix_file = pysam.TabixFile(filename=self.path, index=self.tabix_path)
          # jump to the next position
          if begin is None:
              self.tabix_iter = self.tabix_file.fetch(region=chrom_or_region)
          else:
              self.tabix_iter = self.tabix_file.fetch(reference=chrom_or_region, start=begin, end=end)
          return self
docs: Jump to the start position of the given chromosomal position
          and limit iteration to the end position
  
          :param str chrom_or_region: name of the chromosome to jump to if
              begin and end are given and a samtools region string otherwise
              (e.g. "chr1:123,456-123,900").
          :param int begin: 0-based begin position (inclusive)
          :param int end: 0-based end position (exclusive)