<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def download_tagged(self, profile: Profile, fast_update: bool = False, target: Optional[str] = None, post_filter: Optional[Callable[[Post], bool]] = None) -> None: """Download all posts where a profile is tagged. .. versionadded:: 4.1"""

        if target is None:
            target = profile.username + '/:tagged'
        self.context.log("Retrieving tagged posts for profile {}.".format(profile.username))
        count = 1
        for post in profile.get_tagged_posts():
            self.context.log("[%3i/???] " % (count), end="", flush=True)
            count += 1
            if post_filter is not None and not post_filter(post):
                self.context.log('<{} skipped>'.format(post))
            with self.context.error_catcher('Download tagged {}'.format(profile.username)):
                downloaded = self.download_post(post, target)
                if fast_update and not downloaded:
                    break