#![allow(clippy::wrong_self_convention)]
#![allow(clippy::redundant_closure_for_method_calls)]
pub mod core;
use crate::types::Update;
use core::SmartFilterPath;
use std::sync::Arc;
pub struct SmartFilter;
impl SmartFilter {
    #[must_use]
    pub fn update() -> SmartFilterPath<Update> {
        SmartFilterPath {
            accessor: Arc::new(|update| Some(update)),
        }
    }

    #[must_use]
    pub fn actor_chat() -> SmartFilterPath<crate::types::Chat> {
        Self::update().actor_chat()
    }

    #[must_use]
    pub fn animation() -> SmartFilterPath<crate::types::Animation> {
        Self::update().animation()
    }

    #[must_use]
    pub fn audio() -> SmartFilterPath<crate::types::Audio> {
        Self::update().audio()
    }

    #[must_use]
    pub fn author_signature() -> SmartFilterPath<str> {
        Self::update().author_signature()
    }

    #[must_use]
    pub fn bio() -> SmartFilterPath<str> {
        Self::update().bio()
    }

    #[must_use]
    pub fn boost() -> SmartFilterPath<crate::types::ChatBoost> {
        Self::update().boost()
    }

    #[must_use]
    pub fn boost_added() -> SmartFilterPath<crate::types::ChatBoostAdded> {
        Self::update().boost_added()
    }

    #[must_use]
    pub fn boost_id() -> SmartFilterPath<str> {
        Self::update().boost_id()
    }

    #[must_use]
    pub fn bot() -> SmartFilterPath<crate::types::User> {
        Self::update().bot()
    }

    #[must_use]
    pub fn business_connection() -> SmartFilterPath<crate::types::BusinessConnection> {
        Self::update().business_connection()
    }

    #[must_use]
    pub fn business_connection_id() -> SmartFilterPath<str> {
        Self::update().business_connection_id()
    }

    #[must_use]
    pub fn business_message() -> SmartFilterPath<crate::types::Message> {
        Self::update().business_message()
    }

    #[must_use]
    pub fn callback_query() -> SmartFilterPath<crate::types::CallbackQuery> {
        Self::update().callback_query()
    }

    #[must_use]
    pub fn caption() -> SmartFilterPath<str> {
        Self::update().caption()
    }

    #[must_use]
    pub fn caption_entities() -> SmartFilterPath<[crate::types::MessageEntity]> {
        Self::update().caption_entities()
    }

    #[must_use]
    pub fn channel_post() -> SmartFilterPath<crate::types::Message> {
        Self::update().channel_post()
    }

    #[must_use]
    pub fn chat() -> SmartFilterPath<crate::types::Chat> {
        Self::update().chat()
    }

    #[must_use]
    pub fn chat_background_set() -> SmartFilterPath<crate::types::ChatBackground> {
        Self::update().chat_background_set()
    }

    #[must_use]
    pub fn chat_boost() -> SmartFilterPath<crate::types::ChatBoostUpdated> {
        Self::update().chat_boost()
    }

    #[must_use]
    pub fn chat_instance() -> SmartFilterPath<str> {
        Self::update().chat_instance()
    }

    #[must_use]
    pub fn chat_join_request() -> SmartFilterPath<crate::types::ChatJoinRequest> {
        Self::update().chat_join_request()
    }

    #[must_use]
    pub fn chat_member() -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        Self::update().chat_member()
    }

    #[must_use]
    pub fn chat_owner_changed() -> SmartFilterPath<crate::types::ChatOwnerChanged> {
        Self::update().chat_owner_changed()
    }

    #[must_use]
    pub fn chat_owner_left() -> SmartFilterPath<crate::types::ChatOwnerLeft> {
        Self::update().chat_owner_left()
    }

    #[must_use]
    pub fn chat_shared() -> SmartFilterPath<crate::types::ChatShared> {
        Self::update().chat_shared()
    }

    #[must_use]
    pub fn chat_type() -> SmartFilterPath<str> {
        Self::update().chat_type()
    }

    #[must_use]
    pub fn checklist() -> SmartFilterPath<crate::types::Checklist> {
        Self::update().checklist()
    }

    #[must_use]
    pub fn checklist_tasks_added() -> SmartFilterPath<crate::types::ChecklistTasksAdded> {
        Self::update().checklist_tasks_added()
    }

    #[must_use]
    pub fn checklist_tasks_done() -> SmartFilterPath<crate::types::ChecklistTasksDone> {
        Self::update().checklist_tasks_done()
    }

    #[must_use]
    pub fn chosen_inline_result() -> SmartFilterPath<crate::types::ChosenInlineResult> {
        Self::update().chosen_inline_result()
    }

    #[must_use]
    pub fn connected_website() -> SmartFilterPath<str> {
        Self::update().connected_website()
    }

    #[must_use]
    pub fn contact() -> SmartFilterPath<crate::types::Contact> {
        Self::update().contact()
    }

    #[must_use]
    pub fn correct_option_ids() -> SmartFilterPath<[i64]> {
        Self::update().correct_option_ids()
    }

    #[must_use]
    pub fn country_codes() -> SmartFilterPath<[Box<str>]> {
        Self::update().country_codes()
    }

    #[must_use]
    pub fn currency() -> SmartFilterPath<str> {
        Self::update().currency()
    }

    #[must_use]
    pub fn data() -> SmartFilterPath<str> {
        Self::update().data()
    }

    #[must_use]
    pub fn deleted_business_messages() -> SmartFilterPath<crate::types::BusinessMessagesDeleted> {
        Self::update().deleted_business_messages()
    }

    #[must_use]
    pub fn description() -> SmartFilterPath<str> {
        Self::update().description()
    }

    #[must_use]
    pub fn description_entities() -> SmartFilterPath<[crate::types::MessageEntity]> {
        Self::update().description_entities()
    }

    #[must_use]
    pub fn dice() -> SmartFilterPath<crate::types::Dice> {
        Self::update().dice()
    }

    #[must_use]
    pub fn direct_message_price_changed() -> SmartFilterPath<crate::types::DirectMessagePriceChanged>
    {
        Self::update().direct_message_price_changed()
    }

    #[must_use]
    pub fn direct_messages_topic() -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        Self::update().direct_messages_topic()
    }

    #[must_use]
    pub fn document() -> SmartFilterPath<crate::types::Document> {
        Self::update().document()
    }

    #[must_use]
    pub fn edited_business_message() -> SmartFilterPath<crate::types::Message> {
        Self::update().edited_business_message()
    }

    #[must_use]
    pub fn edited_channel_post() -> SmartFilterPath<crate::types::Message> {
        Self::update().edited_channel_post()
    }

    #[must_use]
    pub fn edited_message() -> SmartFilterPath<crate::types::Message> {
        Self::update().edited_message()
    }

    #[must_use]
    pub fn effect_id() -> SmartFilterPath<str> {
        Self::update().effect_id()
    }

    #[must_use]
    pub fn entities() -> SmartFilterPath<[crate::types::MessageEntity]> {
        Self::update().entities()
    }

    #[must_use]
    pub fn explanation() -> SmartFilterPath<str> {
        Self::update().explanation()
    }

    #[must_use]
    pub fn explanation_entities() -> SmartFilterPath<[crate::types::MessageEntity]> {
        Self::update().explanation_entities()
    }

    #[must_use]
    pub fn explanation_media() -> SmartFilterPath<crate::types::PollMedia> {
        Self::update().explanation_media()
    }

    #[must_use]
    pub fn external_reply() -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        Self::update().external_reply()
    }

    #[must_use]
    pub fn forum_topic_closed() -> SmartFilterPath<crate::types::ForumTopicClosed> {
        Self::update().forum_topic_closed()
    }

    #[must_use]
    pub fn forum_topic_created() -> SmartFilterPath<crate::types::ForumTopicCreated> {
        Self::update().forum_topic_created()
    }

    #[must_use]
    pub fn forum_topic_edited() -> SmartFilterPath<crate::types::ForumTopicEdited> {
        Self::update().forum_topic_edited()
    }

    #[must_use]
    pub fn forum_topic_reopened() -> SmartFilterPath<crate::types::ForumTopicReopened> {
        Self::update().forum_topic_reopened()
    }

    #[must_use]
    pub fn forward_origin() -> SmartFilterPath<crate::types::MessageOrigin> {
        Self::update().forward_origin()
    }

    #[must_use]
    pub fn from() -> SmartFilterPath<crate::types::User> {
        Self::update().from()
    }

    #[must_use]
    pub fn game() -> SmartFilterPath<crate::types::Game> {
        Self::update().game()
    }

    #[must_use]
    pub fn game_short_name() -> SmartFilterPath<str> {
        Self::update().game_short_name()
    }

    #[must_use]
    pub fn general_forum_topic_hidden() -> SmartFilterPath<crate::types::GeneralForumTopicHidden> {
        Self::update().general_forum_topic_hidden()
    }

    #[must_use]
    pub fn general_forum_topic_unhidden() -> SmartFilterPath<crate::types::GeneralForumTopicUnhidden>
    {
        Self::update().general_forum_topic_unhidden()
    }

    #[must_use]
    pub fn gift() -> SmartFilterPath<crate::types::GiftInfo> {
        Self::update().gift()
    }

    #[must_use]
    pub fn gift_upgrade_sent() -> SmartFilterPath<crate::types::GiftInfo> {
        Self::update().gift_upgrade_sent()
    }

    #[must_use]
    pub fn giveaway() -> SmartFilterPath<crate::types::Giveaway> {
        Self::update().giveaway()
    }

    #[must_use]
    pub fn giveaway_completed() -> SmartFilterPath<crate::types::GiveawayCompleted> {
        Self::update().giveaway_completed()
    }

    #[must_use]
    pub fn giveaway_created() -> SmartFilterPath<crate::types::GiveawayCreated> {
        Self::update().giveaway_created()
    }

    #[must_use]
    pub fn giveaway_winners() -> SmartFilterPath<crate::types::GiveawayWinners> {
        Self::update().giveaway_winners()
    }

    #[must_use]
    pub fn guest_bot_caller_chat() -> SmartFilterPath<crate::types::Chat> {
        Self::update().guest_bot_caller_chat()
    }

    #[must_use]
    pub fn guest_bot_caller_user() -> SmartFilterPath<crate::types::User> {
        Self::update().guest_bot_caller_user()
    }

    #[must_use]
    pub fn guest_message() -> SmartFilterPath<crate::types::Message> {
        Self::update().guest_message()
    }

    #[must_use]
    pub fn guest_query_id() -> SmartFilterPath<str> {
        Self::update().guest_query_id()
    }

    #[must_use]
    pub fn id() -> SmartFilterPath<str> {
        Self::update().id()
    }

    #[must_use]
    pub fn inline_message_id() -> SmartFilterPath<str> {
        Self::update().inline_message_id()
    }

    #[must_use]
    pub fn inline_query() -> SmartFilterPath<crate::types::InlineQuery> {
        Self::update().inline_query()
    }

    #[must_use]
    pub fn invite_link() -> SmartFilterPath<crate::types::ChatInviteLink> {
        Self::update().invite_link()
    }

    #[must_use]
    pub fn invoice() -> SmartFilterPath<crate::types::Invoice> {
        Self::update().invoice()
    }

    #[must_use]
    pub fn invoice_payload() -> SmartFilterPath<str> {
        Self::update().invoice_payload()
    }

    #[must_use]
    pub fn left_chat_member() -> SmartFilterPath<crate::types::User> {
        Self::update().left_chat_member()
    }

    #[must_use]
    pub fn link_preview_options() -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        Self::update().link_preview_options()
    }

    #[must_use]
    pub fn live_photo() -> SmartFilterPath<crate::types::LivePhoto> {
        Self::update().live_photo()
    }

    #[must_use]
    pub fn location() -> SmartFilterPath<crate::types::Location> {
        Self::update().location()
    }

    #[must_use]
    pub fn managed_bot() -> SmartFilterPath<crate::types::ManagedBotUpdated> {
        Self::update().managed_bot()
    }

    #[must_use]
    pub fn managed_bot_created() -> SmartFilterPath<crate::types::ManagedBotCreated> {
        Self::update().managed_bot_created()
    }

    #[must_use]
    pub fn media() -> SmartFilterPath<crate::types::PollMedia> {
        Self::update().media()
    }

    #[must_use]
    pub fn media_group_id() -> SmartFilterPath<str> {
        Self::update().media_group_id()
    }

    #[must_use]
    pub fn message() -> SmartFilterPath<crate::types::Message> {
        Self::update().message()
    }

    #[must_use]
    pub fn message_auto_delete_timer_changed(
    ) -> SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
        Self::update().message_auto_delete_timer_changed()
    }

    #[must_use]
    pub fn message_ids() -> SmartFilterPath<[i64]> {
        Self::update().message_ids()
    }

    #[must_use]
    pub fn message_reaction() -> SmartFilterPath<crate::types::MessageReactionUpdated> {
        Self::update().message_reaction()
    }

    #[must_use]
    pub fn message_reaction_count() -> SmartFilterPath<crate::types::MessageReactionCountUpdated> {
        Self::update().message_reaction_count()
    }

    #[must_use]
    pub fn my_chat_member() -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        Self::update().my_chat_member()
    }

    #[must_use]
    pub fn new_chat_member() -> SmartFilterPath<crate::types::ChatMember> {
        Self::update().new_chat_member()
    }

    #[must_use]
    pub fn new_chat_members() -> SmartFilterPath<[crate::types::User]> {
        Self::update().new_chat_members()
    }

    #[must_use]
    pub fn new_chat_photo() -> SmartFilterPath<[crate::types::PhotoSize]> {
        Self::update().new_chat_photo()
    }

    #[must_use]
    pub fn new_chat_title() -> SmartFilterPath<str> {
        Self::update().new_chat_title()
    }

    #[must_use]
    pub fn new_reaction() -> SmartFilterPath<[crate::types::ReactionType]> {
        Self::update().new_reaction()
    }

    #[must_use]
    pub fn offset() -> SmartFilterPath<str> {
        Self::update().offset()
    }

    #[must_use]
    pub fn old_chat_member() -> SmartFilterPath<crate::types::ChatMember> {
        Self::update().old_chat_member()
    }

    #[must_use]
    pub fn old_reaction() -> SmartFilterPath<[crate::types::ReactionType]> {
        Self::update().old_reaction()
    }

    #[must_use]
    pub fn option_ids() -> SmartFilterPath<[i64]> {
        Self::update().option_ids()
    }

    #[must_use]
    pub fn option_persistent_ids() -> SmartFilterPath<[Box<str>]> {
        Self::update().option_persistent_ids()
    }

    #[must_use]
    pub fn options() -> SmartFilterPath<[crate::types::PollOption]> {
        Self::update().options()
    }

    #[must_use]
    pub fn order_info() -> SmartFilterPath<crate::types::OrderInfo> {
        Self::update().order_info()
    }

    #[must_use]
    pub fn paid_media() -> SmartFilterPath<crate::types::PaidMediaInfo> {
        Self::update().paid_media()
    }

    #[must_use]
    pub fn paid_media_payload() -> SmartFilterPath<str> {
        Self::update().paid_media_payload()
    }

    #[must_use]
    pub fn paid_message_price_changed() -> SmartFilterPath<crate::types::PaidMessagePriceChanged> {
        Self::update().paid_message_price_changed()
    }

    #[must_use]
    pub fn passport_data() -> SmartFilterPath<crate::types::PassportData> {
        Self::update().passport_data()
    }

    #[must_use]
    pub fn photo() -> SmartFilterPath<[crate::types::PhotoSize]> {
        Self::update().photo()
    }

    #[must_use]
    pub fn pinned_message() -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        Self::update().pinned_message()
    }

    #[must_use]
    pub fn poll() -> SmartFilterPath<crate::types::Poll> {
        Self::update().poll()
    }

    #[must_use]
    pub fn poll_answer() -> SmartFilterPath<crate::types::PollAnswer> {
        Self::update().poll_answer()
    }

    #[must_use]
    pub fn poll_id() -> SmartFilterPath<str> {
        Self::update().poll_id()
    }

    #[must_use]
    pub fn poll_option_added() -> SmartFilterPath<crate::types::PollOptionAdded> {
        Self::update().poll_option_added()
    }

    #[must_use]
    pub fn poll_option_deleted() -> SmartFilterPath<crate::types::PollOptionDeleted> {
        Self::update().poll_option_deleted()
    }

    #[must_use]
    pub fn pre_checkout_query() -> SmartFilterPath<crate::types::PreCheckoutQuery> {
        Self::update().pre_checkout_query()
    }

    #[must_use]
    pub fn proximity_alert_triggered() -> SmartFilterPath<crate::types::ProximityAlertTriggered> {
        Self::update().proximity_alert_triggered()
    }

    #[must_use]
    pub fn purchased_paid_media() -> SmartFilterPath<crate::types::PaidMediaPurchased> {
        Self::update().purchased_paid_media()
    }

    #[must_use]
    pub fn query() -> SmartFilterPath<str> {
        Self::update().query()
    }

    #[must_use]
    pub fn question() -> SmartFilterPath<str> {
        Self::update().question()
    }

    #[must_use]
    pub fn question_entities() -> SmartFilterPath<[crate::types::MessageEntity]> {
        Self::update().question_entities()
    }

    #[must_use]
    pub fn quote() -> SmartFilterPath<crate::types::TextQuote> {
        Self::update().quote()
    }

    #[must_use]
    pub fn reactions() -> SmartFilterPath<[crate::types::ReactionCount]> {
        Self::update().reactions()
    }

    #[must_use]
    pub fn refunded_payment() -> SmartFilterPath<crate::types::RefundedPayment> {
        Self::update().refunded_payment()
    }

    #[must_use]
    pub fn removed_chat_boost() -> SmartFilterPath<crate::types::ChatBoostRemoved> {
        Self::update().removed_chat_boost()
    }

    #[must_use]
    pub fn reply_markup() -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        Self::update().reply_markup()
    }

    #[must_use]
    pub fn reply_to_message() -> SmartFilterPath<crate::types::Message> {
        Self::update().reply_to_message()
    }

    #[must_use]
    pub fn reply_to_poll_option_id() -> SmartFilterPath<str> {
        Self::update().reply_to_poll_option_id()
    }

    #[must_use]
    pub fn reply_to_story() -> SmartFilterPath<crate::types::Story> {
        Self::update().reply_to_story()
    }

    #[must_use]
    pub fn result_id() -> SmartFilterPath<str> {
        Self::update().result_id()
    }

    #[must_use]
    pub fn rights() -> SmartFilterPath<crate::types::BusinessBotRights> {
        Self::update().rights()
    }

    #[must_use]
    pub fn sender_business_bot() -> SmartFilterPath<crate::types::User> {
        Self::update().sender_business_bot()
    }

    #[must_use]
    pub fn sender_chat() -> SmartFilterPath<crate::types::Chat> {
        Self::update().sender_chat()
    }

    #[must_use]
    pub fn sender_tag() -> SmartFilterPath<str> {
        Self::update().sender_tag()
    }

    #[must_use]
    pub fn shipping_address() -> SmartFilterPath<crate::types::ShippingAddress> {
        Self::update().shipping_address()
    }

    #[must_use]
    pub fn shipping_option_id() -> SmartFilterPath<str> {
        Self::update().shipping_option_id()
    }

    #[must_use]
    pub fn shipping_query() -> SmartFilterPath<crate::types::ShippingQuery> {
        Self::update().shipping_query()
    }

    #[must_use]
    pub fn source() -> SmartFilterPath<crate::types::ChatBoostSource> {
        Self::update().source()
    }

    #[must_use]
    pub fn sticker() -> SmartFilterPath<crate::types::Sticker> {
        Self::update().sticker()
    }

    #[must_use]
    pub fn story() -> SmartFilterPath<crate::types::Story> {
        Self::update().story()
    }

    #[must_use]
    pub fn successful_payment() -> SmartFilterPath<crate::types::SuccessfulPayment> {
        Self::update().successful_payment()
    }

    #[must_use]
    pub fn suggested_post_approval_failed(
    ) -> SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
        Self::update().suggested_post_approval_failed()
    }

    #[must_use]
    pub fn suggested_post_approved() -> SmartFilterPath<crate::types::SuggestedPostApproved> {
        Self::update().suggested_post_approved()
    }

    #[must_use]
    pub fn suggested_post_declined() -> SmartFilterPath<crate::types::SuggestedPostDeclined> {
        Self::update().suggested_post_declined()
    }

    #[must_use]
    pub fn suggested_post_info() -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        Self::update().suggested_post_info()
    }

    #[must_use]
    pub fn suggested_post_paid() -> SmartFilterPath<crate::types::SuggestedPostPaid> {
        Self::update().suggested_post_paid()
    }

    #[must_use]
    pub fn suggested_post_refunded() -> SmartFilterPath<crate::types::SuggestedPostRefunded> {
        Self::update().suggested_post_refunded()
    }

    #[must_use]
    pub fn text() -> SmartFilterPath<str> {
        Self::update().text()
    }

    #[must_use]
    pub fn unique_gift() -> SmartFilterPath<crate::types::UniqueGiftInfo> {
        Self::update().unique_gift()
    }

    #[must_use]
    pub fn user() -> SmartFilterPath<crate::types::User> {
        Self::update().user()
    }

    #[must_use]
    pub fn users_shared() -> SmartFilterPath<crate::types::UsersShared> {
        Self::update().users_shared()
    }

    #[must_use]
    pub fn venue() -> SmartFilterPath<crate::types::Venue> {
        Self::update().venue()
    }

    #[must_use]
    pub fn via_bot() -> SmartFilterPath<crate::types::User> {
        Self::update().via_bot()
    }

    #[must_use]
    pub fn video() -> SmartFilterPath<crate::types::Video> {
        Self::update().video()
    }

    #[must_use]
    pub fn video_chat_ended() -> SmartFilterPath<crate::types::VideoChatEnded> {
        Self::update().video_chat_ended()
    }

    #[must_use]
    pub fn video_chat_participants_invited(
    ) -> SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
        Self::update().video_chat_participants_invited()
    }

    #[must_use]
    pub fn video_chat_scheduled() -> SmartFilterPath<crate::types::VideoChatScheduled> {
        Self::update().video_chat_scheduled()
    }

    #[must_use]
    pub fn video_chat_started() -> SmartFilterPath<crate::types::VideoChatStarted> {
        Self::update().video_chat_started()
    }

    #[must_use]
    pub fn video_note() -> SmartFilterPath<crate::types::VideoNote> {
        Self::update().video_note()
    }

    #[must_use]
    pub fn voice() -> SmartFilterPath<crate::types::Voice> {
        Self::update().voice()
    }

    #[must_use]
    pub fn voter_chat() -> SmartFilterPath<crate::types::Chat> {
        Self::update().voter_chat()
    }

    #[must_use]
    pub fn web_app_data() -> SmartFilterPath<crate::types::WebAppData> {
        Self::update().web_app_data()
    }

    #[must_use]
    pub fn write_access_allowed() -> SmartFilterPath<crate::types::WriteAccessAllowed> {
        Self::update().write_access_allowed()
    }
}
impl SmartFilterPath<crate::types::AcceptedGiftTypes> {
    #[must_use]
    pub fn unlimited_gifts(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.unlimited_gifts)
    }

    #[must_use]
    pub fn limited_gifts(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.limited_gifts)
    }

    #[must_use]
    pub fn unique_gifts(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.unique_gifts)
    }

    #[must_use]
    pub fn premium_subscription(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.premium_subscription)
    }

    #[must_use]
    pub fn gifts_from_channels(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.gifts_from_channels)
    }
}
impl SmartFilterPath<crate::types::AffiliateInfo> {
    #[must_use]
    pub fn affiliate_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.affiliate_user.as_deref())
    }

    #[must_use]
    pub fn affiliate_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.affiliate_chat.as_deref())
    }

    #[must_use]
    pub fn commission_per_mille(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.commission_per_mille)
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.amount)
    }

    #[must_use]
    pub fn nanostar_amount(self) -> SmartFilterPath<i32> {
        self.and_then(|value| value.nanostar_amount.as_ref())
    }
}
impl SmartFilterPath<crate::types::Animation> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn file_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_name.as_deref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::Audio> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer.as_deref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn file_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_name.as_deref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }
}
impl SmartFilterPath<crate::types::BackgroundFill> {
    #[must_use]
    pub fn colors(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.colors())
    }
}
impl SmartFilterPath<crate::types::BackgroundFillFreeformGradient> {
    #[must_use]
    pub fn colors(self) -> SmartFilterPath<[i64]> {
        self.map(|value| value.colors.as_ref())
    }
}
impl SmartFilterPath<crate::types::BackgroundFillGradient> {
    #[must_use]
    pub fn top_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.top_color)
    }

    #[must_use]
    pub fn bottom_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.bottom_color)
    }

    #[must_use]
    pub fn rotation_angle(self) -> SmartFilterPath<u16> {
        self.map(|value| &value.rotation_angle)
    }
}
impl SmartFilterPath<crate::types::BackgroundFillSolid> {
    #[must_use]
    pub fn color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.color)
    }
}
impl SmartFilterPath<crate::types::BackgroundType> {
    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn fill(self) -> SmartFilterPath<crate::types::BackgroundFill> {
        self.and_then(|value| value.fill())
    }

