docs: def ScanByType(self,
                   type_name,
                   after_timestamp=None,
                   include_suffix=False,
                   max_records=None):
      """Scans for stored records.
  
      Scans through the collection, returning stored values ordered by timestamp.
  
      Args:
        type_name: Type of the records to scan.
        after_timestamp: If set, only returns values recorded after timestamp.
        include_suffix: If true, the timestamps returned are pairs of the form
          (micros_since_epoc, suffix) where suffix is a 24 bit random refinement
          to avoid collisions. Otherwise only micros_since_epoc is returned.
        max_records: The maximum number of records to return. Defaults to
          unlimited.
  
      Yields:
        Pairs (timestamp, rdf_value), indicating that rdf_value was stored at
        timestamp.
  
      """
      sub_collection_urn = self.collection_id.Add(type_name)
      sub_collection = sequential_collection.GrrMessageCollection(
          sub_collection_urn)
      for item in sub_collection.Scan(
          after_timestamp=after_timestamp,
          include_suffix=include_suffix,
          max_records=max_records):
        yield item