<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_sound_streams(self):
 """ Return a list of sound 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 = []
        current_stream = None
        # looking in all containers for frames
        for tag in self.all_tags_of_type((TagSoundStreamHead, TagSoundStreamBlock)):
            if isinstance(tag, TagSoundStreamHead):
                # we have a new stream
                current_stream = [ tag ]
                rc.append(current_stream)
            if isinstance(tag, TagSoundStreamBlock):
                # we have a frame for the current stream
                current_stream.append(tag)
        return rc