    #[must_use]
    pub fn theme_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.theme_name())
    }
}
impl SmartFilterPath<crate::types::BackgroundTypeChatTheme> {
    #[must_use]
    pub fn theme_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.theme_name.as_ref())
    }
}
impl SmartFilterPath<crate::types::BackgroundTypeFill> {
    #[must_use]
    pub fn fill(self) -> SmartFilterPath<crate::types::BackgroundFill> {
        self.map(|value| &value.fill)
    }

    #[must_use]
    pub fn dark_theme_dimming(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.dark_theme_dimming)
    }
}
impl SmartFilterPath<crate::types::BackgroundTypePattern> {
    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.map(|value| value.document.as_ref())
    }

    #[must_use]
    pub fn fill(self) -> SmartFilterPath<crate::types::BackgroundFill> {
        self.map(|value| &value.fill)
    }

    #[must_use]
    pub fn intensity(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.intensity)
    }

    #[must_use]
    pub fn is_inverted(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_inverted.as_ref())
    }

    #[must_use]
    pub fn is_moving(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_moving.as_ref())
    }
}
impl SmartFilterPath<crate::types::BackgroundTypeWallpaper> {
    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.map(|value| value.document.as_ref())
    }

    #[must_use]
    pub fn dark_theme_dimming(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.dark_theme_dimming)
    }

    #[must_use]
    pub fn is_blurred(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_blurred.as_ref())
    }

    #[must_use]
    pub fn is_moving(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_moving.as_ref())
    }
}
impl SmartFilterPath<crate::types::Birthdate> {
    #[must_use]
    pub fn day(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.day)
    }

    #[must_use]
    pub fn month(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.month)
    }

    #[must_use]
    pub fn year(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.year.as_ref())
    }
}
impl SmartFilterPath<crate::types::BotAccessSettings> {
    #[must_use]
    pub fn is_access_restricted(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_access_restricted)
    }

    #[must_use]
    pub fn added_users(self) -> SmartFilterPath<[crate::types::User]> {
        self.and_then(|value| value.added_users.as_deref())
    }
}
impl SmartFilterPath<crate::types::BotCommand> {
    #[must_use]
    pub fn command(self) -> SmartFilterPath<str> {
        self.map(|value| value.command.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.map(|value| value.description.as_ref())
    }
}
impl SmartFilterPath<crate::types::BotCommandScope> {
    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<crate::types::ChatIdKind> {
        self.and_then(|value| value.chat_id())
    }
}
impl SmartFilterPath<crate::types::BotCommandScopeAllChatAdministrators> {}
impl SmartFilterPath<crate::types::BotCommandScopeAllGroupChats> {}
impl SmartFilterPath<crate::types::BotCommandScopeAllPrivateChats> {}
impl SmartFilterPath<crate::types::BotCommandScopeChat> {
    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<crate::types::ChatIdKind> {
        self.map(|value| &value.chat_id)
    }
}
impl SmartFilterPath<crate::types::BotCommandScopeChatAdministrators> {
    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<crate::types::ChatIdKind> {
        self.map(|value| &value.chat_id)
    }
}
impl SmartFilterPath<crate::types::BotCommandScopeChatMember> {
    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<crate::types::ChatIdKind> {
        self.map(|value| &value.chat_id)
    }

    #[must_use]
    pub fn user_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.user_id)
    }
}
impl SmartFilterPath<crate::types::BotCommandScopeDefault> {}
impl SmartFilterPath<crate::types::BotDescription> {
    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.map(|value| value.description.as_ref())
    }
}
impl SmartFilterPath<crate::types::BotName> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }
}
impl SmartFilterPath<crate::types::BotShortDescription> {
    #[must_use]
    pub fn short_description(self) -> SmartFilterPath<str> {
        self.map(|value| value.short_description.as_ref())
    }
}
impl SmartFilterPath<crate::types::BusinessBotRights> {
    #[must_use]
    pub fn can_reply(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_reply.as_ref())
    }

    #[must_use]
    pub fn can_read_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_read_messages.as_ref())
    }

    #[must_use]
    pub fn can_delete_sent_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_delete_sent_messages.as_ref())
    }

    #[must_use]
    pub fn can_delete_all_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_delete_all_messages.as_ref())
    }

    #[must_use]
    pub fn can_edit_name(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_name.as_ref())
    }

    #[must_use]
    pub fn can_edit_bio(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_bio.as_ref())
    }

    #[must_use]
    pub fn can_edit_profile_photo(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_profile_photo.as_ref())
    }

    #[must_use]
    pub fn can_edit_username(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_username.as_ref())
    }

    #[must_use]
    pub fn can_change_gift_settings(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_change_gift_settings.as_ref())
    }

    #[must_use]
    pub fn can_view_gifts_and_stars(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_view_gifts_and_stars.as_ref())
    }

    #[must_use]
    pub fn can_convert_gifts_to_stars(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_convert_gifts_to_stars.as_ref())
    }

    #[must_use]
    pub fn can_transfer_and_upgrade_gifts(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_transfer_and_upgrade_gifts.as_ref())
    }

    #[must_use]
    pub fn can_transfer_stars(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_transfer_stars.as_ref())
    }

    #[must_use]
    pub fn can_manage_stories(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_stories.as_ref())
    }
}
impl SmartFilterPath<crate::types::BusinessConnection> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn user_chat_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.user_chat_id)
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn rights(self) -> SmartFilterPath<crate::types::BusinessBotRights> {
        self.and_then(|value| value.rights.as_ref())
    }

    #[must_use]
    pub fn is_enabled(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_enabled)
    }
}
impl SmartFilterPath<crate::types::BusinessIntro> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.message.as_deref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker.as_deref())
    }
}
impl SmartFilterPath<crate::types::BusinessLocation> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location.as_ref())
    }
}
impl SmartFilterPath<crate::types::BusinessMessagesDeleted> {
    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.business_connection_id.as_ref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn message_ids(self) -> SmartFilterPath<[i64]> {
        self.map(|value| value.message_ids.as_ref())
    }
}
impl SmartFilterPath<crate::types::BusinessOpeningHours> {
    #[must_use]
    pub fn time_zone_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.time_zone_name.as_ref())
    }

    #[must_use]
    pub fn opening_hours(self) -> SmartFilterPath<[crate::types::BusinessOpeningHoursInterval]> {
        self.map(|value| value.opening_hours.as_ref())
    }
}
impl SmartFilterPath<crate::types::BusinessOpeningHoursInterval> {
    #[must_use]
    pub fn opening_minute(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.opening_minute)
    }

    #[must_use]
    pub fn closing_minute(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.closing_minute)
    }
}
impl SmartFilterPath<crate::types::CallbackGame> {}
impl SmartFilterPath<crate::types::CallbackQuery> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.message.as_deref())
    }

    #[must_use]
    pub fn inline_message_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.inline_message_id.as_deref())
    }

    #[must_use]
    pub fn chat_instance(self) -> SmartFilterPath<str> {
        self.map(|value| value.chat_instance.as_ref())
    }

    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.data.as_deref())
    }

    #[must_use]
    pub fn game_short_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.game_short_name.as_deref())
    }
}
impl SmartFilterPath<crate::types::Chat> {
    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username())
    }
}
impl SmartFilterPath<crate::types::ChatAdministratorRights> {
    #[must_use]
    pub fn is_anonymous(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_anonymous)
    }

    #[must_use]
    pub fn can_manage_chat(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_manage_chat)
    }

    #[must_use]
    pub fn can_delete_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_delete_messages)
    }

    #[must_use]
    pub fn can_manage_video_chats(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_manage_video_chats)
    }

    #[must_use]
    pub fn can_restrict_members(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_restrict_members)
    }

    #[must_use]
    pub fn can_promote_members(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_promote_members)
    }

    #[must_use]
    pub fn can_change_info(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_change_info)
    }

    #[must_use]
    pub fn can_invite_users(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_invite_users)
    }

    #[must_use]
    pub fn can_post_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_post_stories)
    }

    #[must_use]
    pub fn can_edit_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_edit_stories)
    }

    #[must_use]
    pub fn can_delete_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_delete_stories)
    }

    #[must_use]
    pub fn can_post_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_post_messages.as_ref())
    }

    #[must_use]
    pub fn can_edit_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_messages.as_ref())
    }

    #[must_use]
    pub fn can_pin_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_pin_messages.as_ref())
    }

    #[must_use]
    pub fn can_manage_topics(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_topics.as_ref())
    }

    #[must_use]
    pub fn can_manage_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_direct_messages.as_ref())
    }

    #[must_use]
    pub fn can_manage_tags(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_tags.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatBackground> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<crate::types::BackgroundType> {
        self.map(|value| value.r#type.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatBoost> {
    #[must_use]
    pub fn boost_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.boost_id.as_ref())
    }

    #[must_use]
    pub fn add_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.add_date)
    }

    #[must_use]
    pub fn expiration_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.expiration_date)
    }

    #[must_use]
    pub fn source(self) -> SmartFilterPath<crate::types::ChatBoostSource> {
        self.map(|value| &value.source)
    }
}
impl SmartFilterPath<crate::types::ChatBoostAdded> {
    #[must_use]
    pub fn boost_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.boost_count)
    }
}
impl SmartFilterPath<crate::types::ChatBoostRemoved> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn boost_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.boost_id.as_ref())
    }

    #[must_use]
    pub fn remove_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.remove_date)
    }

    #[must_use]
    pub fn source(self) -> SmartFilterPath<crate::types::ChatBoostSource> {
        self.map(|value| &value.source)
    }
}
impl SmartFilterPath<crate::types::ChatBoostSource> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user())
    }
}
impl SmartFilterPath<crate::types::ChatBoostSourceGiftCode> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatBoostSourceGiveaway> {
    #[must_use]
    pub fn giveaway_message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.giveaway_message_id)
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user.as_deref())
    }

    #[must_use]
    pub fn prize_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.prize_star_count.as_ref())
    }

    #[must_use]
    pub fn is_unclaimed(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_unclaimed.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatBoostSourcePremium> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatBoostUpdated> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn boost(self) -> SmartFilterPath<crate::types::ChatBoost> {
        self.map(|value| &value.boost)
    }
}
impl SmartFilterPath<crate::types::ChatChannel> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatFullInfo> {
    #[must_use]
    pub fn accepted_gift_types(self) -> SmartFilterPath<crate::types::AcceptedGiftTypes> {
        self.and_then(|value| value.accepted_gift_types())
    }

