<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def collect_video_streams(self):
 """ Return a list of video streams in this timeline and its children. The streams are returned in order with respect to the timeline. A stream is returned as a list: the first element is the tag which introduced that stream; other elements are the tags which made up the stream body (if any). """

        rc = []
        streams_by_id = {}

        # scan first for all streams
        for t in self.all_tags_of_type(TagDefineVideoStream):
            stream = [ t ]
            streams_by_id[t.characterId] = stream
            rc.append(stream)

        # then find the frames
        for t in self.all_tags_of_type(TagVideoFrame):
            # we have a frame for the /named/ stream
            assert t.streamId in streams_by_id
            streams_by_id[t.streamId].append(t)

        return rc