docs: def _GetTimelineItems(client_id, file_path):
    """Gets timeline items for a given client id and path."""
  
    items = []
  
    for file_path, stat_entry, _ in _GetTimelineStatEntries(
        client_id, file_path, with_history=True):
  
      # It may be that for a given timestamp only hash entry is available, we're
      # skipping those.
      if stat_entry is None:
        continue
  
      # Add a new event for each MAC time if it exists.
      for c in "mac":
        timestamp = getattr(stat_entry, "st_%stime" % c)
        if timestamp is None:
          continue
  
        item = ApiVfsTimelineItem()
        item.timestamp = rdfvalue.RDFDatetime.FromSecondsSinceEpoch(timestamp)
  
        # Remove aff4:/<client_id> to have a more concise path to the
        # subject.
        item.file_path = file_path
        if c == "m":
          item.action = ApiVfsTimelineItem.FileActionType.MODIFICATION
        elif c == "a":
          item.action = ApiVfsTimelineItem.FileActionType.ACCESS
        elif c == "c":
          item.action = ApiVfsTimelineItem.FileActionType.METADATA_CHANGED
  
        items.append(item)
  
    return sorted(items, key=lambda x: x.timestamp, reverse=True)