    #[must_use]
    pub fn active_usernames(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.active_usernames())
    }

    #[must_use]
    pub fn available_reactions(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.available_reactions())
    }

    #[must_use]
    pub fn background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.background_custom_emoji_id())
    }

    #[must_use]
    pub fn bio(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.bio())
    }

    #[must_use]
    pub fn birthdate(self) -> SmartFilterPath<crate::types::Birthdate> {
        self.and_then(|value| value.birthdate())
    }

    #[must_use]
    pub fn business_intro(self) -> SmartFilterPath<crate::types::BusinessIntro> {
        self.and_then(|value| value.business_intro())
    }

    #[must_use]
    pub fn business_location(self) -> SmartFilterPath<crate::types::BusinessLocation> {
        self.and_then(|value| value.business_location())
    }

    #[must_use]
    pub fn business_opening_hours(self) -> SmartFilterPath<crate::types::BusinessOpeningHours> {
        self.and_then(|value| value.business_opening_hours())
    }

    #[must_use]
    pub fn custom_emoji_sticker_set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_sticker_set_name())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn emoji_status_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji_status_custom_emoji_id())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name())
    }

    #[must_use]
    pub fn first_profile_audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.first_profile_audio())
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invite_link())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::ChatLocation> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn parent_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.parent_chat())
    }

    #[must_use]
    pub fn permissions(self) -> SmartFilterPath<crate::types::ChatPermissions> {
        self.and_then(|value| value.permissions())
    }

    #[must_use]
    pub fn personal_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.personal_chat())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::ChatPhoto> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.pinned_message())
    }

    #[must_use]
    pub fn profile_background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.profile_background_custom_emoji_id())
    }

    #[must_use]
    pub fn rating(self) -> SmartFilterPath<crate::types::UserRating> {
        self.and_then(|value| value.rating())
    }

    #[must_use]
    pub fn sticker_set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sticker_set_name())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }

    #[must_use]
    pub fn unique_gift_colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.unique_gift_colors())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username())
    }
}
impl SmartFilterPath<crate::types::ChatFullInfoChannel> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }

    #[must_use]
    pub fn accent_color_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.accent_color_id)
    }

    #[must_use]
    pub fn max_reaction_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.max_reaction_count)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::ChatPhoto> {
        self.and_then(|value| value.photo.as_ref())
    }

    #[must_use]
    pub fn active_usernames(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.active_usernames.as_deref())
    }

    #[must_use]
    pub fn personal_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.personal_chat.as_deref())
    }

    #[must_use]
    pub fn parent_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.parent_chat.as_deref())
    }

    #[must_use]
    pub fn available_reactions(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.available_reactions.as_deref())
    }

    #[must_use]
    pub fn background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn profile_accent_color_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.profile_accent_color_id.as_ref())
    }

    #[must_use]
    pub fn profile_background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.profile_background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invite_link.as_deref())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.pinned_message.as_deref())
    }

    #[must_use]
    pub fn can_send_paid_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_paid_media.as_ref())
    }

    #[must_use]
    pub fn message_auto_delete_time(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_auto_delete_time.as_ref())
    }

    #[must_use]
    pub fn has_hidden_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_hidden_members.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn has_visible_history(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_visible_history.as_ref())
    }

    #[must_use]
    pub fn linked_chat_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.linked_chat_id.as_ref())
    }

    #[must_use]
    pub fn unique_gift_colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.unique_gift_colors.as_ref())
    }

    #[must_use]
    pub fn paid_message_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_message_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatFullInfoGroup> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }

    #[must_use]
    pub fn accent_color_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.accent_color_id)
    }

    #[must_use]
    pub fn max_reaction_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.max_reaction_count)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::ChatPhoto> {
        self.and_then(|value| value.photo.as_ref())
    }

    #[must_use]
    pub fn available_reactions(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.available_reactions.as_deref())
    }

    #[must_use]
    pub fn background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn profile_accent_color_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.profile_accent_color_id.as_ref())
    }

    #[must_use]
    pub fn profile_background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.profile_background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.pinned_message.as_deref())
    }

    #[must_use]
    pub fn message_auto_delete_time(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_auto_delete_time.as_ref())
    }

    #[must_use]
    pub fn has_hidden_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_hidden_members.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn has_visible_history(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_visible_history.as_ref())
    }

    #[must_use]
    pub fn can_set_sticker_set(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_set_sticker_set.as_ref())
    }

    #[must_use]
    pub fn unique_gift_colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.unique_gift_colors.as_ref())
    }

    #[must_use]
    pub fn paid_message_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_message_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatFullInfoPrivate> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name.as_deref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }

    #[must_use]
    pub fn accent_color_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.accent_color_id)
    }

    #[must_use]
    pub fn max_reaction_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.max_reaction_count)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::ChatPhoto> {
        self.and_then(|value| value.photo.as_ref())
    }

    #[must_use]
    pub fn active_usernames(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.active_usernames.as_deref())
    }

    #[must_use]
    pub fn birthdate(self) -> SmartFilterPath<crate::types::Birthdate> {
        self.and_then(|value| value.birthdate.as_ref())
    }

    #[must_use]
    pub fn business_intro(self) -> SmartFilterPath<crate::types::BusinessIntro> {
        self.and_then(|value| value.business_intro.as_ref())
    }

    #[must_use]
    pub fn business_location(self) -> SmartFilterPath<crate::types::BusinessLocation> {
        self.and_then(|value| value.business_location.as_ref())
    }

    #[must_use]
    pub fn business_opening_hours(self) -> SmartFilterPath<crate::types::BusinessOpeningHours> {
        self.and_then(|value| value.business_opening_hours.as_ref())
    }

    #[must_use]
    pub fn personal_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.personal_chat.as_deref())
    }

    #[must_use]
    pub fn available_reactions(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.available_reactions.as_deref())
    }

    #[must_use]
    pub fn background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn profile_accent_color_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.profile_accent_color_id.as_ref())
    }

    #[must_use]
    pub fn profile_background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.profile_background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn emoji_status_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji_status_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn emoji_status_expiration_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.emoji_status_expiration_date.as_ref())
    }

    #[must_use]
    pub fn bio(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.bio.as_deref())
    }

    #[must_use]
    pub fn has_private_forwards(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_private_forwards.as_ref())
    }

    #[must_use]
    pub fn has_restricted_voice_and_video_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_restricted_voice_and_video_messages.as_ref())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.pinned_message.as_deref())
    }

    #[must_use]
    pub fn accepted_gift_types(self) -> SmartFilterPath<crate::types::AcceptedGiftTypes> {
        self.map(|value| &value.accepted_gift_types)
    }

    #[must_use]
    pub fn message_auto_delete_time(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_auto_delete_time.as_ref())
    }

    #[must_use]
    pub fn has_hidden_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_hidden_members.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn has_visible_history(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_visible_history.as_ref())
    }

    #[must_use]
    pub fn rating(self) -> SmartFilterPath<crate::types::UserRating> {
        self.and_then(|value| value.rating.as_ref())
    }

    #[must_use]
    pub fn first_profile_audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.first_profile_audio.as_deref())
    }

    #[must_use]
    pub fn unique_gift_colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.unique_gift_colors.as_ref())
    }

    #[must_use]
    pub fn paid_message_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_message_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatFullInfoSupergroup> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn is_forum(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_forum.as_ref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }

    #[must_use]
    pub fn accent_color_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.accent_color_id)
    }

    #[must_use]
    pub fn max_reaction_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.max_reaction_count)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::ChatPhoto> {
        self.and_then(|value| value.photo.as_ref())
    }

    #[must_use]
    pub fn active_usernames(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.active_usernames.as_deref())
    }

    #[must_use]
    pub fn available_reactions(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.available_reactions.as_deref())
    }

    #[must_use]
    pub fn background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn profile_accent_color_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.profile_accent_color_id.as_ref())
    }

    #[must_use]
    pub fn profile_background_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.profile_background_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn join_to_send_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.join_to_send_messages.as_ref())
    }

    #[must_use]
    pub fn join_by_request(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.join_by_request.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invite_link.as_deref())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.pinned_message.as_deref())
    }

    #[must_use]
    pub fn permissions(self) -> SmartFilterPath<crate::types::ChatPermissions> {
        self.and_then(|value| value.permissions.as_ref())
    }

    #[must_use]
    pub fn slow_mode_delay(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.slow_mode_delay.as_ref())
    }

    #[must_use]
    pub fn unrestrict_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unrestrict_boost_count.as_ref())
    }

    #[must_use]
    pub fn message_auto_delete_time(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_auto_delete_time.as_ref())
    }

    #[must_use]
    pub fn has_aggressive_anti_spam_enabled(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_aggressive_anti_spam_enabled.as_ref())
    }

    #[must_use]
    pub fn has_hidden_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_hidden_members.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn has_visible_history(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_visible_history.as_ref())
    }

    #[must_use]
    pub fn sticker_set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sticker_set_name.as_deref())
    }

    #[must_use]
    pub fn custom_emoji_sticker_set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_sticker_set_name.as_deref())
    }

    #[must_use]
    pub fn linked_chat_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.linked_chat_id.as_ref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::ChatLocation> {
        self.and_then(|value| value.location.as_ref())
    }

    #[must_use]
    pub fn unique_gift_colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.unique_gift_colors.as_ref())
    }

    #[must_use]
    pub fn paid_message_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_message_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatGroup> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatInviteLink> {
    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<str> {
        self.map(|value| value.invite_link.as_ref())
    }

    #[must_use]
    pub fn creator(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.creator.as_ref())
    }

    #[must_use]
    pub fn creates_join_request(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.creates_join_request)
    }

    #[must_use]
    pub fn is_primary(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_primary)
    }

    #[must_use]
    pub fn is_revoked(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_revoked)
    }

    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.name.as_deref())
    }

    #[must_use]
    pub fn expire_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.expire_date.as_ref())
    }

    #[must_use]
    pub fn member_limit(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.member_limit.as_ref())
    }

    #[must_use]
    pub fn pending_join_request_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.pending_join_request_count.as_ref())
    }

    #[must_use]
    pub fn subscription_period(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.subscription_period.as_ref())
    }

    #[must_use]
    pub fn subscription_price(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.subscription_price.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatJoinRequest> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn user_chat_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.user_chat_id)
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn bio(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.bio.as_deref())
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<crate::types::ChatInviteLink> {
        self.and_then(|value| value.invite_link.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatLocation> {
    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.map(|value| &value.location)
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatMember> {
    #[must_use]
    pub fn custom_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_title())
    }

    #[must_use]
    pub fn tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.tag())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user())
    }
}
impl SmartFilterPath<crate::types::ChatMemberAdministrator> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn can_be_edited(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_be_edited)
    }

    #[must_use]
    pub fn is_anonymous(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_anonymous)
    }

    #[must_use]
    pub fn can_manage_chat(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_manage_chat)
    }

    #[must_use]
    pub fn can_delete_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_delete_messages)
    }

    #[must_use]
    pub fn can_manage_video_chats(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_manage_video_chats)
    }

    #[must_use]
    pub fn can_restrict_members(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_restrict_members)
    }

    #[must_use]
    pub fn can_promote_members(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_promote_members)
    }

    #[must_use]
    pub fn can_change_info(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_change_info)
    }

    #[must_use]
    pub fn can_invite_users(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_invite_users)
    }

    #[must_use]
    pub fn can_post_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_post_stories)
    }

    #[must_use]
    pub fn can_edit_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_edit_stories)
    }

    #[must_use]
    pub fn can_delete_stories(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_delete_stories)
    }

    #[must_use]
    pub fn can_post_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_post_messages.as_ref())
    }

    #[must_use]
    pub fn can_edit_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_messages.as_ref())
    }

    #[must_use]
    pub fn can_pin_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_pin_messages.as_ref())
    }

    #[must_use]
    pub fn can_manage_topics(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_topics.as_ref())
    }

    #[must_use]
    pub fn can_manage_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_direct_messages.as_ref())
    }

    #[must_use]
    pub fn can_manage_tags(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_tags.as_ref())
    }

    #[must_use]
    pub fn custom_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_title.as_deref())
    }
}
impl SmartFilterPath<crate::types::ChatMemberBanned> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn until_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.until_date)
    }
}
impl SmartFilterPath<crate::types::ChatMemberLeft> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatMemberMember> {
    #[must_use]
    pub fn tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.tag.as_deref())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn until_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.until_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatMemberOwner> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn is_anonymous(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_anonymous)
    }

    #[must_use]
    pub fn custom_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_title.as_deref())
    }
}
impl SmartFilterPath<crate::types::ChatMemberRestricted> {
    #[must_use]
    pub fn tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.tag.as_deref())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn is_member(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_member)
    }

    #[must_use]
    pub fn can_send_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_messages)
    }

    #[must_use]
    pub fn can_send_audios(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_audios)
    }

    #[must_use]
    pub fn can_send_documents(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_documents)
    }

    #[must_use]
    pub fn can_send_photos(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_photos)
    }

    #[must_use]
    pub fn can_send_videos(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_videos)
    }

    #[must_use]
    pub fn can_send_video_notes(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_video_notes)
    }

    #[must_use]
    pub fn can_send_voice_notes(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_voice_notes)
    }

    #[must_use]
    pub fn can_send_polls(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_polls)
    }

    #[must_use]
    pub fn can_send_other_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_send_other_messages)
    }

    #[must_use]
    pub fn can_add_web_page_previews(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_add_web_page_previews)
    }

    #[must_use]
    pub fn can_react_to_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_react_to_messages)
    }

    #[must_use]
    pub fn can_edit_tag(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_edit_tag)
    }

    #[must_use]
    pub fn can_change_info(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_change_info)
    }

    #[must_use]
    pub fn can_invite_users(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_invite_users)
    }

    #[must_use]
    pub fn can_pin_messages(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_pin_messages)
    }

    #[must_use]
    pub fn can_manage_topics(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.can_manage_topics)
    }

    #[must_use]
    pub fn until_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.until_date)
    }
}
impl SmartFilterPath<crate::types::ChatMemberUpdated> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn old_chat_member(self) -> SmartFilterPath<crate::types::ChatMember> {
        self.map(|value| &value.old_chat_member)
    }

    #[must_use]
    pub fn new_chat_member(self) -> SmartFilterPath<crate::types::ChatMember> {
        self.map(|value| &value.new_chat_member)
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<crate::types::ChatInviteLink> {
        self.and_then(|value| value.invite_link.as_ref())
    }

    #[must_use]
    pub fn via_join_request(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.via_join_request.as_ref())
    }

    #[must_use]
    pub fn via_chat_folder_invite_link(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.via_chat_folder_invite_link.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatOwnerChanged> {
    #[must_use]
    pub fn new_owner(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.new_owner.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatOwnerLeft> {
    #[must_use]
    pub fn new_owner(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.new_owner.as_deref())
    }
}
impl SmartFilterPath<crate::types::ChatPermissions> {
    #[must_use]
    pub fn can_send_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_messages.as_ref())
    }

    #[must_use]
    pub fn can_send_audios(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_audios.as_ref())
    }

    #[must_use]
    pub fn can_send_documents(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_documents.as_ref())
    }

    #[must_use]
    pub fn can_send_photos(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_photos.as_ref())
    }

    #[must_use]
    pub fn can_send_videos(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_videos.as_ref())
    }

    #[must_use]
    pub fn can_send_video_notes(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_video_notes.as_ref())
    }

    #[must_use]
    pub fn can_send_voice_notes(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_voice_notes.as_ref())
    }

    #[must_use]
    pub fn can_send_polls(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_polls.as_ref())
    }

    #[must_use]
    pub fn can_send_other_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_send_other_messages.as_ref())
    }

    #[must_use]
    pub fn can_add_web_page_previews(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_add_web_page_previews.as_ref())
    }

    #[must_use]
    pub fn can_react_to_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_react_to_messages.as_ref())
    }

    #[must_use]
    pub fn can_edit_tag(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_edit_tag.as_ref())
    }

    #[must_use]
    pub fn can_change_info(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_change_info.as_ref())
    }

    #[must_use]
    pub fn can_invite_users(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_invite_users.as_ref())
    }

    #[must_use]
    pub fn can_pin_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_pin_messages.as_ref())
    }

    #[must_use]
    pub fn can_manage_topics(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_topics.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatPhoto> {
    #[must_use]
    pub fn small_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.small_file_id.as_ref())
    }

    #[must_use]
    pub fn small_file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.small_file_unique_id.as_ref())
    }

    #[must_use]
    pub fn big_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.big_file_id.as_ref())
    }

    #[must_use]
    pub fn big_file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.big_file_unique_id.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatPrivate> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name.as_deref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChatShared> {
    #[must_use]
    pub fn request_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_id)
    }

    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.chat_id)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo.as_deref())
    }
}
impl SmartFilterPath<crate::types::ChatSupergroup> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn is_forum(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_forum.as_ref())
    }

    #[must_use]
    pub fn is_direct_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_direct_messages.as_ref())
    }
}
impl SmartFilterPath<crate::types::Checklist> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn title_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.title_entities.as_deref())
    }

    #[must_use]
    pub fn tasks(self) -> SmartFilterPath<[crate::types::ChecklistTask]> {
        self.map(|value| value.tasks.as_ref())
    }

    #[must_use]
    pub fn others_can_add_tasks(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.others_can_add_tasks.as_ref())
    }

    #[must_use]
    pub fn others_can_mark_tasks_as_done(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.others_can_mark_tasks_as_done.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChecklistTask> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.text_entities.as_deref())
    }

    #[must_use]
    pub fn completed_by_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.completed_by_user.as_deref())
    }

    #[must_use]
    pub fn completed_by_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.completed_by_chat.as_deref())
    }

    #[must_use]
    pub fn completion_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.completion_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChecklistTasksAdded> {
    #[must_use]
    pub fn checklist_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.checklist_message.as_deref())
    }

    #[must_use]
    pub fn tasks(self) -> SmartFilterPath<[crate::types::ChecklistTask]> {
        self.map(|value| value.tasks.as_ref())
    }
}
impl SmartFilterPath<crate::types::ChecklistTasksDone> {
    #[must_use]
    pub fn checklist_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.checklist_message.as_deref())
    }

    #[must_use]
    pub fn marked_as_done_task_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.marked_as_done_task_ids.as_deref())
    }

    #[must_use]
    pub fn marked_as_not_done_task_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.marked_as_not_done_task_ids.as_deref())
    }
}
impl SmartFilterPath<crate::types::ChosenInlineResult> {
    #[must_use]
    pub fn result_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.result_id.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location.as_ref())
    }

    #[must_use]
    pub fn inline_message_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.inline_message_id.as_deref())
    }

    #[must_use]
    pub fn query(self) -> SmartFilterPath<str> {
        self.map(|value| value.query.as_ref())
    }
}
impl SmartFilterPath<crate::types::Contact> {
    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.map(|value| value.phone_number.as_ref())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.first_name.as_ref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn user_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.user_id.as_ref())
    }

    #[must_use]
    pub fn vcard(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.vcard.as_deref())
    }
}
impl SmartFilterPath<crate::types::CopyTextButton> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }
}
impl SmartFilterPath<crate::types::Dice> {
    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.map(|value| value.emoji.as_ref())
    }

    #[must_use]
    pub fn value(self) -> SmartFilterPath<u8> {
        self.map(|value| &value.value)
    }
}
impl SmartFilterPath<crate::types::DirectMessagePriceChanged> {
    #[must_use]
    pub fn are_direct_messages_enabled(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.are_direct_messages_enabled)
    }

    #[must_use]
    pub fn direct_message_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.direct_message_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::DirectMessagesTopic> {
    #[must_use]
    pub fn topic_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.topic_id)
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user.as_deref())
    }
}
impl SmartFilterPath<crate::types::Document> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn file_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_name.as_deref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedCredentials> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }

    #[must_use]
    pub fn secret(self) -> SmartFilterPath<str> {
        self.map(|value| value.secret.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElement> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.data())
    }

    #[must_use]
    pub fn email(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.email())
    }

    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.and_then(|value| value.files())
    }

    #[must_use]
    pub fn front_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.and_then(|value| value.front_side())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash())
    }

    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.phone_number())
    }

    #[must_use]
    pub fn reverse_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.and_then(|value| value.reverse_side())
    }

    #[must_use]
    pub fn selfie(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.and_then(|value| value.selfie())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.and_then(|value| value.translation())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementAddress> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementBankStatement> {
    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.files.as_ref())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementDriverLicense> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn front_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.front_side)
    }

    #[must_use]
    pub fn reverse_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.reverse_side)
    }

    #[must_use]
    pub fn selfie(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.selfie)
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementEmail> {
    #[must_use]
    pub fn email(self) -> SmartFilterPath<str> {
        self.map(|value| value.email.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementIdentityCard> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn front_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.front_side)
    }

    #[must_use]
    pub fn reverse_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.reverse_side)
    }

    #[must_use]
    pub fn selfie(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.selfie)
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementInternalPassport> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn front_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.front_side)
    }

    #[must_use]
    pub fn selfie(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.selfie)
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementPassport> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn front_side(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.front_side)
    }

    #[must_use]
    pub fn selfie(self) -> SmartFilterPath<crate::types::PassportFile> {
        self.map(|value| &value.selfie)
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementPassportRegistration> {
    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.files.as_ref())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementPersonalDetails> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementPhoneNumber> {
    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.map(|value| value.phone_number.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementRentalAgreement> {
    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.files.as_ref())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementTemporaryRegistration> {
    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.files.as_ref())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::EncryptedPassportElementUtilityBill> {
    #[must_use]
    pub fn files(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.files.as_ref())
    }

    #[must_use]
    pub fn translation(self) -> SmartFilterPath<[crate::types::PassportFile]> {
        self.map(|value| value.translation.as_ref())
    }

    #[must_use]
    pub fn hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.hash.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfo> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.audio())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.and_then(|value| value.checklist())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.and_then(|value| value.contact())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.and_then(|value| value.dice())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.and_then(|value| value.game())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.and_then(|value| value.giveaway())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.and_then(|value| value.giveaway_winners())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.and_then(|value| value.invoice())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| value.origin())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.and_then(|value| value.poll())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.story())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.and_then(|value| value.venue())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.and_then(|value| value.video_note())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.and_then(|value| value.voice())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoAnimation> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.map(|value| value.animation.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoAudio> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.map(|value| value.audio.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoChecklist> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.map(|value| &value.checklist)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoContact> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.map(|value| &value.contact)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoDice> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.map(|value| &value.dice)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoDocument> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.map(|value| value.document.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoGame> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.map(|value| &value.game)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoGiveaway> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.map(|value| &value.giveaway)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoGiveawayWinners> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.map(|value| &value.giveaway_winners)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoInvoice> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.map(|value| &value.invoice)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoLivePhoto> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.map(|value| &value.live_photo)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoLocation> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.map(|value| &value.location)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoPhoto> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoPoll> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.map(|value| value.poll.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoSticker> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoStory> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.map(|value| &value.story)
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoVenue> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.map(|value| value.venue.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoVideo> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.map(|value| value.video.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoVideoNote> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.map(|value| value.video_note.as_ref())
    }
}
impl SmartFilterPath<crate::types::ExternalReplyInfoVoice> {
    #[must_use]
    pub fn origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.map(|value| &value.origin)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat.as_deref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_id.as_ref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.map(|value| &value.voice)
    }
}
impl SmartFilterPath<crate::types::File> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }

    #[must_use]
    pub fn file_path(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_path.as_deref())
    }
}
impl SmartFilterPath<crate::types::ForceReply> {
    #[must_use]
    pub fn force_reply(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.force_reply)
    }

    #[must_use]
    pub fn input_field_placeholder(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.input_field_placeholder.as_deref())
    }

    #[must_use]
    pub fn selective(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.selective.as_ref())
    }
}
impl SmartFilterPath<crate::types::ForumTopic> {
    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_thread_id)
    }

    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn icon_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.icon_color)
    }

    #[must_use]
    pub fn icon_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.icon_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn is_name_implicit(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_name_implicit.as_ref())
    }
}
impl SmartFilterPath<crate::types::ForumTopicClosed> {}
impl SmartFilterPath<crate::types::ForumTopicCreated> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn icon_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.icon_color)
    }

    #[must_use]
    pub fn icon_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.icon_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn is_name_implicit(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_name_implicit.as_ref())
    }
}
impl SmartFilterPath<crate::types::ForumTopicEdited> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.name.as_deref())
    }

    #[must_use]
    pub fn icon_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.icon_custom_emoji_id.as_deref())
    }
}
impl SmartFilterPath<crate::types::ForumTopicReopened> {}
impl SmartFilterPath<crate::types::Game> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.map(|value| value.description.as_ref())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.photo.as_ref())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text.as_deref())
    }

    #[must_use]
    pub fn text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.text_entities.as_deref())
    }

    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation.as_deref())
    }
}
impl SmartFilterPath<crate::types::GameHighScore> {
    #[must_use]
    pub fn position(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.position)
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn score(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.score)
    }
}
impl SmartFilterPath<crate::types::GeneralForumTopicHidden> {}
impl SmartFilterPath<crate::types::GeneralForumTopicUnhidden> {}
impl SmartFilterPath<crate::types::Gift> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }

    #[must_use]
    pub fn star_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.star_count)
    }

    #[must_use]
    pub fn upgrade_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.upgrade_star_count.as_ref())
    }

    #[must_use]
    pub fn is_premium(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_premium.as_ref())
    }

    #[must_use]
    pub fn has_colors(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_colors.as_ref())
    }

    #[must_use]
    pub fn total_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.total_count.as_ref())
    }

    #[must_use]
    pub fn remaining_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.remaining_count.as_ref())
    }

    #[must_use]
    pub fn personal_total_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.personal_total_count.as_ref())
    }

    #[must_use]
    pub fn personal_remaining_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.personal_remaining_count.as_ref())
    }

    #[must_use]
    pub fn background(self) -> SmartFilterPath<crate::types::GiftBackground> {
        self.and_then(|value| value.background.as_ref())
    }

    #[must_use]
    pub fn unique_gift_variant_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unique_gift_variant_count.as_ref())
    }

    #[must_use]
    pub fn publisher_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.publisher_chat.as_deref())
    }
}
impl SmartFilterPath<crate::types::GiftBackground> {
    #[must_use]
    pub fn center_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.center_color)
    }

    #[must_use]
    pub fn edge_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.edge_color)
    }

    #[must_use]
    pub fn text_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.text_color)
    }
}
impl SmartFilterPath<crate::types::GiftInfo> {
    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.map(|value| value.gift.as_ref())
    }

    #[must_use]
    pub fn owned_gift_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.owned_gift_id.as_deref())
    }

    #[must_use]
    pub fn convert_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.convert_star_count.as_ref())
    }

    #[must_use]
    pub fn prepaid_upgrade_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.prepaid_upgrade_star_count.as_ref())
    }

    #[must_use]
    pub fn is_upgrade_separate(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_upgrade_separate.as_ref())
    }

    #[must_use]
    pub fn can_be_upgraded(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_be_upgraded.as_ref())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text.as_deref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn is_private(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_private.as_ref())
    }

    #[must_use]
    pub fn unique_gift_number(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unique_gift_number.as_ref())
    }
}
impl SmartFilterPath<crate::types::Gifts> {
    #[must_use]
    pub fn gifts(self) -> SmartFilterPath<[crate::types::Gift]> {
        self.map(|value| value.gifts.as_ref())
    }
}
impl SmartFilterPath<crate::types::Giveaway> {
    #[must_use]
    pub fn chats(self) -> SmartFilterPath<[crate::types::Chat]> {
        self.map(|value| value.chats())
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description())
    }
}
impl SmartFilterPath<crate::types::GiveawayCompleted> {
    #[must_use]
    pub fn winner_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winner_count)
    }

    #[must_use]
    pub fn unclaimed_prize_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unclaimed_prize_count.as_ref())
    }

    #[must_use]
    pub fn giveaway_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.giveaway_message.as_deref())
    }

    #[must_use]
    pub fn is_star_giveaway(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_star_giveaway.as_ref())
    }
}
impl SmartFilterPath<crate::types::GiveawayCreated> {
    #[must_use]
    pub fn prize_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.prize_star_count.as_ref())
    }
}
impl SmartFilterPath<crate::types::GiveawayPremium> {
    #[must_use]
    pub fn chats(self) -> SmartFilterPath<[crate::types::Chat]> {
        self.map(|value| value.chats.as_ref())
    }

    #[must_use]
    pub fn winners_selection_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winners_selection_date)
    }

    #[must_use]
    pub fn winner_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winner_count)
    }

    #[must_use]
    pub fn only_new_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.only_new_members.as_ref())
    }

    #[must_use]
    pub fn has_public_winners(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_public_winners.as_ref())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description.as_deref())
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes.as_deref())
    }

    #[must_use]
    pub fn premium_subscription_month_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.premium_subscription_month_count)
    }
}
impl SmartFilterPath<crate::types::GiveawayStar> {
    #[must_use]
    pub fn chats(self) -> SmartFilterPath<[crate::types::Chat]> {
        self.map(|value| value.chats.as_ref())
    }

