def forward(
        self,
        chat_id: Union[int, str],
        disable_notification: bool = None,
        as_copy: bool = False,
        remove_caption: bool = False
    ):
        """Bound method *forward* of :obj:`Message <pyrogram.Messages>`.

        Args:
            chat_id (``int`` | ``str``):
                Unique identifier (int) or username (str) of the target chat.
                For your personal cloud (Saved Messages) you can simply use "me" or "self".
                For a contact that exists in your Telegram address book you can use his phone number (str).

            disable_notification (``bool``, *optional*):
                Sends messages silently.
                Users will receive a notification with no sound.

            as_copy (``bool``, *optional*):
                Pass True to forward messages without the forward header (i.e.: send a copy of the message content).
                Defaults to False.

            remove_caption (``bool``, *optional*):
                If set to True and *as_copy* is enabled as well, media captions are not preserved when copying the
                message. Has no effect if *as_copy* is not enabled.
                Defaults to False.

        Returns:
            On success, a :class:`Messages <pyrogram.Messages>` containing forwarded messages is returned.

        Raises:
            :class:`RPCError <pyrogram.RPCError>`
        """
        forwarded_messages = []

        for message in self.messages:
            forwarded_messages.append(
                message.forward(
                    chat_id=chat_id,
                    as_copy=as_copy,
                    disable_notification=disable_notification,
                    remove_caption=remove_caption
                )
            )

        return Messages(
            total_count=len(forwarded_messages),
            messages=forwarded_messages,
            client=self._client
        )