    #[must_use]
    pub fn winners_selection_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winners_selection_date)
    }

    #[must_use]
    pub fn winner_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winner_count)
    }

    #[must_use]
    pub fn only_new_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.only_new_members.as_ref())
    }

    #[must_use]
    pub fn has_public_winners(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_public_winners.as_ref())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description.as_deref())
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes.as_deref())
    }

    #[must_use]
    pub fn prize_star_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.prize_star_count)
    }
}
impl SmartFilterPath<crate::types::GiveawayWinners> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description())
    }

    #[must_use]
    pub fn winners(self) -> SmartFilterPath<[crate::types::User]> {
        self.map(|value| value.winners())
    }
}
impl SmartFilterPath<crate::types::GiveawayWinnersPremium> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn giveaway_message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.giveaway_message_id)
    }

    #[must_use]
    pub fn winners_selection_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winners_selection_date)
    }

    #[must_use]
    pub fn winner_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winner_count)
    }

    #[must_use]
    pub fn winners(self) -> SmartFilterPath<[crate::types::User]> {
        self.map(|value| value.winners.as_ref())
    }

    #[must_use]
    pub fn additional_chat_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.additional_chat_count.as_ref())
    }

    #[must_use]
    pub fn premium_subscription_month_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.premium_subscription_month_count)
    }

    #[must_use]
    pub fn unclaimed_prize_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unclaimed_prize_count.as_ref())
    }

    #[must_use]
    pub fn only_new_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.only_new_members.as_ref())
    }

    #[must_use]
    pub fn was_refunded(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.was_refunded.as_ref())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description.as_deref())
    }
}
impl SmartFilterPath<crate::types::GiveawayWinnersStar> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn giveaway_message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.giveaway_message_id)
    }

    #[must_use]
    pub fn winners_selection_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winners_selection_date)
    }

    #[must_use]
    pub fn winner_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.winner_count)
    }

    #[must_use]
    pub fn winners(self) -> SmartFilterPath<[crate::types::User]> {
        self.map(|value| value.winners.as_ref())
    }

    #[must_use]
    pub fn additional_chat_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.additional_chat_count.as_ref())
    }

    #[must_use]
    pub fn prize_star_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.prize_star_count)
    }

    #[must_use]
    pub fn unclaimed_prize_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unclaimed_prize_count.as_ref())
    }

    #[must_use]
    pub fn only_new_members(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.only_new_members.as_ref())
    }

    #[must_use]
    pub fn was_refunded(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.was_refunded.as_ref())
    }

    #[must_use]
    pub fn prize_description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.prize_description.as_deref())
    }
}
impl SmartFilterPath<crate::types::InaccessibleMessage> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }
}
impl SmartFilterPath<crate::types::InlineKeyboardButton> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn icon_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.icon_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn style(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.style.as_deref())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url.as_deref())
    }

    #[must_use]
    pub fn callback_data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.callback_data.as_deref())
    }

    #[must_use]
    pub fn web_app(self) -> SmartFilterPath<crate::types::WebAppInfo> {
        self.and_then(|value| value.web_app.as_ref())
    }

    #[must_use]
    pub fn login_url(self) -> SmartFilterPath<crate::types::LoginUrl> {
        self.and_then(|value| value.login_url.as_ref())
    }

    #[must_use]
    pub fn switch_inline_query(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.switch_inline_query.as_deref())
    }

    #[must_use]
    pub fn switch_inline_query_current_chat(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.switch_inline_query_current_chat.as_deref())
    }

    #[must_use]
    pub fn switch_inline_query_chosen_chat(
        self,
    ) -> SmartFilterPath<crate::types::SwitchInlineQueryChosenChat> {
        self.and_then(|value| value.switch_inline_query_chosen_chat.as_ref())
    }

    #[must_use]
    pub fn copy_text(self) -> SmartFilterPath<crate::types::CopyTextButton> {
        self.and_then(|value| value.copy_text.as_ref())
    }

    #[must_use]
    pub fn callback_game(self) -> SmartFilterPath<crate::types::CallbackGame> {
        self.and_then(|value| value.callback_game.as_ref())
    }

    #[must_use]
    pub fn pay(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.pay.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineKeyboardMarkup> {
    #[must_use]
    pub fn inline_keyboard(self) -> SmartFilterPath<[Box<[crate::types::InlineKeyboardButton]>]> {
        self.map(|value| value.inline_keyboard.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQuery> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn query(self) -> SmartFilterPath<str> {
        self.map(|value| value.query.as_ref())
    }

    #[must_use]
    pub fn offset(self) -> SmartFilterPath<str> {
        self.map(|value| value.offset.as_ref())
    }

    #[must_use]
    pub fn chat_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.chat_type.as_deref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResult> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.address())
    }

    #[must_use]
    pub fn audio_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.audio_file_id())
    }

    #[must_use]
    pub fn audio_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.audio_url())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn document_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.document_file_id())
    }

    #[must_use]
    pub fn document_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.document_url())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type())
    }

    #[must_use]
    pub fn game_short_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.game_short_name())
    }

    #[must_use]
    pub fn gif_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.gif_file_id())
    }

    #[must_use]
    pub fn gif_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.gif_url())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer())
    }

    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.phone_number())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn sticker_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sticker_file_id())
    }

    #[must_use]
    pub fn thumbnail_mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_mime_type())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url())
    }

    #[must_use]
    pub fn vcard(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.vcard())
    }

    #[must_use]
    pub fn video_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.video_file_id())
    }

    #[must_use]
    pub fn video_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.video_url())
    }

    #[must_use]
    pub fn voice_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.voice_file_id())
    }

    #[must_use]
    pub fn voice_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.voice_url())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultArticle> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.map(|value| &value.input_message_content)
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url.as_deref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url.as_deref())
    }

    #[must_use]
    pub fn thumbnail_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_width.as_ref())
    }

    #[must_use]
    pub fn thumbnail_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_height.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultAudio> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn audio_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.audio_url.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer.as_deref())
    }

    #[must_use]
    pub fn audio_duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.audio_duration.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultAudioKind> {
    #[must_use]
    pub fn audio_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.audio_file_id())
    }

    #[must_use]
    pub fn audio_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.audio_url())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedAudio> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn audio_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.audio_file_id.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedDocument> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn document_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.document_file_id.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedGif> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn gif_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.gif_file_id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedMpeg4Gif> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn mpeg4_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.mpeg4_file_id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedPhoto> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn photo_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.photo_file_id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedSticker> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn sticker_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.sticker_file_id.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedVideo> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn video_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.video_file_id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultCachedVoice> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn voice_file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.voice_file_id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultContact> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.map(|value| value.phone_number.as_ref())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.first_name.as_ref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn vcard(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.vcard.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url.as_deref())
    }

    #[must_use]
    pub fn thumbnail_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_width.as_ref())
    }

    #[must_use]
    pub fn thumbnail_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_height.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultDocument> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn document_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.document_url.as_ref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.map(|value| value.mime_type.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url.as_deref())
    }

    #[must_use]
    pub fn thumbnail_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_width.as_ref())
    }

    #[must_use]
    pub fn thumbnail_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_height.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultDocumentKind> {
    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn document_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.document_file_id())
    }

    #[must_use]
    pub fn document_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.document_url())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultGame> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn game_short_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.game_short_name.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultGif> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn gif_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.gif_url.as_ref())
    }

    #[must_use]
    pub fn gif_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.gif_width.as_ref())
    }

    #[must_use]
    pub fn gif_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.gif_height.as_ref())
    }

    #[must_use]
    pub fn gif_duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.gif_duration.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.thumbnail_url.as_ref())
    }

    #[must_use]
    pub fn thumbnail_mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_mime_type.as_deref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultGifKind> {
    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn gif_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.gif_file_id())
    }

    #[must_use]
    pub fn gif_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.gif_url())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn thumbnail_mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_mime_type())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultLocation> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn horizontal_accuracy(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.horizontal_accuracy.as_ref())
    }

    #[must_use]
    pub fn live_period(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.live_period.as_ref())
    }

    #[must_use]
    pub fn heading(self) -> SmartFilterPath<u16> {
        self.and_then(|value| value.heading.as_ref())
    }

    #[must_use]
    pub fn proximity_alert_radius(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.proximity_alert_radius.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url.as_deref())
    }

    #[must_use]
    pub fn thumbnail_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_width.as_ref())
    }

    #[must_use]
    pub fn thumbnail_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_height.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultMpeg4Gif> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn mpeg4_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.mpeg4_url.as_ref())
    }

    #[must_use]
    pub fn mpeg4_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.mpeg4_width.as_ref())
    }

    #[must_use]
    pub fn mpeg4_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.mpeg4_height.as_ref())
    }

    #[must_use]
    pub fn mpeg4_duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.mpeg4_duration.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.thumbnail_url.as_ref())
    }

    #[must_use]
    pub fn thumbnail_mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_mime_type.as_deref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultPhoto> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn photo_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.photo_url.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.thumbnail_url.as_ref())
    }

    #[must_use]
    pub fn photo_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.photo_width.as_ref())
    }

    #[must_use]
    pub fn photo_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.photo_height.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultVenue> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id.as_deref())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type.as_deref())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id.as_deref())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url.as_deref())
    }

    #[must_use]
    pub fn thumbnail_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_width.as_ref())
    }

    #[must_use]
    pub fn thumbnail_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.thumbnail_height.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultVideo> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn video_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.video_url.as_ref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.map(|value| value.mime_type.as_ref())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.thumbnail_url.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn video_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.video_width.as_ref())
    }

    #[must_use]
    pub fn video_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.video_height.as_ref())
    }

    #[must_use]
    pub fn video_duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.video_duration.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultVideoKind> {
    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn thumbnail_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.thumbnail_url())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title())
    }

    #[must_use]
    pub fn video_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.video_file_id())
    }

    #[must_use]
    pub fn video_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.video_url())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultVoice> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn voice_url(self) -> SmartFilterPath<str> {
        self.map(|value| value.voice_url.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn voice_duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.voice_duration.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content.as_ref())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultVoiceKind> {
    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn input_message_content(self) -> SmartFilterPath<crate::types::InputMessageContent> {
        self.and_then(|value| value.input_message_content())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title())
    }

    #[must_use]
    pub fn voice_file_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.voice_file_id())
    }

    #[must_use]
    pub fn voice_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.voice_url())
    }
}
impl SmartFilterPath<crate::types::InlineQueryResultsButton> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn web_app(self) -> SmartFilterPath<crate::types::WebAppInfo> {
        self.and_then(|value| value.web_app.as_ref())
    }

    #[must_use]
    pub fn start_parameter(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.start_parameter.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputChecklist> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn title_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.title_entities.as_deref())
    }

    #[must_use]
    pub fn tasks(self) -> SmartFilterPath<[crate::types::InputChecklistTask]> {
        self.map(|value| value.tasks.as_ref())
    }

    #[must_use]
    pub fn others_can_add_tasks(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.others_can_add_tasks.as_ref())
    }

    #[must_use]
    pub fn others_can_mark_tasks_as_done(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.others_can_mark_tasks_as_done.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputChecklistTask> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.text_entities.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputContactMessageContent> {
    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.map(|value| value.phone_number.as_ref())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.first_name.as_ref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn vcard(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.vcard.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputInvoiceMessageContent> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.map(|value| value.description.as_ref())
    }

    #[must_use]
    pub fn payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.payload.as_ref())
    }

    #[must_use]
    pub fn provider_token(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.provider_token.as_deref())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn prices(self) -> SmartFilterPath<[crate::types::LabeledPrice]> {
        self.map(|value| value.prices.as_ref())
    }

    #[must_use]
    pub fn max_tip_amount(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.max_tip_amount.as_ref())
    }

    #[must_use]
    pub fn suggested_tip_amounts(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.suggested_tip_amounts.as_deref())
    }

    #[must_use]
    pub fn provider_data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.provider_data.as_deref())
    }

    #[must_use]
    pub fn photo_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.photo_url.as_deref())
    }

    #[must_use]
    pub fn photo_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.photo_size.as_ref())
    }

    #[must_use]
    pub fn photo_width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.photo_width.as_ref())
    }

    #[must_use]
    pub fn photo_height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.photo_height.as_ref())
    }

    #[must_use]
    pub fn need_name(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.need_name.as_ref())
    }

    #[must_use]
    pub fn need_phone_number(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.need_phone_number.as_ref())
    }

    #[must_use]
    pub fn need_email(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.need_email.as_ref())
    }

    #[must_use]
    pub fn need_shipping_address(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.need_shipping_address.as_ref())
    }

    #[must_use]
    pub fn send_phone_number_to_provider(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.send_phone_number_to_provider.as_ref())
    }

    #[must_use]
    pub fn send_email_to_provider(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.send_email_to_provider.as_ref())
    }

    #[must_use]
    pub fn is_flexible(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_flexible.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputLocationMessageContent> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn horizontal_accuracy(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.horizontal_accuracy.as_ref())
    }

    #[must_use]
    pub fn live_period(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.live_period.as_ref())
    }

    #[must_use]
    pub fn heading(self) -> SmartFilterPath<u16> {
        self.and_then(|value| value.heading.as_ref())
    }

    #[must_use]
    pub fn proximity_alert_radius(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.proximity_alert_radius.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMedia> {
    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| value.media())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InputMediaAnimation> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.width.as_ref())
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.height.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.duration.as_ref())
    }

    #[must_use]
    pub fn has_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_spoiler.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMediaAudio> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.duration.as_ref())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer.as_deref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputMediaDocument> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn disable_content_type_detection(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.disable_content_type_detection.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMediaLivePhoto> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.photo)
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_spoiler.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMediaLocation> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn horizontal_accuracy(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.horizontal_accuracy.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMediaPhoto> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_spoiler.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMediaSticker> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputMediaVenue> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id.as_deref())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type.as_deref())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id.as_deref())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputMediaVideo> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover.as_ref())
    }

    #[must_use]
    pub fn start_timestamp(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.start_timestamp.as_ref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.width.as_ref())
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.height.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.duration.as_ref())
    }

    #[must_use]
    pub fn supports_streaming(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.supports_streaming.as_ref())
    }

    #[must_use]
    pub fn has_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_spoiler.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputMessageContent> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.address())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.currency())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities())
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options())
    }

    #[must_use]
    pub fn message_text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.message_text())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.payload())
    }

    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.phone_number())
    }

    #[must_use]
    pub fn photo_url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.photo_url())
    }

    #[must_use]
    pub fn prices(self) -> SmartFilterPath<[crate::types::LabeledPrice]> {
        self.and_then(|value| value.prices())
    }

    #[must_use]
    pub fn provider_data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.provider_data())
    }

    #[must_use]
    pub fn provider_token(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.provider_token())
    }

    #[must_use]
    pub fn suggested_tip_amounts(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.suggested_tip_amounts())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }

    #[must_use]
    pub fn vcard(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.vcard())
    }
}
impl SmartFilterPath<crate::types::InputPaidMedia> {
    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| value.media())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail())
    }
}
impl SmartFilterPath<crate::types::InputPaidMediaLivePhoto> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.photo)
    }
}
impl SmartFilterPath<crate::types::InputPaidMediaPhoto> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }
}
impl SmartFilterPath<crate::types::InputPaidMediaVideo> {
    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.media)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover.as_ref())
    }

    #[must_use]
    pub fn start_timestamp(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.start_timestamp.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.width.as_ref())
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.height.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.duration.as_ref())
    }

    #[must_use]
    pub fn supports_streaming(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.supports_streaming.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputPollMedia> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.address())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.media())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn performer(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.performer())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InputPollOption> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn text_parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text_parse_mode.as_deref())
    }

    #[must_use]
    pub fn text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.text_entities.as_deref())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputPollOptionMedia> {
        self.and_then(|value| value.media.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputPollOptionMedia> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.address())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.cover())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.media())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.thumbnail())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.title())
    }
}
impl SmartFilterPath<crate::types::InputProfilePhoto> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }
}
impl SmartFilterPath<crate::types::InputProfilePhotoAnimated> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.animation)
    }

    #[must_use]
    pub fn main_frame_timestamp(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.main_frame_timestamp.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputProfilePhotoStatic> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.photo)
    }
}
impl SmartFilterPath<crate::types::InputSticker> {
    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.sticker)
    }

    #[must_use]
    pub fn format(self) -> SmartFilterPath<str> {
        self.map(|value| value.format.as_ref())
    }

    #[must_use]
    pub fn emoji_list(self) -> SmartFilterPath<[Box<str>]> {
        self.map(|value| value.emoji_list.as_ref())
    }

    #[must_use]
    pub fn mask_position(self) -> SmartFilterPath<crate::types::MaskPosition> {
        self.and_then(|value| value.mask_position.as_ref())
    }

    #[must_use]
    pub fn keywords(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.keywords.as_deref())
    }
}
impl SmartFilterPath<crate::types::InputStoryContent> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::InputFile> {
        self.and_then(|value| value.video())
    }
}
impl SmartFilterPath<crate::types::InputStoryContentPhoto> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.photo)
    }
}
impl SmartFilterPath<crate::types::InputStoryContentVideo> {
    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::InputFile> {
        self.map(|value| &value.video)
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.duration.as_ref())
    }

    #[must_use]
    pub fn cover_frame_timestamp(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.cover_frame_timestamp.as_ref())
    }

    #[must_use]
    pub fn is_animation(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_animation.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputTextMessageContent> {
    #[must_use]
    pub fn message_text(self) -> SmartFilterPath<str> {
        self.map(|value| value.message_text.as_ref())
    }

    #[must_use]
    pub fn parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.parse_mode.as_deref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }
}
impl SmartFilterPath<crate::types::InputVenueMessageContent> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id.as_deref())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type.as_deref())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id.as_deref())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type.as_deref())
    }
}
impl SmartFilterPath<crate::types::Invoice> {
    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.map(|value| value.description.as_ref())
    }

    #[must_use]
    pub fn start_parameter(self) -> SmartFilterPath<str> {
        self.map(|value| value.start_parameter.as_ref())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn total_amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_amount)
    }
}
impl SmartFilterPath<crate::types::KeyboardButton> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn icon_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.icon_custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn style(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.style.as_deref())
    }

    #[must_use]
    pub fn request_users(self) -> SmartFilterPath<crate::types::KeyboardButtonRequestUsers> {
        self.and_then(|value| value.request_users.as_ref())
    }

    #[must_use]
    pub fn request_chat(self) -> SmartFilterPath<crate::types::KeyboardButtonRequestChat> {
        self.and_then(|value| value.request_chat.as_ref())
    }

    #[must_use]
    pub fn request_managed_bot(
        self,
    ) -> SmartFilterPath<crate::types::KeyboardButtonRequestManagedBot> {
        self.and_then(|value| value.request_managed_bot.as_ref())
    }

    #[must_use]
    pub fn request_contact(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_contact.as_ref())
    }

    #[must_use]
    pub fn request_location(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_location.as_ref())
    }

    #[must_use]
    pub fn request_poll(self) -> SmartFilterPath<crate::types::KeyboardButtonPollType> {
        self.and_then(|value| value.request_poll.as_ref())
    }

    #[must_use]
    pub fn web_app(self) -> SmartFilterPath<crate::types::WebAppInfo> {
        self.and_then(|value| value.web_app.as_ref())
    }
}
impl SmartFilterPath<crate::types::KeyboardButtonPollType> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.r#type.as_deref())
    }
}
impl SmartFilterPath<crate::types::KeyboardButtonRequestChat> {
    #[must_use]
    pub fn request_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_id)
    }

    #[must_use]
    pub fn chat_is_channel(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.chat_is_channel)
    }

    #[must_use]
    pub fn chat_is_forum(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.chat_is_forum.as_ref())
    }

    #[must_use]
    pub fn chat_has_username(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.chat_has_username.as_ref())
    }

    #[must_use]
    pub fn chat_is_created(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.chat_is_created.as_ref())
    }

    #[must_use]
    pub fn user_administrator_rights(
        self,
    ) -> SmartFilterPath<crate::types::ChatAdministratorRights> {
        self.and_then(|value| value.user_administrator_rights.as_ref())
    }

    #[must_use]
    pub fn bot_administrator_rights(
        self,
    ) -> SmartFilterPath<crate::types::ChatAdministratorRights> {
        self.and_then(|value| value.bot_administrator_rights.as_ref())
    }

    #[must_use]
    pub fn bot_is_member(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.bot_is_member.as_ref())
    }

    #[must_use]
    pub fn request_title(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_title.as_ref())
    }

    #[must_use]
    pub fn request_username(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_username.as_ref())
    }

    #[must_use]
    pub fn request_photo(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::KeyboardButtonRequestManagedBot> {
    #[must_use]
    pub fn request_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_id)
    }

    #[must_use]
    pub fn suggested_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.suggested_name.as_deref())
    }

    #[must_use]
    pub fn suggested_username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.suggested_username.as_deref())
    }
}
impl SmartFilterPath<crate::types::KeyboardButtonRequestUsers> {
    #[must_use]
    pub fn request_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_id)
    }

    #[must_use]
    pub fn user_is_bot(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.user_is_bot.as_ref())
    }

    #[must_use]
    pub fn user_is_premium(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.user_is_premium.as_ref())
    }

    #[must_use]
    pub fn max_quantity(self) -> SmartFilterPath<u8> {
        self.and_then(|value| value.max_quantity.as_ref())
    }

    #[must_use]
    pub fn request_name(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_name.as_ref())
    }

    #[must_use]
    pub fn request_username(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_username.as_ref())
    }

    #[must_use]
    pub fn request_photo(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::LabeledPrice> {
    #[must_use]
    pub fn label(self) -> SmartFilterPath<str> {
        self.map(|value| value.label.as_ref())
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.amount)
    }
}
impl SmartFilterPath<crate::types::LinkPreviewOptions> {
    #[must_use]
    pub fn is_disabled(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_disabled.as_ref())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url.as_deref())
    }

    #[must_use]
    pub fn prefer_small_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.prefer_small_media.as_ref())
    }

    #[must_use]
    pub fn prefer_large_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.prefer_large_media.as_ref())
    }

    #[must_use]
    pub fn show_above_text(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_above_text.as_ref())
    }
}
impl SmartFilterPath<crate::types::LivePhoto> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo.as_deref())
    }

    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::Location> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn horizontal_accuracy(self) -> SmartFilterPath<f64> {
        self.and_then(|value| value.horizontal_accuracy.as_ref())
    }

    #[must_use]
    pub fn live_period(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.live_period.as_ref())
    }

    #[must_use]
    pub fn heading(self) -> SmartFilterPath<u16> {
        self.and_then(|value| value.heading.as_ref())
    }

    #[must_use]
    pub fn proximity_alert_radius(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.proximity_alert_radius.as_ref())
    }
}
impl SmartFilterPath<crate::types::LocationAddress> {
    #[must_use]
    pub fn country_code(self) -> SmartFilterPath<str> {
        self.map(|value| value.country_code.as_ref())
    }

    #[must_use]
    pub fn state(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.state.as_deref())
    }

    #[must_use]
    pub fn city(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.city.as_deref())
    }

    #[must_use]
    pub fn street(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.street.as_deref())
    }
}
impl SmartFilterPath<crate::types::LoginUrl> {
    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }

    #[must_use]
    pub fn forward_text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.forward_text.as_deref())
    }

    #[must_use]
    pub fn bot_username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.bot_username.as_deref())
    }

    #[must_use]
    pub fn request_write_access(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.request_write_access.as_ref())
    }
}
impl SmartFilterPath<crate::types::ManagedBotCreated> {
    #[must_use]
    pub fn bot(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.bot.as_ref())
    }
}
impl SmartFilterPath<crate::types::ManagedBotUpdated> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn bot(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.bot.as_ref())
    }
}
impl SmartFilterPath<crate::types::MaskPosition> {
    #[must_use]
    pub fn point(self) -> SmartFilterPath<str> {
        self.map(|value| value.point.as_ref())
    }

    #[must_use]
    pub fn x_shift(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.x_shift)
    }

    #[must_use]
    pub fn y_shift(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.y_shift)
    }

    #[must_use]
    pub fn scale(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.scale)
    }
}
impl SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.audio())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature())
    }

    #[must_use]
    pub fn boost_added(self) -> SmartFilterPath<crate::types::ChatBoostAdded> {
        self.and_then(|value| value.boost_added())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat())
    }

    #[must_use]
    pub fn chat_background_set(self) -> SmartFilterPath<crate::types::ChatBackground> {
        self.and_then(|value| value.chat_background_set())
    }

    #[must_use]
    pub fn chat_owner_changed(self) -> SmartFilterPath<crate::types::ChatOwnerChanged> {
        self.and_then(|value| value.chat_owner_changed())
    }

    #[must_use]
    pub fn chat_owner_left(self) -> SmartFilterPath<crate::types::ChatOwnerLeft> {
        self.and_then(|value| value.chat_owner_left())
    }

    #[must_use]
    pub fn chat_shared(self) -> SmartFilterPath<crate::types::ChatShared> {
        self.and_then(|value| value.chat_shared())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.and_then(|value| value.checklist())
    }

    #[must_use]
    pub fn checklist_tasks_added(self) -> SmartFilterPath<crate::types::ChecklistTasksAdded> {
        self.and_then(|value| value.checklist_tasks_added())
    }

    #[must_use]
    pub fn checklist_tasks_done(self) -> SmartFilterPath<crate::types::ChecklistTasksDone> {
        self.and_then(|value| value.checklist_tasks_done())
    }

    #[must_use]
    pub fn connected_website(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.connected_website())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.and_then(|value| value.contact())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.and_then(|value| value.dice())
    }

    #[must_use]
    pub fn direct_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::DirectMessagePriceChanged> {
        self.and_then(|value| value.direct_message_price_changed())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply())
    }

    #[must_use]
    pub fn forum_topic_closed(self) -> SmartFilterPath<crate::types::ForumTopicClosed> {
        self.and_then(|value| value.forum_topic_closed())
    }

    #[must_use]
    pub fn forum_topic_created(self) -> SmartFilterPath<crate::types::ForumTopicCreated> {
        self.and_then(|value| value.forum_topic_created())
    }

    #[must_use]
    pub fn forum_topic_edited(self) -> SmartFilterPath<crate::types::ForumTopicEdited> {
        self.and_then(|value| value.forum_topic_edited())
    }

    #[must_use]
    pub fn forum_topic_reopened(self) -> SmartFilterPath<crate::types::ForumTopicReopened> {
        self.and_then(|value| value.forum_topic_reopened())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.and_then(|value| value.game())
    }

    #[must_use]
    pub fn general_forum_topic_hidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicHidden> {
        self.and_then(|value| value.general_forum_topic_hidden())
    }

    #[must_use]
    pub fn general_forum_topic_unhidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicUnhidden> {
        self.and_then(|value| value.general_forum_topic_unhidden())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift())
    }

    #[must_use]
    pub fn gift_upgrade_sent(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift_upgrade_sent())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.and_then(|value| value.giveaway())
    }

    #[must_use]
    pub fn giveaway_completed(self) -> SmartFilterPath<crate::types::GiveawayCompleted> {
        self.and_then(|value| value.giveaway_completed())
    }

    #[must_use]
    pub fn giveaway_created(self) -> SmartFilterPath<crate::types::GiveawayCreated> {
        self.and_then(|value| value.giveaway_created())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.and_then(|value| value.giveaway_winners())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user())
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.and_then(|value| value.invoice())
    }

    #[must_use]
    pub fn left_chat_member(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.left_chat_member())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn managed_bot_created(self) -> SmartFilterPath<crate::types::ManagedBotCreated> {
        self.and_then(|value| value.managed_bot_created())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id())
    }

    #[must_use]
    pub fn message_auto_delete_timer_changed(
        self,
    ) -> SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
        self.and_then(|value| value.message_auto_delete_timer_changed())
    }

    #[must_use]
    pub fn new_chat_members(self) -> SmartFilterPath<[crate::types::User]> {
        self.and_then(|value| value.new_chat_members())
    }

    #[must_use]
    pub fn new_chat_photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.new_chat_photo())
    }

    #[must_use]
    pub fn new_chat_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.new_chat_title())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn paid_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::PaidMessagePriceChanged> {
        self.and_then(|value| value.paid_message_price_changed())
    }

    #[must_use]
    pub fn passport_data(self) -> SmartFilterPath<crate::types::PassportData> {
        self.and_then(|value| value.passport_data())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.pinned_message())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.and_then(|value| value.poll())
    }

    #[must_use]
    pub fn poll_option_added(self) -> SmartFilterPath<crate::types::PollOptionAdded> {
        self.and_then(|value| value.poll_option_added())
    }

    #[must_use]
    pub fn poll_option_deleted(self) -> SmartFilterPath<crate::types::PollOptionDeleted> {
        self.and_then(|value| value.poll_option_deleted())
    }

    #[must_use]
    pub fn proximity_alert_triggered(
        self,
    ) -> SmartFilterPath<crate::types::ProximityAlertTriggered> {
        self.and_then(|value| value.proximity_alert_triggered())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote())
    }

    #[must_use]
    pub fn refunded_payment(self) -> SmartFilterPath<crate::types::RefundedPayment> {
        self.and_then(|value| value.refunded_payment())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.story())
    }

    #[must_use]
    pub fn successful_payment(self) -> SmartFilterPath<crate::types::SuccessfulPayment> {
        self.and_then(|value| value.successful_payment())
    }

    #[must_use]
    pub fn suggested_post_approval_failed(
        self,
    ) -> SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
        self.and_then(|value| value.suggested_post_approval_failed())
    }

    #[must_use]
    pub fn suggested_post_approved(self) -> SmartFilterPath<crate::types::SuggestedPostApproved> {
        self.and_then(|value| value.suggested_post_approved())
    }

    #[must_use]
    pub fn suggested_post_declined(self) -> SmartFilterPath<crate::types::SuggestedPostDeclined> {
        self.and_then(|value| value.suggested_post_declined())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info())
    }

    #[must_use]
    pub fn suggested_post_paid(self) -> SmartFilterPath<crate::types::SuggestedPostPaid> {
        self.and_then(|value| value.suggested_post_paid())
    }

    #[must_use]
    pub fn suggested_post_refunded(self) -> SmartFilterPath<crate::types::SuggestedPostRefunded> {
        self.and_then(|value| value.suggested_post_refunded())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text())
    }

    #[must_use]
    pub fn unique_gift(self) -> SmartFilterPath<crate::types::UniqueGiftInfo> {
        self.and_then(|value| value.unique_gift())
    }

    #[must_use]
    pub fn users_shared(self) -> SmartFilterPath<crate::types::UsersShared> {
        self.and_then(|value| value.users_shared())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.and_then(|value| value.venue())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }

    #[must_use]
    pub fn video_chat_ended(self) -> SmartFilterPath<crate::types::VideoChatEnded> {
        self.and_then(|value| value.video_chat_ended())
    }

    #[must_use]
    pub fn video_chat_participants_invited(
        self,
    ) -> SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
        self.and_then(|value| value.video_chat_participants_invited())
    }

    #[must_use]
    pub fn video_chat_scheduled(self) -> SmartFilterPath<crate::types::VideoChatScheduled> {
        self.and_then(|value| value.video_chat_scheduled())
    }

    #[must_use]
    pub fn video_chat_started(self) -> SmartFilterPath<crate::types::VideoChatStarted> {
        self.and_then(|value| value.video_chat_started())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.and_then(|value| value.video_note())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.and_then(|value| value.voice())
    }

    #[must_use]
    pub fn web_app_data(self) -> SmartFilterPath<crate::types::WebAppData> {
        self.and_then(|value| value.web_app_data())
    }

    #[must_use]
    pub fn write_access_allowed(self) -> SmartFilterPath<crate::types::WriteAccessAllowed> {
        self.and_then(|value| value.write_access_allowed())
    }
}
impl SmartFilterPath<crate::types::MenuButton> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text())
    }

    #[must_use]
    pub fn web_app(self) -> SmartFilterPath<crate::types::WebAppInfo> {
        self.and_then(|value| value.web_app())
    }
}
impl SmartFilterPath<crate::types::MenuButtonCommands> {}
impl SmartFilterPath<crate::types::MenuButtonDefault> {}
impl SmartFilterPath<crate::types::MenuButtonWebApp> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn web_app(self) -> SmartFilterPath<crate::types::WebAppInfo> {
        self.map(|value| &value.web_app)
    }
}
impl SmartFilterPath<crate::types::Message> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.audio())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature())
    }

    #[must_use]
    pub fn boost_added(self) -> SmartFilterPath<crate::types::ChatBoostAdded> {
        self.and_then(|value| value.boost_added())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat())
    }

    #[must_use]
    pub fn chat_background_set(self) -> SmartFilterPath<crate::types::ChatBackground> {
        self.and_then(|value| value.chat_background_set())
    }

    #[must_use]
    pub fn chat_owner_changed(self) -> SmartFilterPath<crate::types::ChatOwnerChanged> {
        self.and_then(|value| value.chat_owner_changed())
    }

    #[must_use]
    pub fn chat_owner_left(self) -> SmartFilterPath<crate::types::ChatOwnerLeft> {
        self.and_then(|value| value.chat_owner_left())
    }

    #[must_use]
    pub fn chat_shared(self) -> SmartFilterPath<crate::types::ChatShared> {
        self.and_then(|value| value.chat_shared())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.and_then(|value| value.checklist())
    }

    #[must_use]
    pub fn checklist_tasks_added(self) -> SmartFilterPath<crate::types::ChecklistTasksAdded> {
        self.and_then(|value| value.checklist_tasks_added())
    }

    #[must_use]
    pub fn checklist_tasks_done(self) -> SmartFilterPath<crate::types::ChecklistTasksDone> {
        self.and_then(|value| value.checklist_tasks_done())
    }

    #[must_use]
    pub fn connected_website(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.connected_website())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.and_then(|value| value.contact())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.and_then(|value| value.dice())
    }

    #[must_use]
    pub fn direct_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::DirectMessagePriceChanged> {
        self.and_then(|value| value.direct_message_price_changed())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply())
    }

    #[must_use]
    pub fn forum_topic_closed(self) -> SmartFilterPath<crate::types::ForumTopicClosed> {
        self.and_then(|value| value.forum_topic_closed())
    }

    #[must_use]
    pub fn forum_topic_created(self) -> SmartFilterPath<crate::types::ForumTopicCreated> {
        self.and_then(|value| value.forum_topic_created())
    }

    #[must_use]
    pub fn forum_topic_edited(self) -> SmartFilterPath<crate::types::ForumTopicEdited> {
        self.and_then(|value| value.forum_topic_edited())
    }

    #[must_use]
    pub fn forum_topic_reopened(self) -> SmartFilterPath<crate::types::ForumTopicReopened> {
        self.and_then(|value| value.forum_topic_reopened())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.and_then(|value| value.game())
    }

    #[must_use]
    pub fn general_forum_topic_hidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicHidden> {
        self.and_then(|value| value.general_forum_topic_hidden())
    }

    #[must_use]
    pub fn general_forum_topic_unhidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicUnhidden> {
        self.and_then(|value| value.general_forum_topic_unhidden())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift())
    }

    #[must_use]
    pub fn gift_upgrade_sent(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift_upgrade_sent())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.and_then(|value| value.giveaway())
    }

    #[must_use]
    pub fn giveaway_completed(self) -> SmartFilterPath<crate::types::GiveawayCompleted> {
        self.and_then(|value| value.giveaway_completed())
    }

    #[must_use]
    pub fn giveaway_created(self) -> SmartFilterPath<crate::types::GiveawayCreated> {
        self.and_then(|value| value.giveaway_created())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.and_then(|value| value.giveaway_winners())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user())
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.and_then(|value| value.invoice())
    }

    #[must_use]
    pub fn left_chat_member(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.left_chat_member())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn managed_bot_created(self) -> SmartFilterPath<crate::types::ManagedBotCreated> {
        self.and_then(|value| value.managed_bot_created())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id())
    }

    #[must_use]
    pub fn message_auto_delete_timer_changed(
        self,
    ) -> SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
        self.and_then(|value| value.message_auto_delete_timer_changed())
    }

    #[must_use]
    pub fn new_chat_members(self) -> SmartFilterPath<[crate::types::User]> {
        self.and_then(|value| value.new_chat_members())
    }

    #[must_use]
    pub fn new_chat_photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.new_chat_photo())
    }

    #[must_use]
    pub fn new_chat_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.new_chat_title())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn paid_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::PaidMessagePriceChanged> {
        self.and_then(|value| value.paid_message_price_changed())
    }

    #[must_use]
    pub fn passport_data(self) -> SmartFilterPath<crate::types::PassportData> {
        self.and_then(|value| value.passport_data())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.pinned_message())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.and_then(|value| value.poll())
    }

    #[must_use]
    pub fn poll_option_added(self) -> SmartFilterPath<crate::types::PollOptionAdded> {
        self.and_then(|value| value.poll_option_added())
    }

    #[must_use]
    pub fn poll_option_deleted(self) -> SmartFilterPath<crate::types::PollOptionDeleted> {
        self.and_then(|value| value.poll_option_deleted())
    }

    #[must_use]
    pub fn proximity_alert_triggered(
        self,
    ) -> SmartFilterPath<crate::types::ProximityAlertTriggered> {
        self.and_then(|value| value.proximity_alert_triggered())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote())
    }

    #[must_use]
    pub fn refunded_payment(self) -> SmartFilterPath<crate::types::RefundedPayment> {
        self.and_then(|value| value.refunded_payment())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.story())
    }

    #[must_use]
    pub fn successful_payment(self) -> SmartFilterPath<crate::types::SuccessfulPayment> {
        self.and_then(|value| value.successful_payment())
    }

    #[must_use]
    pub fn suggested_post_approval_failed(
        self,
    ) -> SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
        self.and_then(|value| value.suggested_post_approval_failed())
    }

    #[must_use]
    pub fn suggested_post_approved(self) -> SmartFilterPath<crate::types::SuggestedPostApproved> {
        self.and_then(|value| value.suggested_post_approved())
    }

    #[must_use]
    pub fn suggested_post_declined(self) -> SmartFilterPath<crate::types::SuggestedPostDeclined> {
        self.and_then(|value| value.suggested_post_declined())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info())
    }

    #[must_use]
    pub fn suggested_post_paid(self) -> SmartFilterPath<crate::types::SuggestedPostPaid> {
        self.and_then(|value| value.suggested_post_paid())
    }

    #[must_use]
    pub fn suggested_post_refunded(self) -> SmartFilterPath<crate::types::SuggestedPostRefunded> {
        self.and_then(|value| value.suggested_post_refunded())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text())
    }

    #[must_use]
    pub fn unique_gift(self) -> SmartFilterPath<crate::types::UniqueGiftInfo> {
        self.and_then(|value| value.unique_gift())
    }

    #[must_use]
    pub fn users_shared(self) -> SmartFilterPath<crate::types::UsersShared> {
        self.and_then(|value| value.users_shared())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.and_then(|value| value.venue())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }

    #[must_use]
    pub fn video_chat_ended(self) -> SmartFilterPath<crate::types::VideoChatEnded> {
        self.and_then(|value| value.video_chat_ended())
    }

    #[must_use]
    pub fn video_chat_participants_invited(
        self,
    ) -> SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
        self.and_then(|value| value.video_chat_participants_invited())
    }

    #[must_use]
    pub fn video_chat_scheduled(self) -> SmartFilterPath<crate::types::VideoChatScheduled> {
        self.and_then(|value| value.video_chat_scheduled())
    }

    #[must_use]
    pub fn video_chat_started(self) -> SmartFilterPath<crate::types::VideoChatStarted> {
        self.and_then(|value| value.video_chat_started())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.and_then(|value| value.video_note())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.and_then(|value| value.voice())
    }

    #[must_use]
    pub fn web_app_data(self) -> SmartFilterPath<crate::types::WebAppData> {
        self.and_then(|value| value.web_app_data())
    }

    #[must_use]
    pub fn write_access_allowed(self) -> SmartFilterPath<crate::types::WriteAccessAllowed> {
        self.and_then(|value| value.write_access_allowed())
    }
}
impl SmartFilterPath<crate::types::MessageAnimation> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.map(|value| value.animation.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageAudio> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.map(|value| value.audio.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
    #[must_use]
    pub fn message_auto_delete_time(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_auto_delete_time)
    }
}
impl SmartFilterPath<crate::types::MessageBoostAdded> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn boost_added(self) -> SmartFilterPath<crate::types::ChatBoostAdded> {
        self.map(|value| &value.boost_added)
    }
}
impl SmartFilterPath<crate::types::MessageChannelChatCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn channel_chat_created(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.channel_chat_created)
    }
}
impl SmartFilterPath<crate::types::MessageChatBackgroundSet> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn chat_background_set(self) -> SmartFilterPath<crate::types::ChatBackground> {
        self.map(|value| &value.chat_background_set)
    }
}
impl SmartFilterPath<crate::types::MessageChatOwnerChanged> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn chat_owner_changed(self) -> SmartFilterPath<crate::types::ChatOwnerChanged> {
        self.map(|value| &value.chat_owner_changed)
    }
}
impl SmartFilterPath<crate::types::MessageChatOwnerLeft> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn chat_owner_left(self) -> SmartFilterPath<crate::types::ChatOwnerLeft> {
        self.map(|value| &value.chat_owner_left)
    }
}
impl SmartFilterPath<crate::types::MessageChatShared> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn chat_shared(self) -> SmartFilterPath<crate::types::ChatShared> {
        self.map(|value| &value.chat_shared)
    }
}
impl SmartFilterPath<crate::types::MessageChecklist> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.map(|value| &value.checklist)
    }
}
impl SmartFilterPath<crate::types::MessageChecklistTasksAdded> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn checklist_tasks_added(self) -> SmartFilterPath<crate::types::ChecklistTasksAdded> {
        self.map(|value| &value.checklist_tasks_added)
    }
}
impl SmartFilterPath<crate::types::MessageChecklistTasksDone> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn checklist_tasks_done(self) -> SmartFilterPath<crate::types::ChecklistTasksDone> {
        self.map(|value| &value.checklist_tasks_done)
    }
}
impl SmartFilterPath<crate::types::MessageConnectedWebsite> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn connected_website(self) -> SmartFilterPath<str> {
        self.map(|value| value.connected_website.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageContact> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.map(|value| &value.contact)
    }
}
impl SmartFilterPath<crate::types::MessageDeleteChatPhoto> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn delete_chat_photo(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.delete_chat_photo)
    }
}
impl SmartFilterPath<crate::types::MessageDice> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.map(|value| &value.dice)
    }
}
impl SmartFilterPath<crate::types::MessageDirectMessagePriceChanged> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn direct_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::DirectMessagePriceChanged> {
        self.map(|value| &value.direct_message_price_changed)
    }
}
impl SmartFilterPath<crate::types::MessageDocument> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.map(|value| value.document.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageEntity> {
    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id())
    }

    #[must_use]
    pub fn date_time_format(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.date_time_format())
    }

    #[must_use]
    pub fn language(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.language())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user())
    }
}
impl SmartFilterPath<crate::types::MessageEntityBlockquote> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityBold> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityBotCommand> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityCashtag> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityCode> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityCustomEmoji> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.custom_emoji_id.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageEntityDateTime> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn unix_time(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.unix_time)
    }

    #[must_use]
    pub fn date_time_format(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.date_time_format.as_deref())
    }
}
impl SmartFilterPath<crate::types::MessageEntityEmail> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityExpandableBlockquote> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityHashtag> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityItalic> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityMention> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityPhoneNumber> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityPre> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn language(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.language.as_deref())
    }
}
impl SmartFilterPath<crate::types::MessageEntitySpoiler> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityStrikethrough> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityTextLink> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageEntityTextMention> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageEntityUnderline> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageEntityUrl> {
    #[must_use]
    pub fn offset(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.offset)
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }
}
impl SmartFilterPath<crate::types::MessageForumTopicClosed> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn forum_topic_closed(self) -> SmartFilterPath<crate::types::ForumTopicClosed> {
        self.map(|value| &value.forum_topic_closed)
    }
}
impl SmartFilterPath<crate::types::MessageForumTopicCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn forum_topic_created(self) -> SmartFilterPath<crate::types::ForumTopicCreated> {
        self.map(|value| &value.forum_topic_created)
    }
}
impl SmartFilterPath<crate::types::MessageForumTopicEdited> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn forum_topic_edited(self) -> SmartFilterPath<crate::types::ForumTopicEdited> {
        self.map(|value| &value.forum_topic_edited)
    }
}
impl SmartFilterPath<crate::types::MessageForumTopicReopened> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn forum_topic_reopened(self) -> SmartFilterPath<crate::types::ForumTopicReopened> {
        self.map(|value| &value.forum_topic_reopened)
    }
}
impl SmartFilterPath<crate::types::MessageGame> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.map(|value| &value.game)
    }
}
impl SmartFilterPath<crate::types::MessageGeneralForumTopicHidden> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn general_forum_topic_hidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicHidden> {
        self.map(|value| &value.general_forum_topic_hidden)
    }
}
impl SmartFilterPath<crate::types::MessageGeneralForumTopicUnhidden> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn general_forum_topic_unhidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicUnhidden> {
        self.map(|value| &value.general_forum_topic_unhidden)
    }
}
impl SmartFilterPath<crate::types::MessageGift> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.map(|value| &value.gift)
    }
}
impl SmartFilterPath<crate::types::MessageGiftUpgradeSent> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn gift_upgrade_sent(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.map(|value| &value.gift_upgrade_sent)
    }
}
impl SmartFilterPath<crate::types::MessageGiveaway> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.map(|value| &value.giveaway)
    }
}
impl SmartFilterPath<crate::types::MessageGiveawayCompleted> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn giveaway_completed(self) -> SmartFilterPath<crate::types::GiveawayCompleted> {
        self.map(|value| &value.giveaway_completed)
    }
}
impl SmartFilterPath<crate::types::MessageGiveawayCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn giveaway_created(self) -> SmartFilterPath<crate::types::GiveawayCreated> {
        self.map(|value| &value.giveaway_created)
    }
}
impl SmartFilterPath<crate::types::MessageGiveawayWinners> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.map(|value| &value.giveaway_winners)
    }
}
impl SmartFilterPath<crate::types::MessageGroupChatCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn group_chat_created(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.group_chat_created)
    }
}
impl SmartFilterPath<crate::types::MessageId> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }
}
impl SmartFilterPath<crate::types::MessageInvoice> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.map(|value| &value.invoice)
    }
}
impl SmartFilterPath<crate::types::MessageLeftChatMember> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn left_chat_member(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.left_chat_member.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageLivePhoto> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.map(|value| &value.live_photo)
    }
}
impl SmartFilterPath<crate::types::MessageLocation> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.map(|value| &value.location)
    }
}
impl SmartFilterPath<crate::types::MessageManagedBotCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn managed_bot_created(self) -> SmartFilterPath<crate::types::ManagedBotCreated> {
        self.map(|value| &value.managed_bot_created)
    }
}
impl SmartFilterPath<crate::types::MessageMessageAutoDeleteTimerChanged> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn message_auto_delete_timer_changed(
        self,
    ) -> SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
        self.map(|value| &value.message_auto_delete_timer_changed)
    }
}
impl SmartFilterPath<crate::types::MessageMigrateFromChatId> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn migrate_from_chat_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.migrate_from_chat_id)
    }
}
impl SmartFilterPath<crate::types::MessageMigrateToChatId> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn migrate_to_chat_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.migrate_to_chat_id)
    }
}
impl SmartFilterPath<crate::types::MessageNewChatMembers> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn new_chat_members(self) -> SmartFilterPath<[crate::types::User]> {
        self.map(|value| value.new_chat_members.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageNewChatPhoto> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn new_chat_photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.new_chat_photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageNewChatTitle> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn new_chat_title(self) -> SmartFilterPath<str> {
        self.map(|value| value.new_chat_title.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageOrigin> {
    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat())
    }

    #[must_use]
    pub fn sender_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_user())
    }

    #[must_use]
    pub fn sender_user_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_user_name())
    }
}
impl SmartFilterPath<crate::types::MessageOriginChannel> {
    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }
}
impl SmartFilterPath<crate::types::MessageOriginChat> {
    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.sender_chat.as_ref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }
}
impl SmartFilterPath<crate::types::MessageOriginHiddenUser> {
    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn sender_user_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.sender_user_name.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageOriginUser> {
    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn sender_user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.sender_user.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessagePaidMedia> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.map(|value| &value.paid_media)
    }
}
impl SmartFilterPath<crate::types::MessagePaidMessagePriceChanged> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn paid_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::PaidMessagePriceChanged> {
        self.map(|value| &value.paid_message_price_changed)
    }
}
impl SmartFilterPath<crate::types::MessagePassportData> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn passport_data(self) -> SmartFilterPath<crate::types::PassportData> {
        self.map(|value| &value.passport_data)
    }
}
impl SmartFilterPath<crate::types::MessagePhoto> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessagePinnedMessage> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.map(|value| value.pinned_message.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessagePoll> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.map(|value| value.poll.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessagePollOptionAdded> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn poll_option_added(self) -> SmartFilterPath<crate::types::PollOptionAdded> {
        self.map(|value| &value.poll_option_added)
    }
}
impl SmartFilterPath<crate::types::MessagePollOptionDeleted> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn poll_option_deleted(self) -> SmartFilterPath<crate::types::PollOptionDeleted> {
        self.map(|value| &value.poll_option_deleted)
    }
}
impl SmartFilterPath<crate::types::MessageProximityAlertTriggered> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn proximity_alert_triggered(
        self,
    ) -> SmartFilterPath<crate::types::ProximityAlertTriggered> {
        self.map(|value| &value.proximity_alert_triggered)
    }
}
impl SmartFilterPath<crate::types::MessageReactionCountUpdated> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn reactions(self) -> SmartFilterPath<[crate::types::ReactionCount]> {
        self.map(|value| value.reactions.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageReactionUpdated> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user.as_deref())
    }

    #[must_use]
    pub fn actor_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.actor_chat.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn old_reaction(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.map(|value| value.old_reaction.as_ref())
    }

    #[must_use]
    pub fn new_reaction(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.map(|value| value.new_reaction.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageRefundedPayment> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn refunded_payment(self) -> SmartFilterPath<crate::types::RefundedPayment> {
        self.map(|value| &value.refunded_payment)
    }
}
impl SmartFilterPath<crate::types::MessageSticker> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageStory> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.map(|value| &value.story)
    }
}
impl SmartFilterPath<crate::types::MessageSuccessfulPayment> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn successful_payment(self) -> SmartFilterPath<crate::types::SuccessfulPayment> {
        self.map(|value| value.successful_payment.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageSuggestedPostApprovalFailed> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn suggested_post_approval_failed(
        self,
    ) -> SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
        self.map(|value| &value.suggested_post_approval_failed)
    }
}
impl SmartFilterPath<crate::types::MessageSuggestedPostApproved> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn suggested_post_approved(self) -> SmartFilterPath<crate::types::SuggestedPostApproved> {
        self.map(|value| &value.suggested_post_approved)
    }
}
impl SmartFilterPath<crate::types::MessageSuggestedPostDeclined> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn suggested_post_declined(self) -> SmartFilterPath<crate::types::SuggestedPostDeclined> {
        self.map(|value| &value.suggested_post_declined)
    }
}
impl SmartFilterPath<crate::types::MessageSuggestedPostPaid> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn suggested_post_paid(self) -> SmartFilterPath<crate::types::SuggestedPostPaid> {
        self.map(|value| &value.suggested_post_paid)
    }
}
impl SmartFilterPath<crate::types::MessageSuggestedPostRefunded> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn suggested_post_refunded(self) -> SmartFilterPath<crate::types::SuggestedPostRefunded> {
        self.map(|value| &value.suggested_post_refunded)
    }
}
impl SmartFilterPath<crate::types::MessageSupergroupChatCreated> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn supergroup_chat_created(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.supergroup_chat_created)
    }
}
impl SmartFilterPath<crate::types::MessageText> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageUniqueGift> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn unique_gift(self) -> SmartFilterPath<crate::types::UniqueGiftInfo> {
        self.map(|value| &value.unique_gift)
    }
}
impl SmartFilterPath<crate::types::MessageUsersShared> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn users_shared(self) -> SmartFilterPath<crate::types::UsersShared> {
        self.map(|value| &value.users_shared)
    }
}
impl SmartFilterPath<crate::types::MessageVenue> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.map(|value| value.venue.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageVideo> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.map(|value| value.video.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageVideoChatEnded> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video_chat_ended(self) -> SmartFilterPath<crate::types::VideoChatEnded> {
        self.map(|value| &value.video_chat_ended)
    }
}
impl SmartFilterPath<crate::types::MessageVideoChatParticipantsInvited> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video_chat_participants_invited(
        self,
    ) -> SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
        self.map(|value| &value.video_chat_participants_invited)
    }
}
impl SmartFilterPath<crate::types::MessageVideoChatScheduled> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video_chat_scheduled(self) -> SmartFilterPath<crate::types::VideoChatScheduled> {
        self.map(|value| &value.video_chat_scheduled)
    }
}
impl SmartFilterPath<crate::types::MessageVideoChatStarted> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video_chat_started(self) -> SmartFilterPath<crate::types::VideoChatStarted> {
        self.map(|value| &value.video_chat_started)
    }
}
impl SmartFilterPath<crate::types::MessageVideoNote> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.map(|value| value.video_note.as_ref())
    }
}
impl SmartFilterPath<crate::types::MessageVoice> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.map(|value| &value.voice)
    }
}
impl SmartFilterPath<crate::types::MessageWebAppData> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn web_app_data(self) -> SmartFilterPath<crate::types::WebAppData> {
        self.map(|value| &value.web_app_data)
    }
}
impl SmartFilterPath<crate::types::MessageWriteAccessAllowed> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn message_thread_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.message_thread_id.as_ref())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from.as_deref())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat.as_deref())
    }

    #[must_use]
    pub fn sender_boost_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.sender_boost_count.as_ref())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot.as_deref())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag.as_deref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id.as_deref())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id.as_deref())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin.as_ref())
    }

    #[must_use]
    pub fn is_topic_message(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_topic_message.as_ref())
    }

    #[must_use]
    pub fn is_automatic_forward(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_automatic_forward.as_ref())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message.as_deref())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply.as_deref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote.as_ref())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story.as_ref())
    }

    #[must_use]
    pub fn reply_to_checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.reply_to_checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id.as_deref())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user.as_deref())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat.as_deref())
    }

    #[must_use]
    pub fn edit_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.edit_date.as_ref())
    }

    #[must_use]
    pub fn has_protected_content(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_protected_content.as_ref())
    }

    #[must_use]
    pub fn is_from_offline(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_offline.as_ref())
    }

    #[must_use]
    pub fn is_paid_post(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_paid_post.as_ref())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id.as_deref())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature.as_deref())
    }

    #[must_use]
    pub fn paid_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.paid_star_count.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options.as_ref())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info.as_ref())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id.as_deref())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption.as_deref())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities.as_deref())
    }

    #[must_use]
    pub fn show_caption_above_media(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.show_caption_above_media.as_ref())
    }

    #[must_use]
    pub fn has_media_spoiler(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_media_spoiler.as_ref())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup.as_ref())
    }

    #[must_use]
    pub fn write_access_allowed(self) -> SmartFilterPath<crate::types::WriteAccessAllowed> {
        self.map(|value| &value.write_access_allowed)
    }
}
impl SmartFilterPath<crate::types::OrderInfo> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.name.as_deref())
    }

    #[must_use]
    pub fn phone_number(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.phone_number.as_deref())
    }

    #[must_use]
    pub fn email(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.email.as_deref())
    }

    #[must_use]
    pub fn shipping_address(self) -> SmartFilterPath<crate::types::ShippingAddress> {
        self.and_then(|value| value.shipping_address.as_ref())
    }
}
impl SmartFilterPath<crate::types::OwnedGift> {
    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities())
    }

    #[must_use]
    pub fn owned_gift_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.owned_gift_id())
    }

    #[must_use]
    pub fn sender_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_user())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text())
    }
}
impl SmartFilterPath<crate::types::OwnedGiftRegular> {
    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.map(|value| value.gift.as_ref())
    }

    #[must_use]
    pub fn owned_gift_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.owned_gift_id.as_deref())
    }

    #[must_use]
    pub fn sender_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_user.as_deref())
    }

    #[must_use]
    pub fn send_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.send_date)
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text.as_deref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn is_private(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_private.as_ref())
    }

    #[must_use]
    pub fn is_saved(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_saved.as_ref())
    }

    #[must_use]
    pub fn can_be_upgraded(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_be_upgraded.as_ref())
    }

    #[must_use]
    pub fn was_refunded(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.was_refunded.as_ref())
    }

    #[must_use]
    pub fn convert_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.convert_star_count.as_ref())
    }

    #[must_use]
    pub fn prepaid_upgrade_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.prepaid_upgrade_star_count.as_ref())
    }

    #[must_use]
    pub fn is_upgrade_separate(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_upgrade_separate.as_ref())
    }

    #[must_use]
    pub fn unique_gift_number(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.unique_gift_number.as_ref())
    }
}
impl SmartFilterPath<crate::types::OwnedGiftUnique> {
    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::UniqueGift> {
        self.map(|value| value.gift.as_ref())
    }

    #[must_use]
    pub fn owned_gift_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.owned_gift_id.as_deref())
    }

    #[must_use]
    pub fn sender_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_user.as_deref())
    }

    #[must_use]
    pub fn send_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.send_date)
    }

    #[must_use]
    pub fn is_saved(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_saved.as_ref())
    }

    #[must_use]
    pub fn can_be_transferred(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_be_transferred.as_ref())
    }

    #[must_use]
    pub fn transfer_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.transfer_star_count.as_ref())
    }

    #[must_use]
    pub fn next_transfer_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.next_transfer_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::OwnedGifts> {
    #[must_use]
    pub fn total_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_count)
    }

    #[must_use]
    pub fn gifts(self) -> SmartFilterPath<[crate::types::OwnedGift]> {
        self.map(|value| value.gifts.as_ref())
    }

    #[must_use]
    pub fn next_offset(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.next_offset.as_deref())
    }
}
impl SmartFilterPath<crate::types::PaidMedia> {
    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }
}
impl SmartFilterPath<crate::types::PaidMediaInfo> {
    #[must_use]
    pub fn star_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.star_count)
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<[crate::types::PaidMedia]> {
        self.map(|value| value.paid_media.as_ref())
    }
}
impl SmartFilterPath<crate::types::PaidMediaLivePhoto> {
    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.map(|value| &value.live_photo)
    }
}
impl SmartFilterPath<crate::types::PaidMediaPhoto> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::PaidMediaPreview> {
    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.width.as_ref())
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.height.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.duration.as_ref())
    }
}
impl SmartFilterPath<crate::types::PaidMediaPurchased> {
    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn paid_media_payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.paid_media_payload.as_ref())
    }
}
impl SmartFilterPath<crate::types::PaidMediaVideo> {
    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.map(|value| value.video.as_ref())
    }
}
impl SmartFilterPath<crate::types::PaidMessagePriceChanged> {
    #[must_use]
    pub fn paid_message_star_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.paid_message_star_count)
    }
}
impl SmartFilterPath<crate::types::PassportData> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<[crate::types::EncryptedPassportElement]> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn credentials(self) -> SmartFilterPath<crate::types::EncryptedCredentials> {
        self.map(|value| &value.credentials)
    }
}
impl SmartFilterPath<crate::types::PassportElementError> {
    #[must_use]
    pub fn data_hash(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.data_hash())
    }

    #[must_use]
    pub fn element_hash(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.element_hash())
    }

    #[must_use]
    pub fn field_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.field_name())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_hash())
    }

    #[must_use]
    pub fn file_hashes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.file_hashes())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message())
    }

    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorDataField> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn field_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.field_name.as_ref())
    }

    #[must_use]
    pub fn data_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.data_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorFile> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorFiles> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hashes(self) -> SmartFilterPath<[Box<str>]> {
        self.map(|value| value.file_hashes.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorFrontSide> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorReverseSide> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorSelfie> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorTranslationFile> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorTranslationFiles> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn file_hashes(self) -> SmartFilterPath<[Box<str>]> {
        self.map(|value| value.file_hashes.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportElementErrorUnspecified> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<str> {
        self.map(|value| value.r#type.as_ref())
    }

    #[must_use]
    pub fn element_hash(self) -> SmartFilterPath<str> {
        self.map(|value| value.element_hash.as_ref())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<str> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::PassportFile> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.file_size)
    }

    #[must_use]
    pub fn file_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.file_date)
    }
}
impl SmartFilterPath<crate::types::PhotoSize> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::Poll> {
    #[must_use]
    pub fn correct_option_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.correct_option_ids())
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn description_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.description_entities())
    }

    #[must_use]
    pub fn explanation(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.explanation())
    }

    #[must_use]
    pub fn explanation_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.explanation_entities())
    }

    #[must_use]
    pub fn explanation_media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.explanation_media())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.media())
    }

    #[must_use]
    pub fn options(self) -> SmartFilterPath<[crate::types::PollOption]> {
        self.map(|value| value.options())
    }

    #[must_use]
    pub fn question(self) -> SmartFilterPath<str> {
        self.map(|value| value.question())
    }

    #[must_use]
    pub fn question_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.question_entities())
    }
}
impl SmartFilterPath<crate::types::PollAnswer> {
    #[must_use]
    pub fn poll_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.poll_id.as_ref())
    }

    #[must_use]
    pub fn voter_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.voter_chat.as_deref())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user.as_deref())
    }

    #[must_use]
    pub fn option_ids(self) -> SmartFilterPath<[i64]> {
        self.map(|value| value.option_ids.as_ref())
    }

    #[must_use]
    pub fn option_persistent_ids(self) -> SmartFilterPath<[Box<str>]> {
        self.map(|value| value.option_persistent_ids.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMedia> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.audio())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.and_then(|value| value.venue())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }
}
impl SmartFilterPath<crate::types::PollMediaAnimation> {
    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.map(|value| value.animation.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaAudio> {
    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.map(|value| value.audio.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaDocument> {
    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.map(|value| value.document.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaLivePhoto> {
    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.map(|value| &value.live_photo)
    }
}
impl SmartFilterPath<crate::types::PollMediaLocation> {
    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.map(|value| &value.location)
    }
}
impl SmartFilterPath<crate::types::PollMediaPhoto> {
    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.map(|value| value.photo.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaSticker> {
    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaVenue> {
    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.map(|value| value.venue.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollMediaVideo> {
    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.map(|value| value.video.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollOption> {
    #[must_use]
    pub fn persistent_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.persistent_id.as_ref())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.text_entities.as_deref())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.media.as_ref())
    }

    #[must_use]
    pub fn voter_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.voter_count)
    }

    #[must_use]
    pub fn added_by_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.added_by_user.as_deref())
    }

    #[must_use]
    pub fn added_by_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.added_by_chat.as_deref())
    }

    #[must_use]
    pub fn addition_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.addition_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollOptionAdded> {
    #[must_use]
    pub fn poll_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.poll_message.as_deref())
    }

    #[must_use]
    pub fn option_persistent_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.option_persistent_id.as_ref())
    }

    #[must_use]
    pub fn option_text(self) -> SmartFilterPath<str> {
        self.map(|value| value.option_text.as_ref())
    }

    #[must_use]
    pub fn option_text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.option_text_entities.as_deref())
    }
}
impl SmartFilterPath<crate::types::PollOptionDeleted> {
    #[must_use]
    pub fn poll_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.poll_message.as_deref())
    }

    #[must_use]
    pub fn option_persistent_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.option_persistent_id.as_ref())
    }

    #[must_use]
    pub fn option_text(self) -> SmartFilterPath<str> {
        self.map(|value| value.option_text.as_ref())
    }

    #[must_use]
    pub fn option_text_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.option_text_entities.as_deref())
    }
}
impl SmartFilterPath<crate::types::PollQuiz> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn question(self) -> SmartFilterPath<str> {
        self.map(|value| value.question.as_ref())
    }

    #[must_use]
    pub fn question_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.question_entities.as_deref())
    }

    #[must_use]
    pub fn options(self) -> SmartFilterPath<[crate::types::PollOption]> {
        self.map(|value| value.options.as_ref())
    }

    #[must_use]
    pub fn total_voter_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_voter_count)
    }

    #[must_use]
    pub fn is_closed(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_closed)
    }

    #[must_use]
    pub fn is_anonymous(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_anonymous)
    }

    #[must_use]
    pub fn allows_multiple_answers(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.allows_multiple_answers)
    }

    #[must_use]
    pub fn allows_revoting(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.allows_revoting)
    }

    #[must_use]
    pub fn members_only(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.members_only)
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes.as_deref())
    }

    #[must_use]
    pub fn correct_option_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.correct_option_ids.as_deref())
    }

    #[must_use]
    pub fn explanation(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.explanation.as_deref())
    }

    #[must_use]
    pub fn explanation_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.explanation_entities.as_deref())
    }

    #[must_use]
    pub fn explanation_media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.explanation_media.as_ref())
    }

    #[must_use]
    pub fn open_period(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.open_period.as_ref())
    }

    #[must_use]
    pub fn close_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.close_date.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn description_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.description_entities.as_deref())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.media.as_ref())
    }
}
impl SmartFilterPath<crate::types::PollRegular> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn question(self) -> SmartFilterPath<str> {
        self.map(|value| value.question.as_ref())
    }

    #[must_use]
    pub fn question_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.question_entities.as_deref())
    }

    #[must_use]
    pub fn options(self) -> SmartFilterPath<[crate::types::PollOption]> {
        self.map(|value| value.options.as_ref())
    }

    #[must_use]
    pub fn total_voter_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_voter_count)
    }

    #[must_use]
    pub fn is_closed(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_closed)
    }

    #[must_use]
    pub fn is_anonymous(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_anonymous)
    }

    #[must_use]
    pub fn allows_multiple_answers(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.allows_multiple_answers)
    }

    #[must_use]
    pub fn allows_revoting(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.allows_revoting)
    }

    #[must_use]
    pub fn members_only(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.members_only)
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes.as_deref())
    }

    #[must_use]
    pub fn explanation_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.explanation_entities.as_deref())
    }

    #[must_use]
    pub fn open_period(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.open_period.as_ref())
    }

    #[must_use]
    pub fn close_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.close_date.as_ref())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description.as_deref())
    }

    #[must_use]
    pub fn description_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.description_entities.as_deref())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.media.as_ref())
    }
}
impl SmartFilterPath<crate::types::PreCheckoutQuery> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn total_amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_amount)
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.invoice_payload.as_ref())
    }

    #[must_use]
    pub fn shipping_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.shipping_option_id.as_deref())
    }

    #[must_use]
    pub fn order_info(self) -> SmartFilterPath<crate::types::OrderInfo> {
        self.and_then(|value| value.order_info.as_ref())
    }
}
impl SmartFilterPath<crate::types::PreparedInlineMessage> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn expiration_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.expiration_date)
    }
}
impl SmartFilterPath<crate::types::PreparedKeyboardButton> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }
}
impl SmartFilterPath<crate::types::ProximityAlertTriggered> {
    #[must_use]
    pub fn traveler(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.traveler.as_ref())
    }

    #[must_use]
    pub fn watcher(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.watcher.as_ref())
    }

    #[must_use]
    pub fn distance(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.distance)
    }
}
impl SmartFilterPath<crate::types::ReactionCount> {
    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<crate::types::ReactionType> {
        self.map(|value| &value.r#type)
    }

    #[must_use]
    pub fn total_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_count)
    }
}
impl SmartFilterPath<crate::types::ReactionType> {
    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji())
    }
}
impl SmartFilterPath<crate::types::ReactionTypeCustomEmoji> {
    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.custom_emoji_id.as_ref())
    }
}
impl SmartFilterPath<crate::types::ReactionTypeEmoji> {
    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.map(|value| value.emoji.as_ref())
    }
}
impl SmartFilterPath<crate::types::ReactionTypePaid> {}
impl SmartFilterPath<crate::types::RefundedPayment> {
    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn total_amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_amount)
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.invoice_payload.as_ref())
    }

    #[must_use]
    pub fn telegram_payment_charge_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.telegram_payment_charge_id.as_ref())
    }

    #[must_use]
    pub fn provider_payment_charge_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.provider_payment_charge_id.as_deref())
    }
}
impl SmartFilterPath<crate::types::ReplyKeyboardMarkup> {
    #[must_use]
    pub fn keyboard(self) -> SmartFilterPath<[Box<[crate::types::KeyboardButton]>]> {
        self.map(|value| value.keyboard.as_ref())
    }

    #[must_use]
    pub fn is_persistent(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_persistent.as_ref())
    }

    #[must_use]
    pub fn resize_keyboard(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.resize_keyboard.as_ref())
    }

    #[must_use]
    pub fn one_time_keyboard(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.one_time_keyboard.as_ref())
    }

    #[must_use]
    pub fn input_field_placeholder(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.input_field_placeholder.as_deref())
    }

    #[must_use]
    pub fn selective(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.selective.as_ref())
    }
}
impl SmartFilterPath<crate::types::ReplyKeyboardRemove> {
    #[must_use]
    pub fn remove_keyboard(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.remove_keyboard)
    }

    #[must_use]
    pub fn selective(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.selective.as_ref())
    }
}
impl SmartFilterPath<crate::types::ReplyMarkup> {
    #[must_use]
    pub fn inline_keyboard(self) -> SmartFilterPath<[Box<[crate::types::InlineKeyboardButton]>]> {
        self.and_then(|value| value.inline_keyboard())
    }

    #[must_use]
    pub fn input_field_placeholder(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.input_field_placeholder())
    }

    #[must_use]
    pub fn keyboard(self) -> SmartFilterPath<[Box<[crate::types::KeyboardButton]>]> {
        self.and_then(|value| value.keyboard())
    }
}
impl SmartFilterPath<crate::types::ReplyParameters> {
    #[must_use]
    pub fn message_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.message_id)
    }

    #[must_use]
    pub fn chat_id(self) -> SmartFilterPath<crate::types::ChatIdKind> {
        self.and_then(|value| value.chat_id.as_ref())
    }

    #[must_use]
    pub fn allow_sending_without_reply(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allow_sending_without_reply.as_ref())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.quote.as_deref())
    }

    #[must_use]
    pub fn quote_parse_mode(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.quote_parse_mode.as_deref())
    }

    #[must_use]
    pub fn quote_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.quote_entities.as_deref())
    }

    #[must_use]
    pub fn quote_position(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.quote_position.as_ref())
    }

    #[must_use]
    pub fn checklist_task_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.checklist_task_id.as_ref())
    }

    #[must_use]
    pub fn poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.poll_option_id.as_deref())
    }
}
impl SmartFilterPath<crate::types::ResponseParameters> {
    #[must_use]
    pub fn migrate_to_chat_id(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.migrate_to_chat_id.as_ref())
    }

    #[must_use]
    pub fn retry_after(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.retry_after.as_ref())
    }
}
impl SmartFilterPath<crate::types::RevenueWithdrawalState> {
    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url())
    }
}
impl SmartFilterPath<crate::types::RevenueWithdrawalStateFailed> {}
impl SmartFilterPath<crate::types::RevenueWithdrawalStatePending> {}
impl SmartFilterPath<crate::types::RevenueWithdrawalStateSucceeded> {
    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }
}
impl SmartFilterPath<crate::types::SentGuestMessage> {
    #[must_use]
    pub fn inline_message_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.inline_message_id.as_ref())
    }
}
impl SmartFilterPath<crate::types::SentWebAppMessage> {
    #[must_use]
    pub fn inline_message_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.inline_message_id.as_deref())
    }
}
impl SmartFilterPath<crate::types::SharedUser> {
    #[must_use]
    pub fn user_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.user_id)
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.first_name.as_deref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo.as_deref())
    }
}
impl SmartFilterPath<crate::types::ShippingAddress> {
    #[must_use]
    pub fn country_code(self) -> SmartFilterPath<str> {
        self.map(|value| value.country_code.as_ref())
    }

    #[must_use]
    pub fn state(self) -> SmartFilterPath<str> {
        self.map(|value| value.state.as_ref())
    }

    #[must_use]
    pub fn city(self) -> SmartFilterPath<str> {
        self.map(|value| value.city.as_ref())
    }

    #[must_use]
    pub fn street_line1(self) -> SmartFilterPath<str> {
        self.map(|value| value.street_line1.as_ref())
    }

    #[must_use]
    pub fn street_line2(self) -> SmartFilterPath<str> {
        self.map(|value| value.street_line2.as_ref())
    }

    #[must_use]
    pub fn post_code(self) -> SmartFilterPath<str> {
        self.map(|value| value.post_code.as_ref())
    }
}
impl SmartFilterPath<crate::types::ShippingOption> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn prices(self) -> SmartFilterPath<[crate::types::LabeledPrice]> {
        self.map(|value| value.prices.as_ref())
    }
}
impl SmartFilterPath<crate::types::ShippingQuery> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.from.as_ref())
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.invoice_payload.as_ref())
    }

    #[must_use]
    pub fn shipping_address(self) -> SmartFilterPath<crate::types::ShippingAddress> {
        self.map(|value| &value.shipping_address)
    }
}
impl SmartFilterPath<crate::types::StarAmount> {
    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.amount)
    }

    #[must_use]
    pub fn nanostar_amount(self) -> SmartFilterPath<i32> {
        self.and_then(|value| value.nanostar_amount.as_ref())
    }
}
impl SmartFilterPath<crate::types::StarTransaction> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id())
    }

    #[must_use]
    pub fn receiver(self) -> SmartFilterPath<crate::types::TransactionPartner> {
        self.and_then(|value| value.receiver())
    }

    #[must_use]
    pub fn source(self) -> SmartFilterPath<crate::types::TransactionPartner> {
        self.and_then(|value| value.source())
    }
}
impl SmartFilterPath<crate::types::StarTransactionIncoming> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.amount)
    }

    #[must_use]
    pub fn nanostar_amount(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.nanostar_amount.as_ref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn source(self) -> SmartFilterPath<crate::types::TransactionPartner> {
        self.map(|value| &value.source)
    }
}
impl SmartFilterPath<crate::types::StarTransactionOutgoing> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.map(|value| value.id.as_ref())
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.amount)
    }

    #[must_use]
    pub fn nanostar_amount(self) -> SmartFilterPath<u32> {
        self.and_then(|value| value.nanostar_amount.as_ref())
    }

    #[must_use]
    pub fn date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.date)
    }

    #[must_use]
    pub fn receiver(self) -> SmartFilterPath<crate::types::TransactionPartner> {
        self.map(|value| &value.receiver)
    }
}
impl SmartFilterPath<crate::types::StarTransactions> {
    #[must_use]
    pub fn transactions(self) -> SmartFilterPath<[crate::types::StarTransaction]> {
        self.map(|value| value.transactions.as_ref())
    }
}
impl SmartFilterPath<crate::types::Sticker> {
    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji())
    }

    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id())
    }

    #[must_use]
    pub fn mask_position(self) -> SmartFilterPath<crate::types::MaskPosition> {
        self.and_then(|value| value.mask_position())
    }

    #[must_use]
    pub fn premium_animation(self) -> SmartFilterPath<crate::types::File> {
        self.and_then(|value| value.premium_animation())
    }

    #[must_use]
    pub fn set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.set_name())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail())
    }
}
impl SmartFilterPath<crate::types::StickerCustomEmoji> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn is_animated(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_animated)
    }

    #[must_use]
    pub fn is_video(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_video)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji.as_deref())
    }

    #[must_use]
    pub fn set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.set_name.as_deref())
    }

    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn needs_repainting(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.needs_repainting.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::StickerMask> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn is_animated(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_animated)
    }

    #[must_use]
    pub fn is_video(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_video)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji.as_deref())
    }

    #[must_use]
    pub fn set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.set_name.as_deref())
    }

    #[must_use]
    pub fn mask_position(self) -> SmartFilterPath<crate::types::MaskPosition> {
        self.and_then(|value| value.mask_position.as_ref())
    }

    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn needs_repainting(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.needs_repainting.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::StickerRegular> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn is_animated(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_animated)
    }

    #[must_use]
    pub fn is_video(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_video)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji.as_deref())
    }

    #[must_use]
    pub fn set_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.set_name.as_deref())
    }

    #[must_use]
    pub fn premium_animation(self) -> SmartFilterPath<crate::types::File> {
        self.and_then(|value| value.premium_animation.as_ref())
    }

    #[must_use]
    pub fn custom_emoji_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.custom_emoji_id.as_deref())
    }

    #[must_use]
    pub fn needs_repainting(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.needs_repainting.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::StickerSet> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn sticker_type(self) -> SmartFilterPath<str> {
        self.map(|value| value.sticker_type.as_ref())
    }

    #[must_use]
    pub fn stickers(self) -> SmartFilterPath<[crate::types::Sticker]> {
        self.map(|value| value.stickers.as_ref())
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }
}
impl SmartFilterPath<crate::types::Story> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }
}
impl SmartFilterPath<crate::types::StoryArea> {
    #[must_use]
    pub fn position(self) -> SmartFilterPath<crate::types::StoryAreaPosition> {
        self.map(|value| &value.position)
    }

    #[must_use]
    pub fn r#type(self) -> SmartFilterPath<crate::types::StoryAreaType> {
        self.map(|value| &value.r#type)
    }
}
impl SmartFilterPath<crate::types::StoryAreaPosition> {
    #[must_use]
    pub fn x_percentage(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.x_percentage)
    }

    #[must_use]
    pub fn y_percentage(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.y_percentage)
    }

    #[must_use]
    pub fn width_percentage(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.width_percentage)
    }

    #[must_use]
    pub fn height_percentage(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.height_percentage)
    }

    #[must_use]
    pub fn rotation_angle(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.rotation_angle)
    }

    #[must_use]
    pub fn corner_radius_percentage(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.corner_radius_percentage)
    }
}
impl SmartFilterPath<crate::types::StoryAreaType> {
    #[must_use]
    pub fn address(self) -> SmartFilterPath<crate::types::LocationAddress> {
        self.and_then(|value| value.address())
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.emoji())
    }

    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.name())
    }

    #[must_use]
    pub fn reaction_type(self) -> SmartFilterPath<crate::types::ReactionType> {
        self.and_then(|value| value.reaction_type())
    }

    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.url())
    }
}
impl SmartFilterPath<crate::types::StoryAreaTypeLink> {
    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }
}
impl SmartFilterPath<crate::types::StoryAreaTypeLocation> {
    #[must_use]
    pub fn latitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.latitude)
    }

    #[must_use]
    pub fn longitude(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.longitude)
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<crate::types::LocationAddress> {
        self.and_then(|value| value.address.as_ref())
    }
}
impl SmartFilterPath<crate::types::StoryAreaTypeSuggestedReaction> {
    #[must_use]
    pub fn reaction_type(self) -> SmartFilterPath<crate::types::ReactionType> {
        self.map(|value| &value.reaction_type)
    }

    #[must_use]
    pub fn is_dark(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_dark.as_ref())
    }

    #[must_use]
    pub fn is_flipped(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_flipped.as_ref())
    }
}
impl SmartFilterPath<crate::types::StoryAreaTypeUniqueGift> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }
}
impl SmartFilterPath<crate::types::StoryAreaTypeWeather> {
    #[must_use]
    pub fn temperature(self) -> SmartFilterPath<f64> {
        self.map(|value| &value.temperature)
    }

    #[must_use]
    pub fn emoji(self) -> SmartFilterPath<str> {
        self.map(|value| value.emoji.as_ref())
    }

    #[must_use]
    pub fn background_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.background_color)
    }
}
impl SmartFilterPath<crate::types::SuccessfulPayment> {
    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn total_amount(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_amount)
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.map(|value| value.invoice_payload.as_ref())
    }

    #[must_use]
    pub fn subscription_expiration_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.subscription_expiration_date.as_ref())
    }

    #[must_use]
    pub fn is_recurring(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_recurring.as_ref())
    }

    #[must_use]
    pub fn is_first_recurring(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_first_recurring.as_ref())
    }

    #[must_use]
    pub fn shipping_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.shipping_option_id.as_deref())
    }

    #[must_use]
    pub fn order_info(self) -> SmartFilterPath<crate::types::OrderInfo> {
        self.and_then(|value| value.order_info.as_ref())
    }

    #[must_use]
    pub fn telegram_payment_charge_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.telegram_payment_charge_id.as_ref())
    }

    #[must_use]
    pub fn provider_payment_charge_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.provider_payment_charge_id.as_ref())
    }
}
impl SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
    #[must_use]
    pub fn suggested_post_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.suggested_post_message.as_deref())
    }

    #[must_use]
    pub fn price(self) -> SmartFilterPath<crate::types::SuggestedPostPrice> {
        self.map(|value| &value.price)
    }
}
impl SmartFilterPath<crate::types::SuggestedPostApproved> {
    #[must_use]
    pub fn suggested_post_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.suggested_post_message.as_deref())
    }

    #[must_use]
    pub fn price(self) -> SmartFilterPath<crate::types::SuggestedPostPrice> {
        self.and_then(|value| value.price.as_ref())
    }

    #[must_use]
    pub fn send_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.send_date)
    }
}
impl SmartFilterPath<crate::types::SuggestedPostDeclined> {
    #[must_use]
    pub fn suggested_post_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.suggested_post_message.as_deref())
    }

    #[must_use]
    pub fn comment(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.comment.as_deref())
    }
}
impl SmartFilterPath<crate::types::SuggestedPostInfo> {
    #[must_use]
    pub fn state(self) -> SmartFilterPath<str> {
        self.map(|value| value.state.as_ref())
    }

    #[must_use]
    pub fn price(self) -> SmartFilterPath<crate::types::SuggestedPostPrice> {
        self.and_then(|value| value.price.as_ref())
    }

    #[must_use]
    pub fn send_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.send_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::SuggestedPostPaid> {
    #[must_use]
    pub fn suggested_post_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.suggested_post_message.as_deref())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.amount.as_ref())
    }

    #[must_use]
    pub fn star_amount(self) -> SmartFilterPath<crate::types::StarAmount> {
        self.and_then(|value| value.star_amount.as_ref())
    }
}
impl SmartFilterPath<crate::types::SuggestedPostParameters> {
    #[must_use]
    pub fn price(self) -> SmartFilterPath<crate::types::SuggestedPostPrice> {
        self.and_then(|value| value.price.as_ref())
    }

    #[must_use]
    pub fn send_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.send_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::SuggestedPostPrice> {
    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.map(|value| value.currency.as_ref())
    }

    #[must_use]
    pub fn amount(self) -> SmartFilterPath<u32> {
        self.map(|value| &value.amount)
    }
}
impl SmartFilterPath<crate::types::SuggestedPostRefunded> {
    #[must_use]
    pub fn suggested_post_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.suggested_post_message.as_deref())
    }

    #[must_use]
    pub fn reason(self) -> SmartFilterPath<str> {
        self.map(|value| value.reason.as_ref())
    }
}
impl SmartFilterPath<crate::types::SwitchInlineQueryChosenChat> {
    #[must_use]
    pub fn query(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.query.as_deref())
    }

    #[must_use]
    pub fn allow_user_chats(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allow_user_chats.as_ref())
    }

    #[must_use]
    pub fn allow_bot_chats(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allow_bot_chats.as_ref())
    }

    #[must_use]
    pub fn allow_group_chats(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allow_group_chats.as_ref())
    }

    #[must_use]
    pub fn allow_channel_chats(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allow_channel_chats.as_ref())
    }
}
impl SmartFilterPath<crate::types::TextQuote> {
    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.map(|value| value.text.as_ref())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities.as_deref())
    }

    #[must_use]
    pub fn position(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.position)
    }

    #[must_use]
    pub fn is_manual(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_manual.as_ref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartner> {
    #[must_use]
    pub fn affiliate(self) -> SmartFilterPath<crate::types::AffiliateInfo> {
        self.and_then(|value| value.affiliate())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.and_then(|value| value.gift())
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invoice_payload())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<[crate::types::PaidMedia]> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn paid_media_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.paid_media_payload())
    }

    #[must_use]
    pub fn sponsor_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sponsor_user())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user())
    }

    #[must_use]
    pub fn withdrawal_state(self) -> SmartFilterPath<crate::types::RevenueWithdrawalState> {
        self.and_then(|value| value.withdrawal_state())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerAffiliateProgram> {
    #[must_use]
    pub fn sponsor_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sponsor_user.as_deref())
    }

    #[must_use]
    pub fn commission_per_mille(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.commission_per_mille)
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerChat> {
    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.map(|value| value.chat.as_ref())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.and_then(|value| value.gift.as_deref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerFragment> {
    #[must_use]
    pub fn withdrawal_state(self) -> SmartFilterPath<crate::types::RevenueWithdrawalState> {
        self.and_then(|value| value.withdrawal_state.as_ref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerOther> {}
impl SmartFilterPath<crate::types::TransactionPartnerTelegramAds> {}
impl SmartFilterPath<crate::types::TransactionPartnerTelegramApi> {
    #[must_use]
    pub fn request_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_count)
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUser> {
    #[must_use]
    pub fn affiliate(self) -> SmartFilterPath<crate::types::AffiliateInfo> {
        self.and_then(|value| value.affiliate())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.and_then(|value| value.gift())
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invoice_payload())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<[crate::types::PaidMedia]> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn paid_media_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.paid_media_payload())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUserBusinessAccountTransfer> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUserGiftPurchase> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::Gift> {
        self.map(|value| value.gift.as_ref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUserInvoicePayment> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn affiliate(self) -> SmartFilterPath<crate::types::AffiliateInfo> {
        self.and_then(|value| value.affiliate.as_ref())
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invoice_payload.as_deref())
    }

    #[must_use]
    pub fn subscription_period(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.subscription_period.as_ref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUserPaidMediaPayment> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn affiliate(self) -> SmartFilterPath<crate::types::AffiliateInfo> {
        self.and_then(|value| value.affiliate.as_ref())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<[crate::types::PaidMedia]> {
        self.map(|value| value.paid_media.as_ref())
    }

    #[must_use]
    pub fn paid_media_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.paid_media_payload.as_deref())
    }
}
impl SmartFilterPath<crate::types::TransactionPartnerUserPremiumPurchase> {
    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.map(|value| value.user.as_ref())
    }

    #[must_use]
    pub fn premium_subscription_duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.premium_subscription_duration)
    }
}
impl SmartFilterPath<crate::types::UniqueGift> {
    #[must_use]
    pub fn gift_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.gift_id.as_ref())
    }

    #[must_use]
    pub fn base_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.base_name.as_ref())
    }

    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn number(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.number)
    }

    #[must_use]
    pub fn model(self) -> SmartFilterPath<crate::types::UniqueGiftModel> {
        self.map(|value| &value.model)
    }

    #[must_use]
    pub fn symbol(self) -> SmartFilterPath<crate::types::UniqueGiftSymbol> {
        self.map(|value| &value.symbol)
    }

    #[must_use]
    pub fn backdrop(self) -> SmartFilterPath<crate::types::UniqueGiftBackdrop> {
        self.map(|value| &value.backdrop)
    }

    #[must_use]
    pub fn is_premium(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_premium.as_ref())
    }

    #[must_use]
    pub fn is_burned(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_burned.as_ref())
    }

    #[must_use]
    pub fn is_from_blockchain(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_from_blockchain.as_ref())
    }

    #[must_use]
    pub fn colors(self) -> SmartFilterPath<crate::types::UniqueGiftColors> {
        self.and_then(|value| value.colors.as_ref())
    }

    #[must_use]
    pub fn publisher_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.publisher_chat.as_deref())
    }
}
impl SmartFilterPath<crate::types::UniqueGiftBackdrop> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn colors(self) -> SmartFilterPath<crate::types::UniqueGiftBackdropColors> {
        self.map(|value| &value.colors)
    }

    #[must_use]
    pub fn rarity_per_mille(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.rarity_per_mille)
    }
}
impl SmartFilterPath<crate::types::UniqueGiftBackdropColors> {
    #[must_use]
    pub fn center_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.center_color)
    }

    #[must_use]
    pub fn edge_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.edge_color)
    }

    #[must_use]
    pub fn symbol_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.symbol_color)
    }

    #[must_use]
    pub fn text_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.text_color)
    }
}
impl SmartFilterPath<crate::types::UniqueGiftColors> {
    #[must_use]
    pub fn model_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.model_custom_emoji_id.as_ref())
    }

    #[must_use]
    pub fn symbol_custom_emoji_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.symbol_custom_emoji_id.as_ref())
    }

    #[must_use]
    pub fn light_theme_main_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.light_theme_main_color)
    }

    #[must_use]
    pub fn light_theme_other_colors(self) -> SmartFilterPath<[u8]> {
        self.map(|value| value.light_theme_other_colors.as_ref())
    }

    #[must_use]
    pub fn dark_theme_main_color(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.dark_theme_main_color)
    }

    #[must_use]
    pub fn dark_theme_other_colors(self) -> SmartFilterPath<[u8]> {
        self.map(|value| value.dark_theme_other_colors.as_ref())
    }
}
impl SmartFilterPath<crate::types::UniqueGiftInfo> {
    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::UniqueGift> {
        self.map(|value| value.gift.as_ref())
    }

    #[must_use]
    pub fn origin(self) -> SmartFilterPath<str> {
        self.map(|value| value.origin.as_ref())
    }

    #[must_use]
    pub fn last_resale_currency(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_resale_currency.as_deref())
    }

    #[must_use]
    pub fn last_resale_amount(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.last_resale_amount.as_ref())
    }

    #[must_use]
    pub fn owned_gift_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.owned_gift_id.as_deref())
    }

    #[must_use]
    pub fn transfer_star_count(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.transfer_star_count.as_ref())
    }

    #[must_use]
    pub fn next_transfer_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.next_transfer_date.as_ref())
    }
}
impl SmartFilterPath<crate::types::UniqueGiftModel> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }

    #[must_use]
    pub fn rarity_per_mille(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.rarity_per_mille)
    }

    #[must_use]
    pub fn rarity(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.rarity.as_deref())
    }
}
impl SmartFilterPath<crate::types::UniqueGiftSymbol> {
    #[must_use]
    pub fn name(self) -> SmartFilterPath<str> {
        self.map(|value| value.name.as_ref())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.map(|value| value.sticker.as_ref())
    }

    #[must_use]
    pub fn rarity_per_mille(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.rarity_per_mille)
    }
}
impl SmartFilterPath<crate::types::Update> {
    #[must_use]
    pub fn actor_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.actor_chat())
    }

    #[must_use]
    pub fn animation(self) -> SmartFilterPath<crate::types::Animation> {
        self.and_then(|value| value.animation())
    }

    #[must_use]
    pub fn audio(self) -> SmartFilterPath<crate::types::Audio> {
        self.and_then(|value| value.audio())
    }

    #[must_use]
    pub fn author_signature(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.author_signature())
    }

    #[must_use]
    pub fn bio(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.bio())
    }

    #[must_use]
    pub fn boost(self) -> SmartFilterPath<crate::types::ChatBoost> {
        self.and_then(|value| value.boost())
    }

    #[must_use]
    pub fn boost_added(self) -> SmartFilterPath<crate::types::ChatBoostAdded> {
        self.and_then(|value| value.boost_added())
    }

    #[must_use]
    pub fn boost_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.boost_id())
    }

    #[must_use]
    pub fn bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.bot())
    }

    #[must_use]
    pub fn business_connection(self) -> SmartFilterPath<crate::types::BusinessConnection> {
        self.and_then(|value| value.business_connection())
    }

    #[must_use]
    pub fn business_connection_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.business_connection_id())
    }

    #[must_use]
    pub fn business_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.business_message())
    }

    #[must_use]
    pub fn callback_query(self) -> SmartFilterPath<crate::types::CallbackQuery> {
        self.and_then(|value| value.callback_query())
    }

    #[must_use]
    pub fn caption(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.caption())
    }

    #[must_use]
    pub fn caption_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.caption_entities())
    }

    #[must_use]
    pub fn channel_post(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.channel_post())
    }

    #[must_use]
    pub fn chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.chat())
    }

    #[must_use]
    pub fn chat_background_set(self) -> SmartFilterPath<crate::types::ChatBackground> {
        self.and_then(|value| value.chat_background_set())
    }

    #[must_use]
    pub fn chat_boost(self) -> SmartFilterPath<crate::types::ChatBoostUpdated> {
        self.and_then(|value| value.chat_boost())
    }

    #[must_use]
    pub fn chat_instance(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.chat_instance())
    }

    #[must_use]
    pub fn chat_join_request(self) -> SmartFilterPath<crate::types::ChatJoinRequest> {
        self.and_then(|value| value.chat_join_request())
    }

    #[must_use]
    pub fn chat_member(self) -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        self.and_then(|value| value.chat_member())
    }

    #[must_use]
    pub fn chat_owner_changed(self) -> SmartFilterPath<crate::types::ChatOwnerChanged> {
        self.and_then(|value| value.chat_owner_changed())
    }

    #[must_use]
    pub fn chat_owner_left(self) -> SmartFilterPath<crate::types::ChatOwnerLeft> {
        self.and_then(|value| value.chat_owner_left())
    }

    #[must_use]
    pub fn chat_shared(self) -> SmartFilterPath<crate::types::ChatShared> {
        self.and_then(|value| value.chat_shared())
    }

    #[must_use]
    pub fn chat_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.chat_type())
    }

    #[must_use]
    pub fn checklist(self) -> SmartFilterPath<crate::types::Checklist> {
        self.and_then(|value| value.checklist())
    }

    #[must_use]
    pub fn checklist_tasks_added(self) -> SmartFilterPath<crate::types::ChecklistTasksAdded> {
        self.and_then(|value| value.checklist_tasks_added())
    }

    #[must_use]
    pub fn checklist_tasks_done(self) -> SmartFilterPath<crate::types::ChecklistTasksDone> {
        self.and_then(|value| value.checklist_tasks_done())
    }

    #[must_use]
    pub fn chosen_inline_result(self) -> SmartFilterPath<crate::types::ChosenInlineResult> {
        self.and_then(|value| value.chosen_inline_result())
    }

    #[must_use]
    pub fn connected_website(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.connected_website())
    }

    #[must_use]
    pub fn contact(self) -> SmartFilterPath<crate::types::Contact> {
        self.and_then(|value| value.contact())
    }

    #[must_use]
    pub fn correct_option_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.correct_option_ids())
    }

    #[must_use]
    pub fn country_codes(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.country_codes())
    }

    #[must_use]
    pub fn currency(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.currency())
    }

    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.data())
    }

    #[must_use]
    pub fn deleted_business_messages(
        self,
    ) -> SmartFilterPath<crate::types::BusinessMessagesDeleted> {
        self.and_then(|value| value.deleted_business_messages())
    }

    #[must_use]
    pub fn description(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.description())
    }

    #[must_use]
    pub fn description_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.description_entities())
    }

    #[must_use]
    pub fn dice(self) -> SmartFilterPath<crate::types::Dice> {
        self.and_then(|value| value.dice())
    }

    #[must_use]
    pub fn direct_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::DirectMessagePriceChanged> {
        self.and_then(|value| value.direct_message_price_changed())
    }

    #[must_use]
    pub fn direct_messages_topic(self) -> SmartFilterPath<crate::types::DirectMessagesTopic> {
        self.and_then(|value| value.direct_messages_topic())
    }

    #[must_use]
    pub fn document(self) -> SmartFilterPath<crate::types::Document> {
        self.and_then(|value| value.document())
    }

    #[must_use]
    pub fn edited_business_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.edited_business_message())
    }

    #[must_use]
    pub fn edited_channel_post(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.edited_channel_post())
    }

    #[must_use]
    pub fn edited_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.edited_message())
    }

    #[must_use]
    pub fn effect_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.effect_id())
    }

    #[must_use]
    pub fn entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.entities())
    }

    #[must_use]
    pub fn explanation(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.explanation())
    }

    #[must_use]
    pub fn explanation_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.explanation_entities())
    }

    #[must_use]
    pub fn explanation_media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.explanation_media())
    }

    #[must_use]
    pub fn external_reply(self) -> SmartFilterPath<crate::types::ExternalReplyInfo> {
        self.and_then(|value| value.external_reply())
    }

    #[must_use]
    pub fn forum_topic_closed(self) -> SmartFilterPath<crate::types::ForumTopicClosed> {
        self.and_then(|value| value.forum_topic_closed())
    }

    #[must_use]
    pub fn forum_topic_created(self) -> SmartFilterPath<crate::types::ForumTopicCreated> {
        self.and_then(|value| value.forum_topic_created())
    }

    #[must_use]
    pub fn forum_topic_edited(self) -> SmartFilterPath<crate::types::ForumTopicEdited> {
        self.and_then(|value| value.forum_topic_edited())
    }

    #[must_use]
    pub fn forum_topic_reopened(self) -> SmartFilterPath<crate::types::ForumTopicReopened> {
        self.and_then(|value| value.forum_topic_reopened())
    }

    #[must_use]
    pub fn forward_origin(self) -> SmartFilterPath<crate::types::MessageOrigin> {
        self.and_then(|value| value.forward_origin())
    }

    #[must_use]
    pub fn from(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.from())
    }

    #[must_use]
    pub fn game(self) -> SmartFilterPath<crate::types::Game> {
        self.and_then(|value| value.game())
    }

    #[must_use]
    pub fn game_short_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.game_short_name())
    }

    #[must_use]
    pub fn general_forum_topic_hidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicHidden> {
        self.and_then(|value| value.general_forum_topic_hidden())
    }

    #[must_use]
    pub fn general_forum_topic_unhidden(
        self,
    ) -> SmartFilterPath<crate::types::GeneralForumTopicUnhidden> {
        self.and_then(|value| value.general_forum_topic_unhidden())
    }

    #[must_use]
    pub fn gift(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift())
    }

    #[must_use]
    pub fn gift_upgrade_sent(self) -> SmartFilterPath<crate::types::GiftInfo> {
        self.and_then(|value| value.gift_upgrade_sent())
    }

    #[must_use]
    pub fn giveaway(self) -> SmartFilterPath<crate::types::Giveaway> {
        self.and_then(|value| value.giveaway())
    }

    #[must_use]
    pub fn giveaway_completed(self) -> SmartFilterPath<crate::types::GiveawayCompleted> {
        self.and_then(|value| value.giveaway_completed())
    }

    #[must_use]
    pub fn giveaway_created(self) -> SmartFilterPath<crate::types::GiveawayCreated> {
        self.and_then(|value| value.giveaway_created())
    }

    #[must_use]
    pub fn giveaway_winners(self) -> SmartFilterPath<crate::types::GiveawayWinners> {
        self.and_then(|value| value.giveaway_winners())
    }

    #[must_use]
    pub fn guest_bot_caller_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.guest_bot_caller_chat())
    }

    #[must_use]
    pub fn guest_bot_caller_user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.guest_bot_caller_user())
    }

    #[must_use]
    pub fn guest_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.guest_message())
    }

    #[must_use]
    pub fn guest_query_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.guest_query_id())
    }

    #[must_use]
    pub fn id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.id())
    }

    #[must_use]
    pub fn inline_message_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.inline_message_id())
    }

    #[must_use]
    pub fn inline_query(self) -> SmartFilterPath<crate::types::InlineQuery> {
        self.and_then(|value| value.inline_query())
    }

    #[must_use]
    pub fn invite_link(self) -> SmartFilterPath<crate::types::ChatInviteLink> {
        self.and_then(|value| value.invite_link())
    }

    #[must_use]
    pub fn invoice(self) -> SmartFilterPath<crate::types::Invoice> {
        self.and_then(|value| value.invoice())
    }

    #[must_use]
    pub fn invoice_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.invoice_payload())
    }

    #[must_use]
    pub fn left_chat_member(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.left_chat_member())
    }

    #[must_use]
    pub fn link_preview_options(self) -> SmartFilterPath<crate::types::LinkPreviewOptions> {
        self.and_then(|value| value.link_preview_options())
    }

    #[must_use]
    pub fn live_photo(self) -> SmartFilterPath<crate::types::LivePhoto> {
        self.and_then(|value| value.live_photo())
    }

    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.and_then(|value| value.location())
    }

    #[must_use]
    pub fn managed_bot(self) -> SmartFilterPath<crate::types::ManagedBotUpdated> {
        self.and_then(|value| value.managed_bot())
    }

    #[must_use]
    pub fn managed_bot_created(self) -> SmartFilterPath<crate::types::ManagedBotCreated> {
        self.and_then(|value| value.managed_bot_created())
    }

    #[must_use]
    pub fn media(self) -> SmartFilterPath<crate::types::PollMedia> {
        self.and_then(|value| value.media())
    }

    #[must_use]
    pub fn media_group_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.media_group_id())
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.message())
    }

    #[must_use]
    pub fn message_auto_delete_timer_changed(
        self,
    ) -> SmartFilterPath<crate::types::MessageAutoDeleteTimerChanged> {
        self.and_then(|value| value.message_auto_delete_timer_changed())
    }

    #[must_use]
    pub fn message_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.message_ids())
    }

    #[must_use]
    pub fn message_reaction(self) -> SmartFilterPath<crate::types::MessageReactionUpdated> {
        self.and_then(|value| value.message_reaction())
    }

    #[must_use]
    pub fn message_reaction_count(
        self,
    ) -> SmartFilterPath<crate::types::MessageReactionCountUpdated> {
        self.and_then(|value| value.message_reaction_count())
    }

    #[must_use]
    pub fn my_chat_member(self) -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        self.and_then(|value| value.my_chat_member())
    }

    #[must_use]
    pub fn new_chat_member(self) -> SmartFilterPath<crate::types::ChatMember> {
        self.and_then(|value| value.new_chat_member())
    }

    #[must_use]
    pub fn new_chat_members(self) -> SmartFilterPath<[crate::types::User]> {
        self.and_then(|value| value.new_chat_members())
    }

    #[must_use]
    pub fn new_chat_photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.new_chat_photo())
    }

    #[must_use]
    pub fn new_chat_title(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.new_chat_title())
    }

    #[must_use]
    pub fn new_reaction(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.new_reaction())
    }

    #[must_use]
    pub fn offset(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.offset())
    }

    #[must_use]
    pub fn old_chat_member(self) -> SmartFilterPath<crate::types::ChatMember> {
        self.and_then(|value| value.old_chat_member())
    }

    #[must_use]
    pub fn old_reaction(self) -> SmartFilterPath<[crate::types::ReactionType]> {
        self.and_then(|value| value.old_reaction())
    }

    #[must_use]
    pub fn option_ids(self) -> SmartFilterPath<[i64]> {
        self.and_then(|value| value.option_ids())
    }

    #[must_use]
    pub fn option_persistent_ids(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.option_persistent_ids())
    }

    #[must_use]
    pub fn options(self) -> SmartFilterPath<[crate::types::PollOption]> {
        self.and_then(|value| value.options())
    }

    #[must_use]
    pub fn order_info(self) -> SmartFilterPath<crate::types::OrderInfo> {
        self.and_then(|value| value.order_info())
    }

    #[must_use]
    pub fn paid_media(self) -> SmartFilterPath<crate::types::PaidMediaInfo> {
        self.and_then(|value| value.paid_media())
    }

    #[must_use]
    pub fn paid_media_payload(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.paid_media_payload())
    }

    #[must_use]
    pub fn paid_message_price_changed(
        self,
    ) -> SmartFilterPath<crate::types::PaidMessagePriceChanged> {
        self.and_then(|value| value.paid_message_price_changed())
    }

    #[must_use]
    pub fn passport_data(self) -> SmartFilterPath<crate::types::PassportData> {
        self.and_then(|value| value.passport_data())
    }

    #[must_use]
    pub fn photo(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.photo())
    }

    #[must_use]
    pub fn pinned_message(self) -> SmartFilterPath<crate::types::MaybeInaccessibleMessage> {
        self.and_then(|value| value.pinned_message())
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.and_then(|value| value.poll())
    }

    #[must_use]
    pub fn poll_answer(self) -> SmartFilterPath<crate::types::PollAnswer> {
        self.and_then(|value| value.poll_answer())
    }

    #[must_use]
    pub fn poll_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.poll_id())
    }

    #[must_use]
    pub fn poll_option_added(self) -> SmartFilterPath<crate::types::PollOptionAdded> {
        self.and_then(|value| value.poll_option_added())
    }

    #[must_use]
    pub fn poll_option_deleted(self) -> SmartFilterPath<crate::types::PollOptionDeleted> {
        self.and_then(|value| value.poll_option_deleted())
    }

    #[must_use]
    pub fn pre_checkout_query(self) -> SmartFilterPath<crate::types::PreCheckoutQuery> {
        self.and_then(|value| value.pre_checkout_query())
    }

    #[must_use]
    pub fn proximity_alert_triggered(
        self,
    ) -> SmartFilterPath<crate::types::ProximityAlertTriggered> {
        self.and_then(|value| value.proximity_alert_triggered())
    }

    #[must_use]
    pub fn purchased_paid_media(self) -> SmartFilterPath<crate::types::PaidMediaPurchased> {
        self.and_then(|value| value.purchased_paid_media())
    }

    #[must_use]
    pub fn query(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.query())
    }

    #[must_use]
    pub fn question(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.question())
    }

    #[must_use]
    pub fn question_entities(self) -> SmartFilterPath<[crate::types::MessageEntity]> {
        self.and_then(|value| value.question_entities())
    }

    #[must_use]
    pub fn quote(self) -> SmartFilterPath<crate::types::TextQuote> {
        self.and_then(|value| value.quote())
    }

    #[must_use]
    pub fn reactions(self) -> SmartFilterPath<[crate::types::ReactionCount]> {
        self.and_then(|value| value.reactions())
    }

    #[must_use]
    pub fn refunded_payment(self) -> SmartFilterPath<crate::types::RefundedPayment> {
        self.and_then(|value| value.refunded_payment())
    }

    #[must_use]
    pub fn removed_chat_boost(self) -> SmartFilterPath<crate::types::ChatBoostRemoved> {
        self.and_then(|value| value.removed_chat_boost())
    }

    #[must_use]
    pub fn reply_markup(self) -> SmartFilterPath<crate::types::InlineKeyboardMarkup> {
        self.and_then(|value| value.reply_markup())
    }

    #[must_use]
    pub fn reply_to_message(self) -> SmartFilterPath<crate::types::Message> {
        self.and_then(|value| value.reply_to_message())
    }

    #[must_use]
    pub fn reply_to_poll_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.reply_to_poll_option_id())
    }

    #[must_use]
    pub fn reply_to_story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.reply_to_story())
    }

    #[must_use]
    pub fn result_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.result_id())
    }

    #[must_use]
    pub fn rights(self) -> SmartFilterPath<crate::types::BusinessBotRights> {
        self.and_then(|value| value.rights())
    }

    #[must_use]
    pub fn sender_business_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.sender_business_bot())
    }

    #[must_use]
    pub fn sender_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.sender_chat())
    }

    #[must_use]
    pub fn sender_tag(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.sender_tag())
    }

    #[must_use]
    pub fn shipping_address(self) -> SmartFilterPath<crate::types::ShippingAddress> {
        self.and_then(|value| value.shipping_address())
    }

    #[must_use]
    pub fn shipping_option_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.shipping_option_id())
    }

    #[must_use]
    pub fn shipping_query(self) -> SmartFilterPath<crate::types::ShippingQuery> {
        self.and_then(|value| value.shipping_query())
    }

    #[must_use]
    pub fn source(self) -> SmartFilterPath<crate::types::ChatBoostSource> {
        self.and_then(|value| value.source())
    }

    #[must_use]
    pub fn sticker(self) -> SmartFilterPath<crate::types::Sticker> {
        self.and_then(|value| value.sticker())
    }

    #[must_use]
    pub fn story(self) -> SmartFilterPath<crate::types::Story> {
        self.and_then(|value| value.story())
    }

    #[must_use]
    pub fn successful_payment(self) -> SmartFilterPath<crate::types::SuccessfulPayment> {
        self.and_then(|value| value.successful_payment())
    }

    #[must_use]
    pub fn suggested_post_approval_failed(
        self,
    ) -> SmartFilterPath<crate::types::SuggestedPostApprovalFailed> {
        self.and_then(|value| value.suggested_post_approval_failed())
    }

    #[must_use]
    pub fn suggested_post_approved(self) -> SmartFilterPath<crate::types::SuggestedPostApproved> {
        self.and_then(|value| value.suggested_post_approved())
    }

    #[must_use]
    pub fn suggested_post_declined(self) -> SmartFilterPath<crate::types::SuggestedPostDeclined> {
        self.and_then(|value| value.suggested_post_declined())
    }

    #[must_use]
    pub fn suggested_post_info(self) -> SmartFilterPath<crate::types::SuggestedPostInfo> {
        self.and_then(|value| value.suggested_post_info())
    }

    #[must_use]
    pub fn suggested_post_paid(self) -> SmartFilterPath<crate::types::SuggestedPostPaid> {
        self.and_then(|value| value.suggested_post_paid())
    }

    #[must_use]
    pub fn suggested_post_refunded(self) -> SmartFilterPath<crate::types::SuggestedPostRefunded> {
        self.and_then(|value| value.suggested_post_refunded())
    }

    #[must_use]
    pub fn text(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.text())
    }

    #[must_use]
    pub fn unique_gift(self) -> SmartFilterPath<crate::types::UniqueGiftInfo> {
        self.and_then(|value| value.unique_gift())
    }

    #[must_use]
    pub fn user(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.user())
    }

    #[must_use]
    pub fn users_shared(self) -> SmartFilterPath<crate::types::UsersShared> {
        self.and_then(|value| value.users_shared())
    }

    #[must_use]
    pub fn venue(self) -> SmartFilterPath<crate::types::Venue> {
        self.and_then(|value| value.venue())
    }

    #[must_use]
    pub fn via_bot(self) -> SmartFilterPath<crate::types::User> {
        self.and_then(|value| value.via_bot())
    }

    #[must_use]
    pub fn video(self) -> SmartFilterPath<crate::types::Video> {
        self.and_then(|value| value.video())
    }

    #[must_use]
    pub fn video_chat_ended(self) -> SmartFilterPath<crate::types::VideoChatEnded> {
        self.and_then(|value| value.video_chat_ended())
    }

    #[must_use]
    pub fn video_chat_participants_invited(
        self,
    ) -> SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
        self.and_then(|value| value.video_chat_participants_invited())
    }

    #[must_use]
    pub fn video_chat_scheduled(self) -> SmartFilterPath<crate::types::VideoChatScheduled> {
        self.and_then(|value| value.video_chat_scheduled())
    }

    #[must_use]
    pub fn video_chat_started(self) -> SmartFilterPath<crate::types::VideoChatStarted> {
        self.and_then(|value| value.video_chat_started())
    }

    #[must_use]
    pub fn video_note(self) -> SmartFilterPath<crate::types::VideoNote> {
        self.and_then(|value| value.video_note())
    }

    #[must_use]
    pub fn voice(self) -> SmartFilterPath<crate::types::Voice> {
        self.and_then(|value| value.voice())
    }

    #[must_use]
    pub fn voter_chat(self) -> SmartFilterPath<crate::types::Chat> {
        self.and_then(|value| value.voter_chat())
    }

    #[must_use]
    pub fn web_app_data(self) -> SmartFilterPath<crate::types::WebAppData> {
        self.and_then(|value| value.web_app_data())
    }

    #[must_use]
    pub fn write_access_allowed(self) -> SmartFilterPath<crate::types::WriteAccessAllowed> {
        self.and_then(|value| value.write_access_allowed())
    }
}
impl SmartFilterPath<crate::types::UpdateBusinessConnection> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn business_connection(self) -> SmartFilterPath<crate::types::BusinessConnection> {
        self.map(|value| &value.business_connection)
    }
}
impl SmartFilterPath<crate::types::UpdateBusinessMessage> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn business_message(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.business_message.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateCallbackQuery> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn callback_query(self) -> SmartFilterPath<crate::types::CallbackQuery> {
        self.map(|value| &value.callback_query)
    }
}
impl SmartFilterPath<crate::types::UpdateChannelPost> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn channel_post(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.channel_post.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateChatBoost> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn chat_boost(self) -> SmartFilterPath<crate::types::ChatBoostUpdated> {
        self.map(|value| &value.chat_boost)
    }
}
impl SmartFilterPath<crate::types::UpdateChatJoinRequest> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn chat_join_request(self) -> SmartFilterPath<crate::types::ChatJoinRequest> {
        self.map(|value| &value.chat_join_request)
    }
}
impl SmartFilterPath<crate::types::UpdateChatMember> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn chat_member(self) -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        self.map(|value| &value.chat_member)
    }
}
impl SmartFilterPath<crate::types::UpdateChosenInlineResult> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn chosen_inline_result(self) -> SmartFilterPath<crate::types::ChosenInlineResult> {
        self.map(|value| &value.chosen_inline_result)
    }
}
impl SmartFilterPath<crate::types::UpdateDeletedBusinessMessages> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn deleted_business_messages(
        self,
    ) -> SmartFilterPath<crate::types::BusinessMessagesDeleted> {
        self.map(|value| &value.deleted_business_messages)
    }
}
impl SmartFilterPath<crate::types::UpdateEditedBusinessMessage> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn edited_business_message(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.edited_business_message.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateEditedChannelPost> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn edited_channel_post(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.edited_channel_post.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateEditedMessage> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn edited_message(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.edited_message.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateGuestMessage> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn guest_message(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.guest_message.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateInlineQuery> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn inline_query(self) -> SmartFilterPath<crate::types::InlineQuery> {
        self.map(|value| &value.inline_query)
    }
}
impl SmartFilterPath<crate::types::UpdateManagedBot> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn managed_bot(self) -> SmartFilterPath<crate::types::ManagedBotUpdated> {
        self.map(|value| &value.managed_bot)
    }
}
impl SmartFilterPath<crate::types::UpdateMessage> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn message(self) -> SmartFilterPath<crate::types::Message> {
        self.map(|value| value.message.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdateMessageReaction> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn message_reaction(self) -> SmartFilterPath<crate::types::MessageReactionUpdated> {
        self.map(|value| &value.message_reaction)
    }
}
impl SmartFilterPath<crate::types::UpdateMessageReactionCount> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn message_reaction_count(
        self,
    ) -> SmartFilterPath<crate::types::MessageReactionCountUpdated> {
        self.map(|value| &value.message_reaction_count)
    }
}
impl SmartFilterPath<crate::types::UpdateMyChatMember> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn my_chat_member(self) -> SmartFilterPath<crate::types::ChatMemberUpdated> {
        self.map(|value| &value.my_chat_member)
    }
}
impl SmartFilterPath<crate::types::UpdatePoll> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn poll(self) -> SmartFilterPath<crate::types::Poll> {
        self.map(|value| value.poll.as_ref())
    }
}
impl SmartFilterPath<crate::types::UpdatePollAnswer> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn poll_answer(self) -> SmartFilterPath<crate::types::PollAnswer> {
        self.map(|value| &value.poll_answer)
    }
}
impl SmartFilterPath<crate::types::UpdatePreCheckoutQuery> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn pre_checkout_query(self) -> SmartFilterPath<crate::types::PreCheckoutQuery> {
        self.map(|value| &value.pre_checkout_query)
    }
}
impl SmartFilterPath<crate::types::UpdatePurchasedPaidMedia> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn purchased_paid_media(self) -> SmartFilterPath<crate::types::PaidMediaPurchased> {
        self.map(|value| &value.purchased_paid_media)
    }
}
impl SmartFilterPath<crate::types::UpdateRemovedChatBoost> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn removed_chat_boost(self) -> SmartFilterPath<crate::types::ChatBoostRemoved> {
        self.map(|value| &value.removed_chat_boost)
    }
}
impl SmartFilterPath<crate::types::UpdateShippingQuery> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }

    #[must_use]
    pub fn shipping_query(self) -> SmartFilterPath<crate::types::ShippingQuery> {
        self.map(|value| &value.shipping_query)
    }
}
impl SmartFilterPath<crate::types::UpdateUnparsed> {
    #[must_use]
    pub fn update_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.update_id)
    }
}
impl SmartFilterPath<crate::types::User> {
    #[must_use]
    pub fn id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.id)
    }

    #[must_use]
    pub fn is_bot(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.is_bot)
    }

    #[must_use]
    pub fn first_name(self) -> SmartFilterPath<str> {
        self.map(|value| value.first_name.as_ref())
    }

    #[must_use]
    pub fn last_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_name.as_deref())
    }

    #[must_use]
    pub fn username(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.username.as_deref())
    }

    #[must_use]
    pub fn language_code(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.language_code.as_deref())
    }

    #[must_use]
    pub fn is_premium(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.is_premium.as_ref())
    }

    #[must_use]
    pub fn added_to_attachment_menu(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.added_to_attachment_menu.as_ref())
    }

    #[must_use]
    pub fn can_join_groups(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_join_groups.as_ref())
    }

    #[must_use]
    pub fn can_read_all_group_messages(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_read_all_group_messages.as_ref())
    }

    #[must_use]
    pub fn supports_guest_queries(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.supports_guest_queries.as_ref())
    }

    #[must_use]
    pub fn supports_inline_queries(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.supports_inline_queries.as_ref())
    }

    #[must_use]
    pub fn can_connect_to_business(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_connect_to_business.as_ref())
    }

    #[must_use]
    pub fn has_main_web_app(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_main_web_app.as_ref())
    }

    #[must_use]
    pub fn has_topics_enabled(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.has_topics_enabled.as_ref())
    }

    #[must_use]
    pub fn allows_users_to_create_topics(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.allows_users_to_create_topics.as_ref())
    }

    #[must_use]
    pub fn can_manage_bots(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.can_manage_bots.as_ref())
    }
}
impl SmartFilterPath<crate::types::UserChatBoosts> {
    #[must_use]
    pub fn boosts(self) -> SmartFilterPath<[crate::types::ChatBoost]> {
        self.map(|value| value.boosts.as_ref())
    }
}
impl SmartFilterPath<crate::types::UserProfileAudios> {
    #[must_use]
    pub fn total_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_count)
    }

    #[must_use]
    pub fn audios(self) -> SmartFilterPath<[crate::types::Audio]> {
        self.map(|value| value.audios.as_ref())
    }
}
impl SmartFilterPath<crate::types::UserProfilePhotos> {
    #[must_use]
    pub fn total_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.total_count)
    }

    #[must_use]
    pub fn photos(self) -> SmartFilterPath<[Box<[crate::types::PhotoSize]>]> {
        self.map(|value| value.photos.as_ref())
    }
}
impl SmartFilterPath<crate::types::UserRating> {
    #[must_use]
    pub fn level(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.level)
    }

    #[must_use]
    pub fn rating(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.rating)
    }

    #[must_use]
    pub fn current_level_rating(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.current_level_rating)
    }

    #[must_use]
    pub fn next_level_rating(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.next_level_rating.as_ref())
    }
}
impl SmartFilterPath<crate::types::UsersShared> {
    #[must_use]
    pub fn request_id(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.request_id)
    }

    #[must_use]
    pub fn users(self) -> SmartFilterPath<[crate::types::SharedUser]> {
        self.map(|value| value.users.as_ref())
    }
}
impl SmartFilterPath<crate::types::Venue> {
    #[must_use]
    pub fn location(self) -> SmartFilterPath<crate::types::Location> {
        self.map(|value| &value.location)
    }

    #[must_use]
    pub fn title(self) -> SmartFilterPath<str> {
        self.map(|value| value.title.as_ref())
    }

    #[must_use]
    pub fn address(self) -> SmartFilterPath<str> {
        self.map(|value| value.address.as_ref())
    }

    #[must_use]
    pub fn foursquare_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_id.as_deref())
    }

    #[must_use]
    pub fn foursquare_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.foursquare_type.as_deref())
    }

    #[must_use]
    pub fn google_place_id(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_id.as_deref())
    }

    #[must_use]
    pub fn google_place_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.google_place_type.as_deref())
    }
}
impl SmartFilterPath<crate::types::Video> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn cover(self) -> SmartFilterPath<[crate::types::PhotoSize]> {
        self.and_then(|value| value.cover.as_deref())
    }

    #[must_use]
    pub fn start_timestamp(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.start_timestamp.as_ref())
    }

    #[must_use]
    pub fn qualities(self) -> SmartFilterPath<[crate::types::VideoQuality]> {
        self.and_then(|value| value.qualities.as_deref())
    }

    #[must_use]
    pub fn file_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.file_name.as_deref())
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::VideoChatEnded> {
    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }
}
impl SmartFilterPath<crate::types::VideoChatParticipantsInvited> {
    #[must_use]
    pub fn users(self) -> SmartFilterPath<[crate::types::User]> {
        self.map(|value| value.users.as_ref())
    }
}
impl SmartFilterPath<crate::types::VideoChatScheduled> {
    #[must_use]
    pub fn start_date(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.start_date)
    }
}
impl SmartFilterPath<crate::types::VideoChatStarted> {}
impl SmartFilterPath<crate::types::VideoNote> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn length(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.length)
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn thumbnail(self) -> SmartFilterPath<crate::types::PhotoSize> {
        self.and_then(|value| value.thumbnail.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::VideoQuality> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn width(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.width)
    }

    #[must_use]
    pub fn height(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.height)
    }

    #[must_use]
    pub fn codec(self) -> SmartFilterPath<str> {
        self.map(|value| value.codec.as_ref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::Voice> {
    #[must_use]
    pub fn file_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_id.as_ref())
    }

    #[must_use]
    pub fn file_unique_id(self) -> SmartFilterPath<str> {
        self.map(|value| value.file_unique_id.as_ref())
    }

    #[must_use]
    pub fn duration(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.duration)
    }

    #[must_use]
    pub fn mime_type(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.mime_type.as_deref())
    }

    #[must_use]
    pub fn file_size(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.file_size.as_ref())
    }
}
impl SmartFilterPath<crate::types::WebAppData> {
    #[must_use]
    pub fn data(self) -> SmartFilterPath<str> {
        self.map(|value| value.data.as_ref())
    }

    #[must_use]
    pub fn button_text(self) -> SmartFilterPath<str> {
        self.map(|value| value.button_text.as_ref())
    }
}
impl SmartFilterPath<crate::types::WebAppInfo> {
    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }
}
impl SmartFilterPath<crate::types::WebhookInfo> {
    #[must_use]
    pub fn url(self) -> SmartFilterPath<str> {
        self.map(|value| value.url.as_ref())
    }

    #[must_use]
    pub fn has_custom_certificate(self) -> SmartFilterPath<bool> {
        self.map(|value| &value.has_custom_certificate)
    }

    #[must_use]
    pub fn pending_update_count(self) -> SmartFilterPath<i64> {
        self.map(|value| &value.pending_update_count)
    }

    #[must_use]
    pub fn ip_address(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.ip_address.as_deref())
    }

    #[must_use]
    pub fn last_error_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.last_error_date.as_ref())
    }

    #[must_use]
    pub fn last_error_message(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.last_error_message.as_deref())
    }

    #[must_use]
    pub fn last_synchronization_error_date(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.last_synchronization_error_date.as_ref())
    }

    #[must_use]
    pub fn max_connections(self) -> SmartFilterPath<i64> {
        self.and_then(|value| value.max_connections.as_ref())
    }

    #[must_use]
    pub fn allowed_updates(self) -> SmartFilterPath<[Box<str>]> {
        self.and_then(|value| value.allowed_updates.as_deref())
    }
}
impl SmartFilterPath<crate::types::WriteAccessAllowed> {
    #[must_use]
    pub fn from_request(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.from_request.as_ref())
    }

    #[must_use]
    pub fn web_app_name(self) -> SmartFilterPath<str> {
        self.and_then(|value| value.web_app_name.as_deref())
    }

    #[must_use]
    pub fn from_attachment_menu(self) -> SmartFilterPath<bool> {
        self.and_then(|value| value.from_attachment_menu.as_ref())
    }
}
