#![feature(prelude_import)]
//! # Elefren: API Wrapper around the Mastodon API.
//!
//! Most of the api is documented on [Mastodon's website](https://docs.joinmastodon.org/client/intro/)
//!
//! ```no_run
//! # extern crate elefren;
//! # fn main() {
//! #    run().unwrap();
//! # }
//! # fn run() -> elefren::Result<()> {
//! use elefren::{helpers::cli, prelude::*};
//!
//! let registration = Registration::new("https://mastodon.social")
//!     .client_name("elefren_test")
//!     .build()?;
//! let mastodon = cli::authenticate(registration)?;
//!
//! println!(
//!     "{:?}",
//!     mastodon
//!         .get_home_timeline()?
//!         .items_iter()
//!         .take(100)
//!         .collect::<Vec<_>>()
//! );
//! # Ok(())
//! # }
//! ```
//!
//! Elefren also supports Mastodon's Streaming API:
//!
//! # Example
//!
//! ```no_run
//! # extern crate elefren;
//! # use elefren::prelude::*;
//! # use std::error::Error;
//! use elefren::entities::event::Event;
//! # fn main() -> Result<(), Box<Error>> {
//! # let data = Data {
//! #   base: "".into(),
//! #   client_id: "".into(),
//! #   client_secret: "".into(),
//! #   redirect: "".into(),
//! #   token: "".into(),
//! # };
//! let client = Mastodon::from(data);
//! for event in client.streaming_user()? {
//!     match event {
//!         Event::Update(ref status) => { /* .. */ },
//!         Event::Notification(ref notification) => { /* .. */ },
//!         Event::Delete(ref id) => { /* .. */ },
//!         Event::FiltersChanged => { /* .. */ },
//!     }
//! }
//! # Ok(())
//! # }
//! ```

#![deny(missing_docs, warnings, missing_debug_implementations,
        missing_copy_implementations, trivial_casts, trivial_numeric_casts,
        unsafe_code, unstable_features, unused_import_braces,
        unused_qualifications)]
#![allow(intra_doc_link_resolution_failure)]
#[prelude_import]
use std::prelude::v1::*;
#[macro_use]
extern crate std;

#[macro_use]
extern crate log;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate doc_comment;
extern crate hyper_old_types;
extern crate isolang;
#[macro_use]
extern crate serde_json;
extern crate chrono;
extern crate reqwest;
extern crate serde;
extern crate serde_qs;
extern crate serde_urlencoded;
extern crate tap_reader;
extern crate try_from;
extern crate url;
extern crate tungstenite;





use std::{borrow::Cow,
          /*
          io::BufRead,
          */
          ops};

use async_trait::async_trait;
use reqwest::{Client, RequestBuilder, Response};
use tap_reader::Tap;
/*
use tungstenite::client::AutoStream;
*/

use crate::entities::prelude::*;
use crate::page::Page;

pub use crate::data::Data;
pub use crate::errors::{ApiError, Error, Result};
pub use isolang::Language;
pub use crate::mastodon_client::{MastodonClient, MastodonUnauthenticated};
pub use crate::registration::Registration;
pub use crate::requests::{AddFilterRequest, AddPushRequest, StatusesRequest,
                          UpdateCredsRequest, UpdatePushRequest};
pub use crate::status_builder::{NewStatus, StatusBuilder};

/// Registering your App
pub mod apps {






    /*
    type Stream = EventReader<WebSocket>;
    */




































    /*
    /// returns events that are relevant to the authorized user, i.e. home
    /// timeline & notifications
    ///
    /// # Example
    ///
    /// ```no_run
    /// # extern crate elefren;
    /// # use elefren::prelude::*;
    /// # use std::error::Error;
    /// use elefren::entities::event::Event;
    /// # fn main() -> Result<(), Box<Error>> {
    /// # let data = Data {
    /// #   base: "".into(),
    /// #   client_id: "".into(),
    /// #   client_secret: "".into(),
    /// #   redirect: "".into(),
    /// #   token: "".into(),
    /// # };
    /// let client = Mastodon::from(data);
    /// for event in client.streaming_user()? {
    ///     match event {
    ///         Event::Update(ref status) => { /* .. */ },
    ///         Event::Notification(ref notification) => { /* .. */ },
    ///         Event::Delete(ref id) => { /* .. */ },
    ///         Event::FiltersChanged => { /* .. */ },
    ///     }
    /// }
    /// # Ok(())
    /// # }
    /// ```
    fn streaming_user(&self) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "user");
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// returns all public statuses
    fn streaming_public(&self) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "public");
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// Returns all local statuses
    fn streaming_local(&self) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "public:local");
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// Returns all public statuses for a particular hashtag
    fn streaming_public_hashtag(&self, hashtag: &str) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "hashtag")
            .append_pair("tag", hashtag);
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// Returns all local statuses for a particular hashtag
    fn streaming_local_hashtag(&self, hashtag: &str) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "hashtag:local")
            .append_pair("tag", hashtag);
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// Returns statuses for a list
    fn streaming_list(&self, list_id: &str) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "list")
            .append_pair("list", list_id);
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }

    /// Returns all direct messages
    fn streaming_direct(&self) -> Result<Self::Stream> {
        let mut url: url::Url = self.route("/api/v1/streaming").parse()?;
        url.query_pairs_mut()
            .append_pair("access_token", &self.token)
            .append_pair("stream", "direct");
        let mut url: url::Url = reqwest::get(url.as_str())?.url().as_str().parse()?;
        let new_scheme = match url.scheme() {
            "http" => "ws",
            "https" => "wss",
            x => return Err(Error::Other(format!("Bad URL scheme: {}", x))),
        };
        url.set_scheme(new_scheme).map_err(|_| Error::Other("Bad URL scheme!".to_string()))?;

        let client = tungstenite::connect(url.as_str())?.0;

        Ok(EventReader(WebSocket(client)))
    }
    */

    /*
    #[derive(Debug)]
    /// WebSocket newtype so that EventStream can be implemented without coherency issues
    pub struct WebSocket(tungstenite::protocol::WebSocket<AutoStream>);

    /// A type that streaming events can be read from
    pub trait EventStream {
        /// Read a message from this stream
        fn read_message(&mut self) -> Result<String>;
    }

    impl<R: BufRead> EventStream for R {
        fn read_message(&mut self) -> Result<String> {
            let mut buf = String::new();
            self.read_line(&mut buf)?;
            Ok(buf)
        }
    }

    impl EventStream for WebSocket {
        fn read_message(&mut self) -> Result<String> {
            Ok(self.0.read_message()?.into_text()?)
        }
    }

    #[derive(Debug)]
    /// Iterator that produces events from a mastodon streaming API event stream
    pub struct EventReader<R: EventStream>(R);
    impl<R: EventStream> Iterator for EventReader<R> {
        type Item = Event;

        fn next(&mut self) -> Option<Self::Item> {
            let mut lines = Vec::new();
            loop {
                if let Ok(line) = self.0.read_message() {
                    let line = line.trim().to_string();
                    if line.starts_with(":") || line.is_empty() {
                        continue;
                    }
                    lines.push(line);
                    if let Ok(event) = self.make_event(&lines) {
                        lines.clear();
                        return Some(event);
                    } else {
                        continue;
                    }
                }
            }
        }
    }

    impl<R: EventStream> EventReader<R> {
        fn make_event(&self, lines: &[String]) -> Result<Event> {
            let event;
            let data;
            if let Some(event_line) = lines
                .iter()
                .find(|line| line.starts_with("event:"))
            {
                event = event_line[6..].trim().to_string();
                data = lines.iter().find(|line| line.starts_with("data:")).map(|x| x[5..].trim().to_string());
            } else {
                #[derive(Deserialize)]
                struct Message {
                    pub event: String,
                    pub payload: Option<String>,
                }
                let message = serde_json::from_str::<Message>(&lines[0])?;
                event = message.event;
                data = message.payload;
            }
            let event: &str = &event;
            Ok(match event {
                "notification" => {
                    let data = data.ok_or_else(|| {
                        Error::Other("Missing `data` line for notification".to_string())
                    })?;
                    let notification = serde_json::from_str::<Notification>(&data)?;
                    Event::Notification(notification)
                },
                "update" => {
                    let data =
                        data.ok_or_else(|| Error::Other("Missing `data` line for update".to_string()))?;
                    let status = serde_json::from_str::<Status>(&data)?;
                    Event::Update(status)
                },
                "delete" => {
                    let data =
                        data.ok_or_else(|| Error::Other("Missing `data` line for delete".to_string()))?;
                    Event::Delete(data)
                },
                "filters_changed" => Event::FiltersChanged,
                _ => return Err(Error::Other(format!("Unknown event `{}`", event))),
            })
        }
    }
    */















    // Convert the HTTP response body from JSON. Pass up deserialization errors
    // transparently.

    // If deserializing into the desired type fails try again to
    // see if this is an error response.
    use std::borrow::Cow;
    use try_from::TryInto;
    use crate::errors::{Error, Result};
    use crate::scopes::Scopes;
    /// Represents an application that can be registered with a mastodon instance
    pub struct App {
        client_name: String,
        redirect_uris: String,
        scopes: Scopes,
        #[serde(skip_serializing_if = "Option::is_none")]
        website: Option<String>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for App {
        #[inline]
        fn clone(&self) -> App {
            match *self {
                App {
                client_name: ref __self_0_0,
                redirect_uris: ref __self_0_1,
                scopes: ref __self_0_2,
                website: ref __self_0_3 } =>
                App{client_name: ::core::clone::Clone::clone(&(*__self_0_0)),
                    redirect_uris:
                        ::core::clone::Clone::clone(&(*__self_0_1)),
                    scopes: ::core::clone::Clone::clone(&(*__self_0_2)),
                    website: ::core::clone::Clone::clone(&(*__self_0_3)),},
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for App {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                App {
                client_name: ref __self_0_0,
                redirect_uris: ref __self_0_1,
                scopes: ref __self_0_2,
                website: ref __self_0_3 } => {
                    let mut debug_trait_builder = f.debug_struct("App");
                    let _ =
                        debug_trait_builder.field("client_name",
                                                  &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("redirect_uris",
                                                  &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("scopes", &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("website", &&(*__self_0_3));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::default::Default for App {
        #[inline]
        fn default() -> App {
            App{client_name: ::core::default::Default::default(),
                redirect_uris: ::core::default::Default::default(),
                scopes: ::core::default::Default::default(),
                website: ::core::default::Default::default(),}
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_App: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for App {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    let mut __serde_state =
                        match _serde::Serializer::serialize_struct(__serializer,
                                                                   "App",
                                                                   false as
                                                                       usize +
                                                                       1 + 1 +
                                                                       1 +
                                                                       if Option::is_none(&self.website)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       }) {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "client_name",
                                                                        &self.client_name)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "redirect_uris",
                                                                        &self.redirect_uris)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "scopes",
                                                                        &self.scopes)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    if !Option::is_none(&self.website) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "website",
                                                                            &self.website)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "website")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    _serde::ser::SerializeStruct::end(__serde_state)
                }
            }
        };
    impl ::core::marker::StructuralPartialEq for App { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for App {
        #[inline]
        fn eq(&self, other: &App) -> bool {
            match *other {
                App {
                client_name: ref __self_1_0,
                redirect_uris: ref __self_1_1,
                scopes: ref __self_1_2,
                website: ref __self_1_3 } =>
                match *self {
                    App {
                    client_name: ref __self_0_0,
                    redirect_uris: ref __self_0_1,
                    scopes: ref __self_0_2,
                    website: ref __self_0_3 } =>
                    (*__self_0_0) == (*__self_1_0) &&
                        (*__self_0_1) == (*__self_1_1) &&
                        (*__self_0_2) == (*__self_1_2) &&
                        (*__self_0_3) == (*__self_1_3),
                },
            }
        }
        #[inline]
        fn ne(&self, other: &App) -> bool {
            match *other {
                App {
                client_name: ref __self_1_0,
                redirect_uris: ref __self_1_1,
                scopes: ref __self_1_2,
                website: ref __self_1_3 } =>
                match *self {
                    App {
                    client_name: ref __self_0_0,
                    redirect_uris: ref __self_0_1,
                    scopes: ref __self_0_2,
                    website: ref __self_0_3 } =>
                    (*__self_0_0) != (*__self_1_0) ||
                        (*__self_0_1) != (*__self_1_1) ||
                        (*__self_0_2) != (*__self_1_2) ||
                        (*__self_0_3) != (*__self_1_3),
                },
            }
        }
    }
    impl App {
        /// Get an AppBuilder object
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// use elefren::apps::App;
        ///
        /// let mut builder = App::builder();
        /// ```
        pub fn builder<'a>() -> AppBuilder<'a> { AppBuilder::new() }
        /// Retrieve the list of scopes that apply to this App
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// # use elefren::Error;
        /// use elefren::{apps::App, scopes::Scopes};
        ///
        /// # fn main() -> Result<(), Error> {
        /// let mut builder = App::builder();
        /// builder.client_name("elefren-test");
        /// let app = builder.build()?;
        /// let scopes = app.scopes();
        /// assert_eq!(scopes, &Scopes::read_all());
        /// #   Ok(())
        /// # }
        /// ```
        pub fn scopes(&self) -> &Scopes { &self.scopes }
    }
    /// Builder struct for defining your application.
    /// ```
    /// use elefren::apps::App;
    /// use std::error::Error;
    ///
    /// # fn main() -> Result<(), Box<Error>> {
    /// let mut builder = App::builder();
    /// builder.client_name("elefren_test");
    /// let app = builder.build()?;
    /// #   Ok(())
    /// # }
    /// ```
    pub struct AppBuilder<'a> {
        client_name: Option<Cow<'a, str>>,
        redirect_uris: Option<Cow<'a, str>>,
        scopes: Option<Scopes>,
        website: Option<Cow<'a, str>>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::clone::Clone for AppBuilder<'a> {
        #[inline]
        fn clone(&self) -> AppBuilder<'a> {
            match *self {
                AppBuilder {
                client_name: ref __self_0_0,
                redirect_uris: ref __self_0_1,
                scopes: ref __self_0_2,
                website: ref __self_0_3 } =>
                AppBuilder{client_name:
                               ::core::clone::Clone::clone(&(*__self_0_0)),
                           redirect_uris:
                               ::core::clone::Clone::clone(&(*__self_0_1)),
                           scopes:
                               ::core::clone::Clone::clone(&(*__self_0_2)),
                           website:
                               ::core::clone::Clone::clone(&(*__self_0_3)),},
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::fmt::Debug for AppBuilder<'a> {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                AppBuilder {
                client_name: ref __self_0_0,
                redirect_uris: ref __self_0_1,
                scopes: ref __self_0_2,
                website: ref __self_0_3 } => {
                    let mut debug_trait_builder =
                        f.debug_struct("AppBuilder");
                    let _ =
                        debug_trait_builder.field("client_name",
                                                  &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("redirect_uris",
                                                  &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("scopes", &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("website", &&(*__self_0_3));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::default::Default for AppBuilder<'a> {
        #[inline]
        fn default() -> AppBuilder<'a> {
            AppBuilder{client_name: ::core::default::Default::default(),
                       redirect_uris: ::core::default::Default::default(),
                       scopes: ::core::default::Default::default(),
                       website: ::core::default::Default::default(),}
        }
    }
    impl <'a> ::core::marker::StructuralPartialEq for AppBuilder<'a> { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::cmp::PartialEq for AppBuilder<'a> {
        #[inline]
        fn eq(&self, other: &AppBuilder<'a>) -> bool {
            match *other {
                AppBuilder {
                client_name: ref __self_1_0,
                redirect_uris: ref __self_1_1,
                scopes: ref __self_1_2,
                website: ref __self_1_3 } =>
                match *self {
                    AppBuilder {
                    client_name: ref __self_0_0,
                    redirect_uris: ref __self_0_1,
                    scopes: ref __self_0_2,
                    website: ref __self_0_3 } =>
                    (*__self_0_0) == (*__self_1_0) &&
                        (*__self_0_1) == (*__self_1_1) &&
                        (*__self_0_2) == (*__self_1_2) &&
                        (*__self_0_3) == (*__self_1_3),
                },
            }
        }
        #[inline]
        fn ne(&self, other: &AppBuilder<'a>) -> bool {
            match *other {
                AppBuilder {
                client_name: ref __self_1_0,
                redirect_uris: ref __self_1_1,
                scopes: ref __self_1_2,
                website: ref __self_1_3 } =>
                match *self {
                    AppBuilder {
                    client_name: ref __self_0_0,
                    redirect_uris: ref __self_0_1,
                    scopes: ref __self_0_2,
                    website: ref __self_0_3 } =>
                    (*__self_0_0) != (*__self_1_0) ||
                        (*__self_0_1) != (*__self_1_1) ||
                        (*__self_0_2) != (*__self_1_2) ||
                        (*__self_0_3) != (*__self_1_3),
                },
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_AppBuilder: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'a> _serde::Serialize for AppBuilder<'a> {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    let mut __serde_state =
                        match _serde::Serializer::serialize_struct(__serializer,
                                                                   "AppBuilder",
                                                                   false as
                                                                       usize +
                                                                       1 + 1 +
                                                                       1 + 1)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "client_name",
                                                                        &self.client_name)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "redirect_uris",
                                                                        &self.redirect_uris)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "scopes",
                                                                        &self.scopes)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "website",
                                                                        &self.website)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    _serde::ser::SerializeStruct::end(__serde_state)
                }
            }
        };
    impl <'a> AppBuilder<'a> {
        /// Creates a new AppBuilder object
        pub fn new() -> Self { Default::default() }
        /// Name of the application. Will be displayed when the user is deciding to
        /// grant permission.
        ///
        /// In order to turn this builder into an App, this needs to be provided
        pub fn client_name<I: Into<Cow<'a, str>>>(&mut self, name: I)
         -> &mut Self {
            self.client_name = Some(name.into());
            self
        }
        /// Where the user should be redirected after authorization
        ///
        /// If none is specified, the default is `urn:ietf:wg:oauth:2.0:oob`
        pub fn redirect_uris<I: Into<Cow<'a, str>>>(&mut self, uris: I)
         -> &mut Self {
            self.redirect_uris = Some(uris.into());
            self
        }
        /// Permission scope of the application.
        ///
        /// IF none is specified, the default is Scopes::read_all()
        pub fn scopes(&mut self, scopes: Scopes) -> &mut Self {
            self.scopes = Some(scopes);
            self
        }
        /// URL to the homepage of your application.
        pub fn website<I: Into<Cow<'a, str>>>(&mut self, website: I)
         -> &mut Self {
            self.website = Some(website.into());
            self
        }
        /// Attempts to convert this build into an `App`
        ///
        /// Will fail if no `client_name` was provided
        pub fn build(self) -> Result<App> {
            Ok(App{client_name:
                       self.client_name.ok_or_else(||
                                                       Error::MissingField("client_name"))?.into(),
                   redirect_uris:
                       self.redirect_uris.unwrap_or_else(||
                                                             "urn:ietf:wg:oauth:2.0:oob".into()).into(),
                   scopes: self.scopes.unwrap_or_else(|| Scopes::read_all()),
                   website: self.website.map(|s| s.into()),})
        }
    }
    impl TryInto<App> for App {
        type Err = Error;
        fn try_into(self) -> Result<App> { Ok(self) }
    }
    impl <'a> TryInto<App> for AppBuilder<'a> {
        type Err = Error;
        fn try_into(self) -> Result<App> { Ok(self.build()?) }
    }
}
/// Contains the struct that holds the client auth data
pub mod data {
    use std::borrow::Cow;
    /// Raw data about mastodon app. Save `Data` using `serde` to prevent needing
    /// to authenticate on every run.
    pub struct Data {
        /// Base url of instance eg. `https://mastodon.social`.
        pub base: Cow<'static, str>,
        /// The client's id given by the instance.
        pub client_id: Cow<'static, str>,
        /// The client's secret given by the instance.
        pub client_secret: Cow<'static, str>,
        /// Url to redirect back to your application from the instance signup.
        pub redirect: Cow<'static, str>,
        /// The client's access token.
        pub token: Cow<'static, str>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Data {
        #[inline]
        fn clone(&self) -> Data {
            match *self {
                Data {
                base: ref __self_0_0,
                client_id: ref __self_0_1,
                client_secret: ref __self_0_2,
                redirect: ref __self_0_3,
                token: ref __self_0_4 } =>
                Data{base: ::core::clone::Clone::clone(&(*__self_0_0)),
                     client_id: ::core::clone::Clone::clone(&(*__self_0_1)),
                     client_secret:
                         ::core::clone::Clone::clone(&(*__self_0_2)),
                     redirect: ::core::clone::Clone::clone(&(*__self_0_3)),
                     token: ::core::clone::Clone::clone(&(*__self_0_4)),},
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Data {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                Data {
                base: ref __self_0_0,
                client_id: ref __self_0_1,
                client_secret: ref __self_0_2,
                redirect: ref __self_0_3,
                token: ref __self_0_4 } => {
                    let mut debug_trait_builder = f.debug_struct("Data");
                    let _ =
                        debug_trait_builder.field("base", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("client_id",
                                                  &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("client_secret",
                                                  &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("redirect",
                                                  &&(*__self_0_3));
                    let _ =
                        debug_trait_builder.field("token", &&(*__self_0_4));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    impl ::core::marker::StructuralPartialEq for Data { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Data {
        #[inline]
        fn eq(&self, other: &Data) -> bool {
            match *other {
                Data {
                base: ref __self_1_0,
                client_id: ref __self_1_1,
                client_secret: ref __self_1_2,
                redirect: ref __self_1_3,
                token: ref __self_1_4 } =>
                match *self {
                    Data {
                    base: ref __self_0_0,
                    client_id: ref __self_0_1,
                    client_secret: ref __self_0_2,
                    redirect: ref __self_0_3,
                    token: ref __self_0_4 } =>
                    (*__self_0_0) == (*__self_1_0) &&
                        (*__self_0_1) == (*__self_1_1) &&
                        (*__self_0_2) == (*__self_1_2) &&
                        (*__self_0_3) == (*__self_1_3) &&
                        (*__self_0_4) == (*__self_1_4),
                },
            }
        }
        #[inline]
        fn ne(&self, other: &Data) -> bool {
            match *other {
                Data {
                base: ref __self_1_0,
                client_id: ref __self_1_1,
                client_secret: ref __self_1_2,
                redirect: ref __self_1_3,
                token: ref __self_1_4 } =>
                match *self {
                    Data {
                    base: ref __self_0_0,
                    client_id: ref __self_0_1,
                    client_secret: ref __self_0_2,
                    redirect: ref __self_0_3,
                    token: ref __self_0_4 } =>
                    (*__self_0_0) != (*__self_1_0) ||
                        (*__self_0_1) != (*__self_1_1) ||
                        (*__self_0_2) != (*__self_1_2) ||
                        (*__self_0_3) != (*__self_1_3) ||
                        (*__self_0_4) != (*__self_1_4),
                },
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_Data: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for Data {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field {
                        __field0,
                        __field1,
                        __field2,
                        __field3,
                        __field4,
                        __ignore,
                    }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "field identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                0u64 => _serde::export::Ok(__Field::__field0),
                                1u64 => _serde::export::Ok(__Field::__field1),
                                2u64 => _serde::export::Ok(__Field::__field2),
                                3u64 => _serde::export::Ok(__Field::__field3),
                                4u64 => _serde::export::Ok(__Field::__field4),
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"field index 0 <= i < 5")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                "base" =>
                                _serde::export::Ok(__Field::__field0),
                                "client_id" =>
                                _serde::export::Ok(__Field::__field1),
                                "client_secret" =>
                                _serde::export::Ok(__Field::__field2),
                                "redirect" =>
                                _serde::export::Ok(__Field::__field3),
                                "token" =>
                                _serde::export::Ok(__Field::__field4),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                b"base" =>
                                _serde::export::Ok(__Field::__field0),
                                b"client_id" =>
                                _serde::export::Ok(__Field::__field1),
                                b"client_secret" =>
                                _serde::export::Ok(__Field::__field2),
                                b"redirect" =>
                                _serde::export::Ok(__Field::__field3),
                                b"token" =>
                                _serde::export::Ok(__Field::__field4),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<Data>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = Data;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "struct Data")
                        }
                        #[inline]
                        fn visit_seq<__A>(self, mut __seq: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::SeqAccess<'de> {
                            let __field0 =
                                match match _serde::de::SeqAccess::next_element::<Cow<'static,
                                                                                      str>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                     &"struct Data with 5 elements"));
                                    }
                                };
                            let __field1 =
                                match match _serde::de::SeqAccess::next_element::<Cow<'static,
                                                                                      str>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                     &"struct Data with 5 elements"));
                                    }
                                };
                            let __field2 =
                                match match _serde::de::SeqAccess::next_element::<Cow<'static,
                                                                                      str>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                     &"struct Data with 5 elements"));
                                    }
                                };
                            let __field3 =
                                match match _serde::de::SeqAccess::next_element::<Cow<'static,
                                                                                      str>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                     &"struct Data with 5 elements"));
                                    }
                                };
                            let __field4 =
                                match match _serde::de::SeqAccess::next_element::<Cow<'static,
                                                                                      str>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                     &"struct Data with 5 elements"));
                                    }
                                };
                            _serde::export::Ok(Data{base: __field0,
                                                    client_id: __field1,
                                                    client_secret: __field2,
                                                    redirect: __field3,
                                                    token: __field4,})
                        }
                        #[inline]
                        fn visit_map<__A>(self, mut __map: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::MapAccess<'de> {
                            let mut __field0:
                                    _serde::export::Option<Cow<'static,
                                                               str>> =
                                _serde::export::None;
                            let mut __field1:
                                    _serde::export::Option<Cow<'static,
                                                               str>> =
                                _serde::export::None;
                            let mut __field2:
                                    _serde::export::Option<Cow<'static,
                                                               str>> =
                                _serde::export::None;
                            let mut __field3:
                                    _serde::export::Option<Cow<'static,
                                                               str>> =
                                _serde::export::None;
                            let mut __field4:
                                    _serde::export::Option<Cow<'static,
                                                               str>> =
                                _serde::export::None;
                            while let _serde::export::Some(__key) =
                                      match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                match __key {
                                    __Field::__field0 => {
                                        if _serde::export::Option::is_some(&__field0)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("base"));
                                        }
                                        __field0 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
                                                                                                               str>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field1 => {
                                        if _serde::export::Option::is_some(&__field1)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("client_id"));
                                        }
                                        __field1 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
                                                                                                               str>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field2 => {
                                        if _serde::export::Option::is_some(&__field2)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("client_secret"));
                                        }
                                        __field2 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
                                                                                                               str>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field3 => {
                                        if _serde::export::Option::is_some(&__field3)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("redirect"));
                                        }
                                        __field3 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
                                                                                                               str>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field4 => {
                                        if _serde::export::Option::is_some(&__field4)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("token"));
                                        }
                                        __field4 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Cow<'static,
                                                                                                               str>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    _ => {
                                        let _ =
                                            match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                {
                                                _serde::export::Ok(__val) =>
                                                __val,
                                                _serde::export::Err(__err) =>
                                                {
                                                    return _serde::export::Err(__err);
                                                }
                                            };
                                    }
                                }
                            }
                            let __field0 =
                                match __field0 {
                                    _serde::export::Some(__field0) =>
                                    __field0,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("base")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field1 =
                                match __field1 {
                                    _serde::export::Some(__field1) =>
                                    __field1,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("client_id")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field2 =
                                match __field2 {
                                    _serde::export::Some(__field2) =>
                                    __field2,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("client_secret")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field3 =
                                match __field3 {
                                    _serde::export::Some(__field3) =>
                                    __field3,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("redirect")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field4 =
                                match __field4 {
                                    _serde::export::Some(__field4) =>
                                    __field4,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("token")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            _serde::export::Ok(Data{base: __field0,
                                                    client_id: __field1,
                                                    client_secret: __field2,
                                                    redirect: __field3,
                                                    token: __field4,})
                        }
                    }
                    const FIELDS: &'static [&'static str] =
                        &["base", "client_id", "client_secret", "redirect",
                          "token"];
                    _serde::Deserializer::deserialize_struct(__deserializer,
                                                             "Data", FIELDS,
                                                             __Visitor{marker:
                                                                           _serde::export::PhantomData::<Data>,
                                                                       lifetime:
                                                                           _serde::export::PhantomData,})
                }
            }
        };
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_Data: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for Data {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    let mut __serde_state =
                        match _serde::Serializer::serialize_struct(__serializer,
                                                                   "Data",
                                                                   false as
                                                                       usize +
                                                                       1 + 1 +
                                                                       1 + 1 +
                                                                       1) {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "base",
                                                                        &self.base)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "client_id",
                                                                        &self.client_id)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "client_secret",
                                                                        &self.client_secret)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "redirect",
                                                                        &self.redirect)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                        "token",
                                                                        &self.token)
                        {
                        _serde::export::Ok(__val) => __val,
                        _serde::export::Err(__err) => {
                            return _serde::export::Err(__err);
                        }
                    };
                    _serde::ser::SerializeStruct::end(__serde_state)
                }
            }
        };
}
/// Entities returned from the API
pub mod entities {
    /// Data structures for ser/de of account-related resources
    pub mod account {
        //! A module containing everything relating to a account returned from the api.
        use chrono::prelude::*;
        use serde::de::{self, Deserialize, Deserializer, Unexpected};
        use crate::status_builder;
        use std::path::PathBuf;
        /// A struct representing an Account.
        pub struct Account {
            /// Equals `username` for local users, includes `@domain` for remote ones.
            pub acct: String,
            /// URL to the avatar image
            pub avatar: String,
            /// URL to the avatar static image (gif)
            pub avatar_static: String,
            /// The time the account was created.
            pub created_at: DateTime<Utc>,
            /// The account's display name.
            pub display_name: String,
            /// The number of followers for the account.
            pub followers_count: u64,
            /// The number of accounts the given account is following.
            pub following_count: u64,
            /// URL to the header image.
            pub header: String,
            /// URL to the header static image (gif).
            pub header_static: String,
            /// The ID of the account.
            pub id: String,
            /// Boolean for when the account cannot be followed without waiting for
            /// approval first.
            pub locked: bool,
            /// Biography of user.
            pub note: String,
            /// The number of statuses the account has made.
            pub statuses_count: u64,
            /// URL of the user's profile page (can be remote).
            pub url: String,
            /// The username of the account.
            pub username: String,
            /// An extra attribute given from `verify_credentials` giving defaults about
            /// a user
            pub source: Option<Source>,
            /// If the owner decided to switch accounts, new account is in
            /// this attribute
            pub moved: Option<Box<Account>>,
            /// List of profile metadata fields
            pub fields: Option<Vec<MetadataField>>,
            /// Boolean indicating whether this account is a bot or not
            pub bot: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Account {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Account {
                    acct: ref __self_0_0,
                    avatar: ref __self_0_1,
                    avatar_static: ref __self_0_2,
                    created_at: ref __self_0_3,
                    display_name: ref __self_0_4,
                    followers_count: ref __self_0_5,
                    following_count: ref __self_0_6,
                    header: ref __self_0_7,
                    header_static: ref __self_0_8,
                    id: ref __self_0_9,
                    locked: ref __self_0_10,
                    note: ref __self_0_11,
                    statuses_count: ref __self_0_12,
                    url: ref __self_0_13,
                    username: ref __self_0_14,
                    source: ref __self_0_15,
                    moved: ref __self_0_16,
                    fields: ref __self_0_17,
                    bot: ref __self_0_18 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Account");
                        let _ =
                            debug_trait_builder.field("acct",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("avatar",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("avatar_static",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("created_at",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("display_name",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("followers_count",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("following_count",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("header",
                                                      &&(*__self_0_7));
                        let _ =
                            debug_trait_builder.field("header_static",
                                                      &&(*__self_0_8));
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_9));
                        let _ =
                            debug_trait_builder.field("locked",
                                                      &&(*__self_0_10));
                        let _ =
                            debug_trait_builder.field("note",
                                                      &&(*__self_0_11));
                        let _ =
                            debug_trait_builder.field("statuses_count",
                                                      &&(*__self_0_12));
                        let _ =
                            debug_trait_builder.field("url",
                                                      &&(*__self_0_13));
                        let _ =
                            debug_trait_builder.field("username",
                                                      &&(*__self_0_14));
                        let _ =
                            debug_trait_builder.field("source",
                                                      &&(*__self_0_15));
                        let _ =
                            debug_trait_builder.field("moved",
                                                      &&(*__self_0_16));
                        let _ =
                            debug_trait_builder.field("fields",
                                                      &&(*__self_0_17));
                        let _ =
                            debug_trait_builder.field("bot",
                                                      &&(*__self_0_18));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Account {
            #[inline]
            fn clone(&self) -> Account {
                match *self {
                    Account {
                    acct: ref __self_0_0,
                    avatar: ref __self_0_1,
                    avatar_static: ref __self_0_2,
                    created_at: ref __self_0_3,
                    display_name: ref __self_0_4,
                    followers_count: ref __self_0_5,
                    following_count: ref __self_0_6,
                    header: ref __self_0_7,
                    header_static: ref __self_0_8,
                    id: ref __self_0_9,
                    locked: ref __self_0_10,
                    note: ref __self_0_11,
                    statuses_count: ref __self_0_12,
                    url: ref __self_0_13,
                    username: ref __self_0_14,
                    source: ref __self_0_15,
                    moved: ref __self_0_16,
                    fields: ref __self_0_17,
                    bot: ref __self_0_18 } =>
                    Account{acct: ::core::clone::Clone::clone(&(*__self_0_0)),
                            avatar:
                                ::core::clone::Clone::clone(&(*__self_0_1)),
                            avatar_static:
                                ::core::clone::Clone::clone(&(*__self_0_2)),
                            created_at:
                                ::core::clone::Clone::clone(&(*__self_0_3)),
                            display_name:
                                ::core::clone::Clone::clone(&(*__self_0_4)),
                            followers_count:
                                ::core::clone::Clone::clone(&(*__self_0_5)),
                            following_count:
                                ::core::clone::Clone::clone(&(*__self_0_6)),
                            header:
                                ::core::clone::Clone::clone(&(*__self_0_7)),
                            header_static:
                                ::core::clone::Clone::clone(&(*__self_0_8)),
                            id: ::core::clone::Clone::clone(&(*__self_0_9)),
                            locked:
                                ::core::clone::Clone::clone(&(*__self_0_10)),
                            note:
                                ::core::clone::Clone::clone(&(*__self_0_11)),
                            statuses_count:
                                ::core::clone::Clone::clone(&(*__self_0_12)),
                            url: ::core::clone::Clone::clone(&(*__self_0_13)),
                            username:
                                ::core::clone::Clone::clone(&(*__self_0_14)),
                            source:
                                ::core::clone::Clone::clone(&(*__self_0_15)),
                            moved:
                                ::core::clone::Clone::clone(&(*__self_0_16)),
                            fields:
                                ::core::clone::Clone::clone(&(*__self_0_17)),
                            bot:
                                ::core::clone::Clone::clone(&(*__self_0_18)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Account: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Account {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __field8,
                            __field9,
                            __field10,
                            __field11,
                            __field12,
                            __field13,
                            __field14,
                            __field15,
                            __field16,
                            __field17,
                            __field18,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    8u64 =>
                                    _serde::export::Ok(__Field::__field8),
                                    9u64 =>
                                    _serde::export::Ok(__Field::__field9),
                                    10u64 =>
                                    _serde::export::Ok(__Field::__field10),
                                    11u64 =>
                                    _serde::export::Ok(__Field::__field11),
                                    12u64 =>
                                    _serde::export::Ok(__Field::__field12),
                                    13u64 =>
                                    _serde::export::Ok(__Field::__field13),
                                    14u64 =>
                                    _serde::export::Ok(__Field::__field14),
                                    15u64 =>
                                    _serde::export::Ok(__Field::__field15),
                                    16u64 =>
                                    _serde::export::Ok(__Field::__field16),
                                    17u64 =>
                                    _serde::export::Ok(__Field::__field17),
                                    18u64 =>
                                    _serde::export::Ok(__Field::__field18),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 19")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "acct" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "avatar" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "avatar_static" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "created_at" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "display_name" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "followers_count" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "following_count" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "header" =>
                                    _serde::export::Ok(__Field::__field7),
                                    "header_static" =>
                                    _serde::export::Ok(__Field::__field8),
                                    "id" =>
                                    _serde::export::Ok(__Field::__field9),
                                    "locked" =>
                                    _serde::export::Ok(__Field::__field10),
                                    "note" =>
                                    _serde::export::Ok(__Field::__field11),
                                    "statuses_count" =>
                                    _serde::export::Ok(__Field::__field12),
                                    "url" =>
                                    _serde::export::Ok(__Field::__field13),
                                    "username" =>
                                    _serde::export::Ok(__Field::__field14),
                                    "source" =>
                                    _serde::export::Ok(__Field::__field15),
                                    "moved" =>
                                    _serde::export::Ok(__Field::__field16),
                                    "fields" =>
                                    _serde::export::Ok(__Field::__field17),
                                    "bot" =>
                                    _serde::export::Ok(__Field::__field18),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"acct" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"avatar" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"avatar_static" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"created_at" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"display_name" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"followers_count" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"following_count" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"header" =>
                                    _serde::export::Ok(__Field::__field7),
                                    b"header_static" =>
                                    _serde::export::Ok(__Field::__field8),
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field9),
                                    b"locked" =>
                                    _serde::export::Ok(__Field::__field10),
                                    b"note" =>
                                    _serde::export::Ok(__Field::__field11),
                                    b"statuses_count" =>
                                    _serde::export::Ok(__Field::__field12),
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field13),
                                    b"username" =>
                                    _serde::export::Ok(__Field::__field14),
                                    b"source" =>
                                    _serde::export::Ok(__Field::__field15),
                                    b"moved" =>
                                    _serde::export::Ok(__Field::__field16),
                                    b"fields" =>
                                    _serde::export::Ok(__Field::__field17),
                                    b"bot" =>
                                    _serde::export::Ok(__Field::__field18),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Account>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Account;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Account")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field8 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field9 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field10 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field11 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(11usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field12 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(12usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field13 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(13usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field14 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(14usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field15 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Source>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(15usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field16 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Box<Account>>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(16usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field17 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Vec<MetadataField>>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(17usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                let __field18 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(18usize,
                                                                                                         &"struct Account with 19 elements"));
                                        }
                                    };
                                _serde::export::Ok(Account{acct: __field0,
                                                           avatar: __field1,
                                                           avatar_static:
                                                               __field2,
                                                           created_at:
                                                               __field3,
                                                           display_name:
                                                               __field4,
                                                           followers_count:
                                                               __field5,
                                                           following_count:
                                                               __field6,
                                                           header: __field7,
                                                           header_static:
                                                               __field8,
                                                           id: __field9,
                                                           locked: __field10,
                                                           note: __field11,
                                                           statuses_count:
                                                               __field12,
                                                           url: __field13,
                                                           username:
                                                               __field14,
                                                           source: __field15,
                                                           moved: __field16,
                                                           fields: __field17,
                                                           bot: __field18,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<DateTime<Utc>> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field8:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field9:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field10:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field11:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field12:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field13:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field14:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field15:
                                        _serde::export::Option<Option<Source>> =
                                    _serde::export::None;
                                let mut __field16:
                                        _serde::export::Option<Option<Box<Account>>> =
                                    _serde::export::None;
                                let mut __field17:
                                        _serde::export::Option<Option<Vec<MetadataField>>> =
                                    _serde::export::None;
                                let mut __field18:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("acct"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("avatar"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("avatar_static"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("created_at"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("display_name"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("followers_count"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("following_count"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("header"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field8 => {
                                            if _serde::export::Option::is_some(&__field8)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("header_static"));
                                            }
                                            __field8 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field9 => {
                                            if _serde::export::Option::is_some(&__field9)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field9 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field10 => {
                                            if _serde::export::Option::is_some(&__field10)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("locked"));
                                            }
                                            __field10 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field11 => {
                                            if _serde::export::Option::is_some(&__field11)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("note"));
                                            }
                                            __field11 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field12 => {
                                            if _serde::export::Option::is_some(&__field12)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("statuses_count"));
                                            }
                                            __field12 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field13 => {
                                            if _serde::export::Option::is_some(&__field13)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field13 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field14 => {
                                            if _serde::export::Option::is_some(&__field14)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("username"));
                                            }
                                            __field14 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field15 => {
                                            if _serde::export::Option::is_some(&__field15)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("source"));
                                            }
                                            __field15 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Source>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field16 => {
                                            if _serde::export::Option::is_some(&__field16)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("moved"));
                                            }
                                            __field16 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Box<Account>>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field17 => {
                                            if _serde::export::Option::is_some(&__field17)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("fields"));
                                            }
                                            __field17 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<MetadataField>>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field18 => {
                                            if _serde::export::Option::is_some(&__field18)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("bot"));
                                            }
                                            __field18 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("acct")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("avatar")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("avatar_static")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("created_at")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("display_name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("followers_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("following_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("header")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field8 =
                                    match __field8 {
                                        _serde::export::Some(__field8) =>
                                        __field8,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("header_static")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field9 =
                                    match __field9 {
                                        _serde::export::Some(__field9) =>
                                        __field9,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field10 =
                                    match __field10 {
                                        _serde::export::Some(__field10) =>
                                        __field10,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("locked")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field11 =
                                    match __field11 {
                                        _serde::export::Some(__field11) =>
                                        __field11,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("note")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field12 =
                                    match __field12 {
                                        _serde::export::Some(__field12) =>
                                        __field12,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("statuses_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field13 =
                                    match __field13 {
                                        _serde::export::Some(__field13) =>
                                        __field13,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field14 =
                                    match __field14 {
                                        _serde::export::Some(__field14) =>
                                        __field14,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("username")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field15 =
                                    match __field15 {
                                        _serde::export::Some(__field15) =>
                                        __field15,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("source")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field16 =
                                    match __field16 {
                                        _serde::export::Some(__field16) =>
                                        __field16,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("moved")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field17 =
                                    match __field17 {
                                        _serde::export::Some(__field17) =>
                                        __field17,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("fields")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field18 =
                                    match __field18 {
                                        _serde::export::Some(__field18) =>
                                        __field18,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("bot")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Account{acct: __field0,
                                                           avatar: __field1,
                                                           avatar_static:
                                                               __field2,
                                                           created_at:
                                                               __field3,
                                                           display_name:
                                                               __field4,
                                                           followers_count:
                                                               __field5,
                                                           following_count:
                                                               __field6,
                                                           header: __field7,
                                                           header_static:
                                                               __field8,
                                                           id: __field9,
                                                           locked: __field10,
                                                           note: __field11,
                                                           statuses_count:
                                                               __field12,
                                                           url: __field13,
                                                           username:
                                                               __field14,
                                                           source: __field15,
                                                           moved: __field16,
                                                           fields: __field17,
                                                           bot: __field18,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["acct", "avatar", "avatar_static", "created_at",
                              "display_name", "followers_count",
                              "following_count", "header", "header_static",
                              "id", "locked", "note", "statuses_count", "url",
                              "username", "source", "moved", "fields", "bot"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Account",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Account>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Account { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Account {
            #[inline]
            fn eq(&self, other: &Account) -> bool {
                match *other {
                    Account {
                    acct: ref __self_1_0,
                    avatar: ref __self_1_1,
                    avatar_static: ref __self_1_2,
                    created_at: ref __self_1_3,
                    display_name: ref __self_1_4,
                    followers_count: ref __self_1_5,
                    following_count: ref __self_1_6,
                    header: ref __self_1_7,
                    header_static: ref __self_1_8,
                    id: ref __self_1_9,
                    locked: ref __self_1_10,
                    note: ref __self_1_11,
                    statuses_count: ref __self_1_12,
                    url: ref __self_1_13,
                    username: ref __self_1_14,
                    source: ref __self_1_15,
                    moved: ref __self_1_16,
                    fields: ref __self_1_17,
                    bot: ref __self_1_18 } =>
                    match *self {
                        Account {
                        acct: ref __self_0_0,
                        avatar: ref __self_0_1,
                        avatar_static: ref __self_0_2,
                        created_at: ref __self_0_3,
                        display_name: ref __self_0_4,
                        followers_count: ref __self_0_5,
                        following_count: ref __self_0_6,
                        header: ref __self_0_7,
                        header_static: ref __self_0_8,
                        id: ref __self_0_9,
                        locked: ref __self_0_10,
                        note: ref __self_0_11,
                        statuses_count: ref __self_0_12,
                        url: ref __self_0_13,
                        username: ref __self_0_14,
                        source: ref __self_0_15,
                        moved: ref __self_0_16,
                        fields: ref __self_0_17,
                        bot: ref __self_0_18 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7) &&
                            (*__self_0_8) == (*__self_1_8) &&
                            (*__self_0_9) == (*__self_1_9) &&
                            (*__self_0_10) == (*__self_1_10) &&
                            (*__self_0_11) == (*__self_1_11) &&
                            (*__self_0_12) == (*__self_1_12) &&
                            (*__self_0_13) == (*__self_1_13) &&
                            (*__self_0_14) == (*__self_1_14) &&
                            (*__self_0_15) == (*__self_1_15) &&
                            (*__self_0_16) == (*__self_1_16) &&
                            (*__self_0_17) == (*__self_1_17) &&
                            (*__self_0_18) == (*__self_1_18),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Account) -> bool {
                match *other {
                    Account {
                    acct: ref __self_1_0,
                    avatar: ref __self_1_1,
                    avatar_static: ref __self_1_2,
                    created_at: ref __self_1_3,
                    display_name: ref __self_1_4,
                    followers_count: ref __self_1_5,
                    following_count: ref __self_1_6,
                    header: ref __self_1_7,
                    header_static: ref __self_1_8,
                    id: ref __self_1_9,
                    locked: ref __self_1_10,
                    note: ref __self_1_11,
                    statuses_count: ref __self_1_12,
                    url: ref __self_1_13,
                    username: ref __self_1_14,
                    source: ref __self_1_15,
                    moved: ref __self_1_16,
                    fields: ref __self_1_17,
                    bot: ref __self_1_18 } =>
                    match *self {
                        Account {
                        acct: ref __self_0_0,
                        avatar: ref __self_0_1,
                        avatar_static: ref __self_0_2,
                        created_at: ref __self_0_3,
                        display_name: ref __self_0_4,
                        followers_count: ref __self_0_5,
                        following_count: ref __self_0_6,
                        header: ref __self_0_7,
                        header_static: ref __self_0_8,
                        id: ref __self_0_9,
                        locked: ref __self_0_10,
                        note: ref __self_0_11,
                        statuses_count: ref __self_0_12,
                        url: ref __self_0_13,
                        username: ref __self_0_14,
                        source: ref __self_0_15,
                        moved: ref __self_0_16,
                        fields: ref __self_0_17,
                        bot: ref __self_0_18 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7) ||
                            (*__self_0_8) != (*__self_1_8) ||
                            (*__self_0_9) != (*__self_1_9) ||
                            (*__self_0_10) != (*__self_1_10) ||
                            (*__self_0_11) != (*__self_1_11) ||
                            (*__self_0_12) != (*__self_1_12) ||
                            (*__self_0_13) != (*__self_1_13) ||
                            (*__self_0_14) != (*__self_1_14) ||
                            (*__self_0_15) != (*__self_1_15) ||
                            (*__self_0_16) != (*__self_1_16) ||
                            (*__self_0_17) != (*__self_1_17) ||
                            (*__self_0_18) != (*__self_1_18),
                    },
                }
            }
        }
        /// A single name: value pair from a user's profile
        pub struct MetadataField {
            /// name part of metadata
            pub name: String,
            /// value part of metadata
            pub value: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for MetadataField {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    MetadataField {
                    name: ref __self_0_0, value: ref __self_0_1 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("MetadataField");
                        let _ =
                            debug_trait_builder.field("name",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("value",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for MetadataField {
            #[inline]
            fn clone(&self) -> MetadataField {
                match *self {
                    MetadataField {
                    name: ref __self_0_0, value: ref __self_0_1 } =>
                    MetadataField{name:
                                      ::core::clone::Clone::clone(&(*__self_0_0)),
                                  value:
                                      ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_MetadataField: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for MetadataField {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "MetadataField",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "name",
                                                                            &self.name)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "value",
                                                                            &self.value)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_MetadataField: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for MetadataField {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "value" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"value" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<MetadataField>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = MetadataField;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct MetadataField")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct MetadataField with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct MetadataField with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(MetadataField{name:
                                                                     __field0,
                                                                 value:
                                                                     __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("name"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("value"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("value")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(MetadataField{name:
                                                                     __field0,
                                                                 value:
                                                                     __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["name", "value"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "MetadataField",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<MetadataField>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for MetadataField { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for MetadataField {
            #[inline]
            fn eq(&self, other: &MetadataField) -> bool {
                match *other {
                    MetadataField {
                    name: ref __self_1_0, value: ref __self_1_1 } =>
                    match *self {
                        MetadataField {
                        name: ref __self_0_0, value: ref __self_0_1 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &MetadataField) -> bool {
                match *other {
                    MetadataField {
                    name: ref __self_1_0, value: ref __self_1_1 } =>
                    match *self {
                        MetadataField {
                        name: ref __self_0_0, value: ref __self_0_1 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for MetadataField {
            #[inline]
            fn default() -> MetadataField {
                MetadataField{name: ::core::default::Default::default(),
                              value: ::core::default::Default::default(),}
            }
        }
        impl MetadataField {
            pub(crate) fn new(name: &str, value: &str) -> MetadataField {
                MetadataField{name: name.into(), value: value.into(),}
            }
        }
        /// An extra object given from `verify_credentials` giving defaults about a user
        pub struct Source {
            privacy: Option<status_builder::Visibility>,
            #[serde(deserialize_with = "string_or_bool")]
            sensitive: bool,
            note: Option<String>,
            fields: Option<Vec<MetadataField>>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Source {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Source {
                    privacy: ref __self_0_0,
                    sensitive: ref __self_0_1,
                    note: ref __self_0_2,
                    fields: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Source");
                        let _ =
                            debug_trait_builder.field("privacy",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("sensitive",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("note",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("fields",
                                                      &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Source {
            #[inline]
            fn clone(&self) -> Source {
                match *self {
                    Source {
                    privacy: ref __self_0_0,
                    sensitive: ref __self_0_1,
                    note: ref __self_0_2,
                    fields: ref __self_0_3 } =>
                    Source{privacy:
                               ::core::clone::Clone::clone(&(*__self_0_0)),
                           sensitive:
                               ::core::clone::Clone::clone(&(*__self_0_1)),
                           note: ::core::clone::Clone::clone(&(*__self_0_2)),
                           fields:
                               ::core::clone::Clone::clone(&(*__self_0_3)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Source: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Source {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "privacy" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "sensitive" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "note" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "fields" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"privacy" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"sensitive" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"note" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"fields" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Source>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Source;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Source")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Option<status_builder::Visibility>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Source with 4 elements"));
                                        }
                                    };
                                let __field1 =
                                    match {
                                              struct __DeserializeWith<'de> {
                                                  value: bool,
                                                  phantom: _serde::export::PhantomData<Source>,
                                                  lifetime: _serde::export::PhantomData<&'de ()>,
                                              }
                                              impl <'de>
                                               _serde::Deserialize<'de> for
                                               __DeserializeWith<'de> {
                                                  fn deserialize<__D>(__deserializer:
                                                                          __D)
                                                   ->
                                                       _serde::export::Result<Self,
                                                                              __D::Error>
                                                   where
                                                   __D: _serde::Deserializer<'de> {
                                                      _serde::export::Ok(__DeserializeWith{value:
                                                                                               match string_or_bool(__deserializer)
                                                                                                   {
                                                                                                   _serde::export::Ok(__val)
                                                                                                   =>
                                                                                                   __val,
                                                                                                   _serde::export::Err(__err)
                                                                                                   =>
                                                                                                   {
                                                                                                       return _serde::export::Err(__err);
                                                                                                   }
                                                                                               },
                                                                                           phantom:
                                                                                               _serde::export::PhantomData,
                                                                                           lifetime:
                                                                                               _serde::export::PhantomData,})
                                                  }
                                              }
                                              _serde::export::Option::map(match _serde::de::SeqAccess::next_element::<__DeserializeWith<'de>>(&mut __seq)
                                                                              {
                                                                              _serde::export::Ok(__val)
                                                                              =>
                                                                              __val,
                                                                              _serde::export::Err(__err)
                                                                              =>
                                                                              {
                                                                                  return _serde::export::Err(__err);
                                                                              }
                                                                          },
                                                                          |__wrap|
                                                                              __wrap.value)
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Source with 4 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Source with 4 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Vec<MetadataField>>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Source with 4 elements"));
                                        }
                                    };
                                _serde::export::Ok(Source{privacy: __field0,
                                                          sensitive: __field1,
                                                          note: __field2,
                                                          fields: __field3,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Option<status_builder::Visibility>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<Vec<MetadataField>>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("privacy"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<status_builder::Visibility>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("sensitive"));
                                            }
                                            __field1 =
                                                _serde::export::Some({
                                                                         struct __DeserializeWith<'de> {
                                                                             value: bool,
                                                                             phantom: _serde::export::PhantomData<Source>,
                                                                             lifetime: _serde::export::PhantomData<&'de ()>,
                                                                         }
                                                                         impl <'de>
                                                                          _serde::Deserialize<'de>
                                                                          for
                                                                          __DeserializeWith<'de>
                                                                          {
                                                                             fn deserialize<__D>(__deserializer:
                                                                                                     __D)
                                                                              ->
                                                                                  _serde::export::Result<Self,
                                                                                                         __D::Error>
                                                                              where
                                                                              __D: _serde::Deserializer<'de> {
                                                                                 _serde::export::Ok(__DeserializeWith{value:
                                                                                                                          match string_or_bool(__deserializer)
                                                                                                                              {
                                                                                                                              _serde::export::Ok(__val)
                                                                                                                              =>
                                                                                                                              __val,
                                                                                                                              _serde::export::Err(__err)
                                                                                                                              =>
                                                                                                                              {
                                                                                                                                  return _serde::export::Err(__err);
                                                                                                                              }
                                                                                                                          },
                                                                                                                      phantom:
                                                                                                                          _serde::export::PhantomData,
                                                                                                                      lifetime:
                                                                                                                          _serde::export::PhantomData,})
                                                                             }
                                                                         }
                                                                         match _serde::de::MapAccess::next_value::<__DeserializeWith<'de>>(&mut __map)
                                                                             {
                                                                             _serde::export::Ok(__wrapper)
                                                                             =>
                                                                             __wrapper.value,
                                                                             _serde::export::Err(__err)
                                                                             =>
                                                                             {
                                                                                 return _serde::export::Err(__err);
                                                                             }
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("note"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("fields"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<MetadataField>>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("privacy")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        return _serde::export::Err(<__A::Error
                                                                       as
                                                                       _serde::de::Error>::missing_field("sensitive")),
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("note")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("fields")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Source{privacy: __field0,
                                                          sensitive: __field1,
                                                          note: __field2,
                                                          fields: __field3,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["privacy", "sensitive", "note", "fields"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Source",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Source>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Source { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Source {
            #[inline]
            fn eq(&self, other: &Source) -> bool {
                match *other {
                    Source {
                    privacy: ref __self_1_0,
                    sensitive: ref __self_1_1,
                    note: ref __self_1_2,
                    fields: ref __self_1_3 } =>
                    match *self {
                        Source {
                        privacy: ref __self_0_0,
                        sensitive: ref __self_0_1,
                        note: ref __self_0_2,
                        fields: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Source) -> bool {
                match *other {
                    Source {
                    privacy: ref __self_1_0,
                    sensitive: ref __self_1_1,
                    note: ref __self_1_2,
                    fields: ref __self_1_3 } =>
                    match *self {
                        Source {
                        privacy: ref __self_0_0,
                        sensitive: ref __self_0_1,
                        note: ref __self_0_2,
                        fields: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
        fn string_or_bool<'de, D: Deserializer<'de>>(val: D)
         -> ::std::result::Result<bool, D::Error> {
            #[serde(untagged)]
            pub enum BoolOrString { Bool(bool), Str(String), }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for BoolOrString {
                #[inline]
                fn clone(&self) -> BoolOrString {
                    match (&*self,) {
                        (&BoolOrString::Bool(ref __self_0),) =>
                        BoolOrString::Bool(::core::clone::Clone::clone(&(*__self_0))),
                        (&BoolOrString::Str(ref __self_0),) =>
                        BoolOrString::Str(::core::clone::Clone::clone(&(*__self_0))),
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for BoolOrString {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match (&*self,) {
                        (&BoolOrString::Bool(ref __self_0),) => {
                            let mut debug_trait_builder =
                                f.debug_tuple("Bool");
                            let _ = debug_trait_builder.field(&&(*__self_0));
                            debug_trait_builder.finish()
                        }
                        (&BoolOrString::Str(ref __self_0),) => {
                            let mut debug_trait_builder =
                                f.debug_tuple("Str");
                            let _ = debug_trait_builder.field(&&(*__self_0));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_DESERIALIZE_FOR_BoolOrString: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl <'de> _serde::Deserialize<'de> for BoolOrString {
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            let __content =
                                match <_serde::private::de::Content as
                                          _serde::Deserialize>::deserialize(__deserializer)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            if let _serde::export::Ok(__ok) =
                                   _serde::export::Result::map(<bool as
                                                                   _serde::Deserialize>::deserialize(_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content)),
                                                               BoolOrString::Bool)
                               {
                                return _serde::export::Ok(__ok);
                            }
                            if let _serde::export::Ok(__ok) =
                                   _serde::export::Result::map(<String as
                                                                   _serde::Deserialize>::deserialize(_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content)),
                                                               BoolOrString::Str)
                               {
                                return _serde::export::Ok(__ok);
                            }
                            _serde::export::Err(_serde::de::Error::custom("data did not match any variant of untagged enum BoolOrString"))
                        }
                    }
                };
            impl ::core::marker::StructuralPartialEq for BoolOrString { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for BoolOrString {
                #[inline]
                fn eq(&self, other: &BoolOrString) -> bool {
                    {
                        let __self_vi =
                            unsafe {
                                ::core::intrinsics::discriminant_value(&*self)
                            };
                        let __arg_1_vi =
                            unsafe {
                                ::core::intrinsics::discriminant_value(&*other)
                            };
                        if true && __self_vi == __arg_1_vi {
                            match (&*self, &*other) {
                                (&BoolOrString::Bool(ref __self_0),
                                 &BoolOrString::Bool(ref __arg_1_0)) =>
                                (*__self_0) == (*__arg_1_0),
                                (&BoolOrString::Str(ref __self_0),
                                 &BoolOrString::Str(ref __arg_1_0)) =>
                                (*__self_0) == (*__arg_1_0),
                                _ => unsafe {
                                    ::core::intrinsics::unreachable()
                                }
                            }
                        } else { false }
                    }
                }
                #[inline]
                fn ne(&self, other: &BoolOrString) -> bool {
                    {
                        let __self_vi =
                            unsafe {
                                ::core::intrinsics::discriminant_value(&*self)
                            };
                        let __arg_1_vi =
                            unsafe {
                                ::core::intrinsics::discriminant_value(&*other)
                            };
                        if true && __self_vi == __arg_1_vi {
                            match (&*self, &*other) {
                                (&BoolOrString::Bool(ref __self_0),
                                 &BoolOrString::Bool(ref __arg_1_0)) =>
                                (*__self_0) != (*__arg_1_0),
                                (&BoolOrString::Str(ref __self_0),
                                 &BoolOrString::Str(ref __arg_1_0)) =>
                                (*__self_0) != (*__arg_1_0),
                                _ => unsafe {
                                    ::core::intrinsics::unreachable()
                                }
                            }
                        } else { true }
                    }
                }
            }
            Ok(match BoolOrString::deserialize(val)? {
                   BoolOrString::Bool(b) => b,
                   BoolOrString::Str(ref s) => {
                       if s == "true" {
                           true
                       } else if s == "false" {
                           false
                       } else {
                           return Err(de::Error::invalid_value(Unexpected::Str(s),
                                                               &"true or false"));
                       }
                   }
               })
        }
        pub(crate) struct UpdateSource {
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) privacy: Option<status_builder::Visibility>,
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) sensitive: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for UpdateSource {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    UpdateSource {
                    privacy: ref __self_0_0, sensitive: ref __self_0_1 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("UpdateSource");
                        let _ =
                            debug_trait_builder.field("privacy",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("sensitive",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for UpdateSource {
            #[inline]
            fn default() -> UpdateSource {
                UpdateSource{privacy: ::core::default::Default::default(),
                             sensitive: ::core::default::Default::default(),}
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for UpdateSource {
            #[inline]
            fn clone(&self) -> UpdateSource {
                match *self {
                    UpdateSource {
                    privacy: ref __self_0_0, sensitive: ref __self_0_1 } =>
                    UpdateSource{privacy:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 sensitive:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_UpdateSource: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for UpdateSource {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "UpdateSource",
                                                                       false
                                                                           as
                                                                           usize
                                                                           +
                                                                           if Option::is_none(&self.privacy)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.sensitive)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           })
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        if !Option::is_none(&self.privacy) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "privacy",
                                                                                &self.privacy)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "privacy")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.sensitive) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "sensitive",
                                                                                &self.sensitive)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "sensitive")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for UpdateSource { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for UpdateSource {
            #[inline]
            fn eq(&self, other: &UpdateSource) -> bool {
                match *other {
                    UpdateSource {
                    privacy: ref __self_1_0, sensitive: ref __self_1_1 } =>
                    match *self {
                        UpdateSource {
                        privacy: ref __self_0_0, sensitive: ref __self_0_1 }
                        =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &UpdateSource) -> bool {
                match *other {
                    UpdateSource {
                    privacy: ref __self_1_0, sensitive: ref __self_1_1 } =>
                    match *self {
                        UpdateSource {
                        privacy: ref __self_0_0, sensitive: ref __self_0_1 }
                        =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
        pub(crate) struct Credentials {
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) display_name: Option<String>,
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) note: Option<String>,
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) avatar: Option<PathBuf>,
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) header: Option<PathBuf>,
            #[serde(skip_serializing_if = "Option::is_none")]
            pub(crate) source: Option<UpdateSource>,
            #[serde(serialize_with = "fields_attributes_ser::ser")]
            pub(crate) fields_attributes: Vec<MetadataField>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Credentials {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Credentials {
                    display_name: ref __self_0_0,
                    note: ref __self_0_1,
                    avatar: ref __self_0_2,
                    header: ref __self_0_3,
                    source: ref __self_0_4,
                    fields_attributes: ref __self_0_5 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Credentials");
                        let _ =
                            debug_trait_builder.field("display_name",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("note",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("avatar",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("header",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("source",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("fields_attributes",
                                                      &&(*__self_0_5));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for Credentials {
            #[inline]
            fn default() -> Credentials {
                Credentials{display_name: ::core::default::Default::default(),
                            note: ::core::default::Default::default(),
                            avatar: ::core::default::Default::default(),
                            header: ::core::default::Default::default(),
                            source: ::core::default::Default::default(),
                            fields_attributes:
                                ::core::default::Default::default(),}
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Credentials: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for Credentials {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Credentials",
                                                                       false
                                                                           as
                                                                           usize
                                                                           +
                                                                           if Option::is_none(&self.display_name)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.note)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.avatar)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.header)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.source)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        if !Option::is_none(&self.display_name) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "display_name",
                                                                                &self.display_name)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "display_name")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.note) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "note",
                                                                                &self.note)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "note")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.avatar) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "avatar",
                                                                                &self.avatar)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "avatar")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.header) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "header",
                                                                                &self.header)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "header")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.source) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "source",
                                                                                &self.source)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "source")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "fields_attributes",
                                                                            {
                                                                                struct __SerializeWith<'__a> {
                                                                                    values: (&'__a Vec<MetadataField>,),
                                                                                    phantom: _serde::export::PhantomData<Credentials>,
                                                                                }
                                                                                impl <'__a>
                                                                                 _serde::Serialize
                                                                                 for
                                                                                 __SerializeWith<'__a>
                                                                                 {
                                                                                    fn serialize<__S>(&self,
                                                                                                      __s:
                                                                                                          __S)
                                                                                     ->
                                                                                         _serde::export::Result<__S::Ok,
                                                                                                                __S::Error>
                                                                                     where
                                                                                     __S: _serde::Serializer {
                                                                                        fields_attributes_ser::ser(self.values.0,
                                                                                                                   __s)
                                                                                    }
                                                                                }
                                                                                &__SerializeWith{values:
                                                                                                     (&self.fields_attributes,),
                                                                                                 phantom:
                                                                                                     _serde::export::PhantomData::<Credentials>,}
                                                                            })
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Credentials { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Credentials {
            #[inline]
            fn eq(&self, other: &Credentials) -> bool {
                match *other {
                    Credentials {
                    display_name: ref __self_1_0,
                    note: ref __self_1_1,
                    avatar: ref __self_1_2,
                    header: ref __self_1_3,
                    source: ref __self_1_4,
                    fields_attributes: ref __self_1_5 } =>
                    match *self {
                        Credentials {
                        display_name: ref __self_0_0,
                        note: ref __self_0_1,
                        avatar: ref __self_0_2,
                        header: ref __self_0_3,
                        source: ref __self_0_4,
                        fields_attributes: ref __self_0_5 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Credentials) -> bool {
                match *other {
                    Credentials {
                    display_name: ref __self_1_0,
                    note: ref __self_1_1,
                    avatar: ref __self_1_2,
                    header: ref __self_1_3,
                    source: ref __self_1_4,
                    fields_attributes: ref __self_1_5 } =>
                    match *self {
                        Credentials {
                        display_name: ref __self_0_0,
                        note: ref __self_0_1,
                        avatar: ref __self_0_2,
                        header: ref __self_0_3,
                        source: ref __self_0_4,
                        fields_attributes: ref __self_0_5 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5),
                    },
                }
            }
        }
        mod fields_attributes_ser {
            use super::*;
            use serde::ser::{SerializeMap, Serializer};
            pub(crate) fn ser<S>(attrs: &Vec<MetadataField>, serializer: S)
             -> Result<S::Ok, S::Error> where S: Serializer {
                let mut map = serializer.serialize_map(Some(attrs.len()))?;
                for (i, field) in attrs.iter().enumerate() {
                    map.serialize_entry(&i, &field)?;
                }
                map.end()
            }
        }
    }
    /// Data structures for ser/de of attachment-related resources
    pub mod attachment {
        //! Module containing everything related to media attachements.
        /// A struct representing a media attachment.
        pub struct Attachment {
            /// ID of the attachment.
            pub id: String,
            /// The media type of an attachment.
            #[serde(rename = "type")]
            pub media_type: MediaType,
            /// URL of the locally hosted version of the image.
            pub url: String,
            /// For remote images, the remote URL of the original image.
            pub remote_url: Option<String>,
            /// URL of the preview image.
            pub preview_url: String,
            /// Shorter URL for the image, for insertion into text
            /// (only present on local images)
            pub text_url: Option<String>,
            /// Meta information about the attachment.
            pub meta: Option<Meta>,
            /// Noop will be removed.
            pub description: Option<String>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Attachment {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Attachment {
                    id: ref __self_0_0,
                    media_type: ref __self_0_1,
                    url: ref __self_0_2,
                    remote_url: ref __self_0_3,
                    preview_url: ref __self_0_4,
                    text_url: ref __self_0_5,
                    meta: ref __self_0_6,
                    description: ref __self_0_7 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Attachment");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("media_type",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("remote_url",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("preview_url",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("text_url",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("meta",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("description",
                                                      &&(*__self_0_7));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Attachment {
            #[inline]
            fn clone(&self) -> Attachment {
                match *self {
                    Attachment {
                    id: ref __self_0_0,
                    media_type: ref __self_0_1,
                    url: ref __self_0_2,
                    remote_url: ref __self_0_3,
                    preview_url: ref __self_0_4,
                    text_url: ref __self_0_5,
                    meta: ref __self_0_6,
                    description: ref __self_0_7 } =>
                    Attachment{id:
                                   ::core::clone::Clone::clone(&(*__self_0_0)),
                               media_type:
                                   ::core::clone::Clone::clone(&(*__self_0_1)),
                               url:
                                   ::core::clone::Clone::clone(&(*__self_0_2)),
                               remote_url:
                                   ::core::clone::Clone::clone(&(*__self_0_3)),
                               preview_url:
                                   ::core::clone::Clone::clone(&(*__self_0_4)),
                               text_url:
                                   ::core::clone::Clone::clone(&(*__self_0_5)),
                               meta:
                                   ::core::clone::Clone::clone(&(*__self_0_6)),
                               description:
                                   ::core::clone::Clone::clone(&(*__self_0_7)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Attachment: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Attachment {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 8")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "type" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "remote_url" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "preview_url" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "text_url" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "meta" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "description" =>
                                    _serde::export::Ok(__Field::__field7),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"type" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"remote_url" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"preview_url" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"text_url" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"meta" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"description" =>
                                    _serde::export::Ok(__Field::__field7),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Attachment>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Attachment;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Attachment")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<MediaType>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Meta>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Attachment with 8 elements"));
                                        }
                                    };
                                _serde::export::Ok(Attachment{id: __field0,
                                                              media_type:
                                                                  __field1,
                                                              url: __field2,
                                                              remote_url:
                                                                  __field3,
                                                              preview_url:
                                                                  __field4,
                                                              text_url:
                                                                  __field5,
                                                              meta: __field6,
                                                              description:
                                                                  __field7,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<MediaType> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<Option<Meta>> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("type"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<MediaType>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("remote_url"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("preview_url"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("text_url"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("meta"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Meta>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("description"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("type")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("remote_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("preview_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("text_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("meta")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("description")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Attachment{id: __field0,
                                                              media_type:
                                                                  __field1,
                                                              url: __field2,
                                                              remote_url:
                                                                  __field3,
                                                              preview_url:
                                                                  __field4,
                                                              text_url:
                                                                  __field5,
                                                              meta: __field6,
                                                              description:
                                                                  __field7,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "type", "url", "remote_url",
                              "preview_url", "text_url", "meta",
                              "description"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Attachment",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Attachment>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Attachment { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Attachment {
            #[inline]
            fn eq(&self, other: &Attachment) -> bool {
                match *other {
                    Attachment {
                    id: ref __self_1_0,
                    media_type: ref __self_1_1,
                    url: ref __self_1_2,
                    remote_url: ref __self_1_3,
                    preview_url: ref __self_1_4,
                    text_url: ref __self_1_5,
                    meta: ref __self_1_6,
                    description: ref __self_1_7 } =>
                    match *self {
                        Attachment {
                        id: ref __self_0_0,
                        media_type: ref __self_0_1,
                        url: ref __self_0_2,
                        remote_url: ref __self_0_3,
                        preview_url: ref __self_0_4,
                        text_url: ref __self_0_5,
                        meta: ref __self_0_6,
                        description: ref __self_0_7 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Attachment) -> bool {
                match *other {
                    Attachment {
                    id: ref __self_1_0,
                    media_type: ref __self_1_1,
                    url: ref __self_1_2,
                    remote_url: ref __self_1_3,
                    preview_url: ref __self_1_4,
                    text_url: ref __self_1_5,
                    meta: ref __self_1_6,
                    description: ref __self_1_7 } =>
                    match *self {
                        Attachment {
                        id: ref __self_0_0,
                        media_type: ref __self_0_1,
                        url: ref __self_0_2,
                        remote_url: ref __self_0_3,
                        preview_url: ref __self_0_4,
                        text_url: ref __self_0_5,
                        meta: ref __self_0_6,
                        description: ref __self_0_7 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7),
                    },
                }
            }
        }
        /// Information about the attachment itself.
        pub struct Meta {
            /// Original version.
            pub original: Option<ImageDetails>,
            /// Smaller version.
            pub small: Option<ImageDetails>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Meta {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Meta { original: ref __self_0_0, small: ref __self_0_1 }
                    => {
                        let mut debug_trait_builder = f.debug_struct("Meta");
                        let _ =
                            debug_trait_builder.field("original",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("small",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Meta: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Meta {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "original" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "small" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"original" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"small" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Meta>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Meta;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Meta")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Option<ImageDetails>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Meta with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Option<ImageDetails>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Meta with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(Meta{original: __field0,
                                                        small: __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Option<ImageDetails>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Option<ImageDetails>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("original"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<ImageDetails>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("small"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<ImageDetails>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("original")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("small")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Meta{original: __field0,
                                                        small: __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["original", "small"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Meta",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Meta>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Meta {
            #[inline]
            fn clone(&self) -> Meta {
                match *self {
                    Meta { original: ref __self_0_0, small: ref __self_0_1 }
                    =>
                    Meta{original:
                             ::core::clone::Clone::clone(&(*__self_0_0)),
                         small: ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for Meta { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Meta {
            #[inline]
            fn eq(&self, other: &Meta) -> bool {
                match *other {
                    Meta { original: ref __self_1_0, small: ref __self_1_1 }
                    =>
                    match *self {
                        Meta { original: ref __self_0_0, small: ref __self_0_1
                        } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Meta) -> bool {
                match *other {
                    Meta { original: ref __self_1_0, small: ref __self_1_1 }
                    =>
                    match *self {
                        Meta { original: ref __self_0_0, small: ref __self_0_1
                        } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
        /// Dimensions of an attachement.
        pub struct ImageDetails {
            /// width of attachment.
            width: u64,
            /// height of attachment.
            height: u64,
            /// A string of `widthxheight`.
            size: Option<String>,
            /// The aspect ratio of the attachment.
            aspect: Option<f64>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for ImageDetails {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    ImageDetails {
                    width: ref __self_0_0,
                    height: ref __self_0_1,
                    size: ref __self_0_2,
                    aspect: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("ImageDetails");
                        let _ =
                            debug_trait_builder.field("width",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("height",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("size",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("aspect",
                                                      &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_ImageDetails: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for ImageDetails {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "width" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "height" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "size" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "aspect" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"width" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"height" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"size" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"aspect" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<ImageDetails>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = ImageDetails;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct ImageDetails")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct ImageDetails with 4 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct ImageDetails with 4 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct ImageDetails with 4 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<f64>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct ImageDetails with 4 elements"));
                                        }
                                    };
                                _serde::export::Ok(ImageDetails{width:
                                                                    __field0,
                                                                height:
                                                                    __field1,
                                                                size:
                                                                    __field2,
                                                                aspect:
                                                                    __field3,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<f64>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("width"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("height"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("size"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("aspect"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<f64>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("width")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("height")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("size")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("aspect")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(ImageDetails{width:
                                                                    __field0,
                                                                height:
                                                                    __field1,
                                                                size:
                                                                    __field2,
                                                                aspect:
                                                                    __field3,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["width", "height", "size", "aspect"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "ImageDetails",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<ImageDetails>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for ImageDetails {
            #[inline]
            fn clone(&self) -> ImageDetails {
                match *self {
                    ImageDetails {
                    width: ref __self_0_0,
                    height: ref __self_0_1,
                    size: ref __self_0_2,
                    aspect: ref __self_0_3 } =>
                    ImageDetails{width:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 height:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),
                                 size:
                                     ::core::clone::Clone::clone(&(*__self_0_2)),
                                 aspect:
                                     ::core::clone::Clone::clone(&(*__self_0_3)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for ImageDetails { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for ImageDetails {
            #[inline]
            fn eq(&self, other: &ImageDetails) -> bool {
                match *other {
                    ImageDetails {
                    width: ref __self_1_0,
                    height: ref __self_1_1,
                    size: ref __self_1_2,
                    aspect: ref __self_1_3 } =>
                    match *self {
                        ImageDetails {
                        width: ref __self_0_0,
                        height: ref __self_0_1,
                        size: ref __self_0_2,
                        aspect: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &ImageDetails) -> bool {
                match *other {
                    ImageDetails {
                    width: ref __self_1_0,
                    height: ref __self_1_1,
                    size: ref __self_1_2,
                    aspect: ref __self_1_3 } =>
                    match *self {
                        ImageDetails {
                        width: ref __self_0_0,
                        height: ref __self_0_1,
                        size: ref __self_0_2,
                        aspect: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
        /// The type of media attachment.
        pub enum MediaType {

            /// An image.
            #[serde(rename = "image")]
            Image,

            /// A video file.
            #[serde(rename = "video")]
            Video,

            /// A gifv format file.
            #[serde(rename = "gifv")]
            Gifv,

            /// Unknown format.
            #[serde(rename = "unknown")]
            Unknown,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for MediaType {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match (&*self,) {
                    (&MediaType::Image,) => {
                        let mut debug_trait_builder = f.debug_tuple("Image");
                        debug_trait_builder.finish()
                    }
                    (&MediaType::Video,) => {
                        let mut debug_trait_builder = f.debug_tuple("Video");
                        debug_trait_builder.finish()
                    }
                    (&MediaType::Gifv,) => {
                        let mut debug_trait_builder = f.debug_tuple("Gifv");
                        debug_trait_builder.finish()
                    }
                    (&MediaType::Unknown,) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("Unknown");
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_MediaType: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for MediaType {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "variant identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"variant index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "image" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "video" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "gifv" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "unknown" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"image" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"video" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"gifv" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"unknown" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        let __value =
                                            &_serde::export::from_utf8_lossy(__value);
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<MediaType>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = MediaType;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "enum MediaType")
                            }
                            fn visit_enum<__A>(self, __data: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::EnumAccess<'de> {
                                match match _serde::de::EnumAccess::variant(__data)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    (__Field::__field0, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(MediaType::Image)
                                    }
                                    (__Field::__field1, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(MediaType::Video)
                                    }
                                    (__Field::__field2, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(MediaType::Gifv)
                                    }
                                    (__Field::__field3, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(MediaType::Unknown)
                                    }
                                }
                            }
                        }
                        const VARIANTS: &'static [&'static str] =
                            &["image", "video", "gifv", "unknown"];
                        _serde::Deserializer::deserialize_enum(__deserializer,
                                                               "MediaType",
                                                               VARIANTS,
                                                               __Visitor{marker:
                                                                             _serde::export::PhantomData::<MediaType>,
                                                                         lifetime:
                                                                             _serde::export::PhantomData,})
                    }
                }
            };
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for MediaType {
            #[inline]
            fn clone(&self) -> MediaType { { *self } }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::marker::Copy for MediaType { }
        impl ::core::marker::StructuralPartialEq for MediaType { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for MediaType {
            #[inline]
            fn eq(&self, other: &MediaType) -> bool {
                {
                    let __self_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*self)
                        };
                    let __arg_1_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*other)
                        };
                    if true && __self_vi == __arg_1_vi {
                        match (&*self, &*other) { _ => true, }
                    } else { false }
                }
            }
        }
    }
    /// Data structures for ser/de of card-related resources
    pub mod card {
        //! Module representing cards of statuses.
        /// A card of a status.
        pub struct Card {
            /// The url associated with the card.
            pub url: String,
            /// The title of the card.
            pub title: String,
            /// The card description.
            pub description: String,
            /// The image associated with the card, if any.
            pub image: Option<String>,
            /// OEmbed data
            author_name: Option<String>,
            /// OEmbed data
            author_url: Option<String>,
            /// OEmbed data
            provider_name: Option<String>,
            /// OEmbed data
            provider_url: Option<String>,
            /// OEmbed data
            html: Option<String>,
            /// OEmbed data
            width: Option<u64>,
            /// OEmbed data
            height: Option<u64>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Card {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Card {
                    url: ref __self_0_0,
                    title: ref __self_0_1,
                    description: ref __self_0_2,
                    image: ref __self_0_3,
                    author_name: ref __self_0_4,
                    author_url: ref __self_0_5,
                    provider_name: ref __self_0_6,
                    provider_url: ref __self_0_7,
                    html: ref __self_0_8,
                    width: ref __self_0_9,
                    height: ref __self_0_10 } => {
                        let mut debug_trait_builder = f.debug_struct("Card");
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("title",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("description",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("image",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("author_name",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("author_url",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("provider_name",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("provider_url",
                                                      &&(*__self_0_7));
                        let _ =
                            debug_trait_builder.field("html",
                                                      &&(*__self_0_8));
                        let _ =
                            debug_trait_builder.field("width",
                                                      &&(*__self_0_9));
                        let _ =
                            debug_trait_builder.field("height",
                                                      &&(*__self_0_10));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Card {
            #[inline]
            fn clone(&self) -> Card {
                match *self {
                    Card {
                    url: ref __self_0_0,
                    title: ref __self_0_1,
                    description: ref __self_0_2,
                    image: ref __self_0_3,
                    author_name: ref __self_0_4,
                    author_url: ref __self_0_5,
                    provider_name: ref __self_0_6,
                    provider_url: ref __self_0_7,
                    html: ref __self_0_8,
                    width: ref __self_0_9,
                    height: ref __self_0_10 } =>
                    Card{url: ::core::clone::Clone::clone(&(*__self_0_0)),
                         title: ::core::clone::Clone::clone(&(*__self_0_1)),
                         description:
                             ::core::clone::Clone::clone(&(*__self_0_2)),
                         image: ::core::clone::Clone::clone(&(*__self_0_3)),
                         author_name:
                             ::core::clone::Clone::clone(&(*__self_0_4)),
                         author_url:
                             ::core::clone::Clone::clone(&(*__self_0_5)),
                         provider_name:
                             ::core::clone::Clone::clone(&(*__self_0_6)),
                         provider_url:
                             ::core::clone::Clone::clone(&(*__self_0_7)),
                         html: ::core::clone::Clone::clone(&(*__self_0_8)),
                         width: ::core::clone::Clone::clone(&(*__self_0_9)),
                         height:
                             ::core::clone::Clone::clone(&(*__self_0_10)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Card: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Card {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __field8,
                            __field9,
                            __field10,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    8u64 =>
                                    _serde::export::Ok(__Field::__field8),
                                    9u64 =>
                                    _serde::export::Ok(__Field::__field9),
                                    10u64 =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 11")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "url" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "description" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "image" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "author_name" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "author_url" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "provider_name" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "provider_url" =>
                                    _serde::export::Ok(__Field::__field7),
                                    "html" =>
                                    _serde::export::Ok(__Field::__field8),
                                    "width" =>
                                    _serde::export::Ok(__Field::__field9),
                                    "height" =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"description" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"image" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"author_name" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"author_url" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"provider_name" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"provider_url" =>
                                    _serde::export::Ok(__Field::__field7),
                                    b"html" =>
                                    _serde::export::Ok(__Field::__field8),
                                    b"width" =>
                                    _serde::export::Ok(__Field::__field9),
                                    b"height" =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Card>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Card;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Card")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field8 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field9 =
                                    match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                let __field10 =
                                    match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
                                                                                                         &"struct Card with 11 elements"));
                                        }
                                    };
                                _serde::export::Ok(Card{url: __field0,
                                                        title: __field1,
                                                        description: __field2,
                                                        image: __field3,
                                                        author_name: __field4,
                                                        author_url: __field5,
                                                        provider_name:
                                                            __field6,
                                                        provider_url:
                                                            __field7,
                                                        html: __field8,
                                                        width: __field9,
                                                        height: __field10,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field8:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field9:
                                        _serde::export::Option<Option<u64>> =
                                    _serde::export::None;
                                let mut __field10:
                                        _serde::export::Option<Option<u64>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("title"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("description"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("image"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("author_name"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("author_url"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("provider_name"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("provider_url"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field8 => {
                                            if _serde::export::Option::is_some(&__field8)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("html"));
                                            }
                                            __field8 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field9 => {
                                            if _serde::export::Option::is_some(&__field9)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("width"));
                                            }
                                            __field9 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field10 => {
                                            if _serde::export::Option::is_some(&__field10)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("height"));
                                            }
                                            __field10 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("title")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("description")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("image")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("author_name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("author_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("provider_name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("provider_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field8 =
                                    match __field8 {
                                        _serde::export::Some(__field8) =>
                                        __field8,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("html")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field9 =
                                    match __field9 {
                                        _serde::export::Some(__field9) =>
                                        __field9,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("width")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field10 =
                                    match __field10 {
                                        _serde::export::Some(__field10) =>
                                        __field10,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("height")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Card{url: __field0,
                                                        title: __field1,
                                                        description: __field2,
                                                        image: __field3,
                                                        author_name: __field4,
                                                        author_url: __field5,
                                                        provider_name:
                                                            __field6,
                                                        provider_url:
                                                            __field7,
                                                        html: __field8,
                                                        width: __field9,
                                                        height: __field10,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["url", "title", "description", "image",
                              "author_name", "author_url", "provider_name",
                              "provider_url", "html", "width", "height"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Card",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Card>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Card { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Card {
            #[inline]
            fn eq(&self, other: &Card) -> bool {
                match *other {
                    Card {
                    url: ref __self_1_0,
                    title: ref __self_1_1,
                    description: ref __self_1_2,
                    image: ref __self_1_3,
                    author_name: ref __self_1_4,
                    author_url: ref __self_1_5,
                    provider_name: ref __self_1_6,
                    provider_url: ref __self_1_7,
                    html: ref __self_1_8,
                    width: ref __self_1_9,
                    height: ref __self_1_10 } =>
                    match *self {
                        Card {
                        url: ref __self_0_0,
                        title: ref __self_0_1,
                        description: ref __self_0_2,
                        image: ref __self_0_3,
                        author_name: ref __self_0_4,
                        author_url: ref __self_0_5,
                        provider_name: ref __self_0_6,
                        provider_url: ref __self_0_7,
                        html: ref __self_0_8,
                        width: ref __self_0_9,
                        height: ref __self_0_10 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7) &&
                            (*__self_0_8) == (*__self_1_8) &&
                            (*__self_0_9) == (*__self_1_9) &&
                            (*__self_0_10) == (*__self_1_10),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Card) -> bool {
                match *other {
                    Card {
                    url: ref __self_1_0,
                    title: ref __self_1_1,
                    description: ref __self_1_2,
                    image: ref __self_1_3,
                    author_name: ref __self_1_4,
                    author_url: ref __self_1_5,
                    provider_name: ref __self_1_6,
                    provider_url: ref __self_1_7,
                    html: ref __self_1_8,
                    width: ref __self_1_9,
                    height: ref __self_1_10 } =>
                    match *self {
                        Card {
                        url: ref __self_0_0,
                        title: ref __self_0_1,
                        description: ref __self_0_2,
                        image: ref __self_0_3,
                        author_name: ref __self_0_4,
                        author_url: ref __self_0_5,
                        provider_name: ref __self_0_6,
                        provider_url: ref __self_0_7,
                        html: ref __self_0_8,
                        width: ref __self_0_9,
                        height: ref __self_0_10 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7) ||
                            (*__self_0_8) != (*__self_1_8) ||
                            (*__self_0_9) != (*__self_1_9) ||
                            (*__self_0_10) != (*__self_1_10),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of contetx-related resources
    pub mod context {
        //! A module about contexts of statuses.
        use super::status::Status;
        /// A context of a status returning a list of statuses it replied to and
        /// statuses replied to it.
        pub struct Context {
            /// Statuses that were replied to.
            pub ancestors: Vec<Status>,
            /// Statuses that replied to this status.
            pub descendants: Vec<Status>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Context {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Context {
                    ancestors: ref __self_0_0, descendants: ref __self_0_1 }
                    => {
                        let mut debug_trait_builder =
                            f.debug_struct("Context");
                        let _ =
                            debug_trait_builder.field("ancestors",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("descendants",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Context {
            #[inline]
            fn clone(&self) -> Context {
                match *self {
                    Context {
                    ancestors: ref __self_0_0, descendants: ref __self_0_1 }
                    =>
                    Context{ancestors:
                                ::core::clone::Clone::clone(&(*__self_0_0)),
                            descendants:
                                ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Context: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Context {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "ancestors" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "descendants" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"ancestors" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"descendants" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Context>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Context;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Context")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Context with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Context with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(Context{ancestors:
                                                               __field0,
                                                           descendants:
                                                               __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Vec<Status>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Vec<Status>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("ancestors"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("descendants"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("ancestors")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("descendants")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Context{ancestors:
                                                               __field0,
                                                           descendants:
                                                               __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["ancestors", "descendants"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Context",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Context>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Context { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Context {
            #[inline]
            fn eq(&self, other: &Context) -> bool {
                match *other {
                    Context {
                    ancestors: ref __self_1_0, descendants: ref __self_1_1 }
                    =>
                    match *self {
                        Context {
                        ancestors: ref __self_0_0, descendants: ref __self_0_1
                        } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Context) -> bool {
                match *other {
                    Context {
                    ancestors: ref __self_1_0, descendants: ref __self_1_1 }
                    =>
                    match *self {
                        Context {
                        ancestors: ref __self_0_0, descendants: ref __self_0_1
                        } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of streaming events
    pub mod event {
        use crate::entities::{notification::Notification, status::Status};
        /// Events that come from the /streaming/user API call
        pub enum Event {

            /// Update event
            Update(Status),

            /// Notification event
            Notification(Notification),

            /// Delete event
            Delete(String),

            /// FiltersChanged event
            FiltersChanged,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Event {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match (&*self,) {
                    (&Event::Update(ref __self_0),) => {
                        let mut debug_trait_builder = f.debug_tuple("Update");
                        let _ = debug_trait_builder.field(&&(*__self_0));
                        debug_trait_builder.finish()
                    }
                    (&Event::Notification(ref __self_0),) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("Notification");
                        let _ = debug_trait_builder.field(&&(*__self_0));
                        debug_trait_builder.finish()
                    }
                    (&Event::Delete(ref __self_0),) => {
                        let mut debug_trait_builder = f.debug_tuple("Delete");
                        let _ = debug_trait_builder.field(&&(*__self_0));
                        debug_trait_builder.finish()
                    }
                    (&Event::FiltersChanged,) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("FiltersChanged");
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Event {
            #[inline]
            fn clone(&self) -> Event {
                match (&*self,) {
                    (&Event::Update(ref __self_0),) =>
                    Event::Update(::core::clone::Clone::clone(&(*__self_0))),
                    (&Event::Notification(ref __self_0),) =>
                    Event::Notification(::core::clone::Clone::clone(&(*__self_0))),
                    (&Event::Delete(ref __self_0),) =>
                    Event::Delete(::core::clone::Clone::clone(&(*__self_0))),
                    (&Event::FiltersChanged,) => Event::FiltersChanged,
                }
            }
        }
    }
    /// Data structures for ser/de of filter-related resources
    pub mod filter {
        /// Represents a single Filter
        pub struct Filter {
            id: String,
            phrase: String,
            context: Vec<FilterContext>,
            expires_at: Option<String>,
            irreversible: bool,
            whole_word: bool,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Filter {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Filter {
                    id: ref __self_0_0,
                    phrase: ref __self_0_1,
                    context: ref __self_0_2,
                    expires_at: ref __self_0_3,
                    irreversible: ref __self_0_4,
                    whole_word: ref __self_0_5 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Filter");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("phrase",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("context",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("expires_at",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("irreversible",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("whole_word",
                                                      &&(*__self_0_5));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Filter {
            #[inline]
            fn clone(&self) -> Filter {
                match *self {
                    Filter {
                    id: ref __self_0_0,
                    phrase: ref __self_0_1,
                    context: ref __self_0_2,
                    expires_at: ref __self_0_3,
                    irreversible: ref __self_0_4,
                    whole_word: ref __self_0_5 } =>
                    Filter{id: ::core::clone::Clone::clone(&(*__self_0_0)),
                           phrase:
                               ::core::clone::Clone::clone(&(*__self_0_1)),
                           context:
                               ::core::clone::Clone::clone(&(*__self_0_2)),
                           expires_at:
                               ::core::clone::Clone::clone(&(*__self_0_3)),
                           irreversible:
                               ::core::clone::Clone::clone(&(*__self_0_4)),
                           whole_word:
                               ::core::clone::Clone::clone(&(*__self_0_5)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for Filter { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Filter {
            #[inline]
            fn eq(&self, other: &Filter) -> bool {
                match *other {
                    Filter {
                    id: ref __self_1_0,
                    phrase: ref __self_1_1,
                    context: ref __self_1_2,
                    expires_at: ref __self_1_3,
                    irreversible: ref __self_1_4,
                    whole_word: ref __self_1_5 } =>
                    match *self {
                        Filter {
                        id: ref __self_0_0,
                        phrase: ref __self_0_1,
                        context: ref __self_0_2,
                        expires_at: ref __self_0_3,
                        irreversible: ref __self_0_4,
                        whole_word: ref __self_0_5 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Filter) -> bool {
                match *other {
                    Filter {
                    id: ref __self_1_0,
                    phrase: ref __self_1_1,
                    context: ref __self_1_2,
                    expires_at: ref __self_1_3,
                    irreversible: ref __self_1_4,
                    whole_word: ref __self_1_5 } =>
                    match *self {
                        Filter {
                        id: ref __self_0_0,
                        phrase: ref __self_0_1,
                        context: ref __self_0_2,
                        expires_at: ref __self_0_3,
                        irreversible: ref __self_0_4,
                        whole_word: ref __self_0_5 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Filter: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for Filter {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Filter",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "id",
                                                                            &self.id)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "phrase",
                                                                            &self.phrase)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "context",
                                                                            &self.context)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "expires_at",
                                                                            &self.expires_at)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "irreversible",
                                                                            &self.irreversible)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "whole_word",
                                                                            &self.whole_word)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Filter: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Filter {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 6")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "phrase" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "context" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "expires_at" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "irreversible" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "whole_word" =>
                                    _serde::export::Ok(__Field::__field5),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"phrase" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"context" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"expires_at" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"irreversible" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"whole_word" =>
                                    _serde::export::Ok(__Field::__field5),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Filter>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Filter;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Filter")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<FilterContext>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Filter with 6 elements"));
                                        }
                                    };
                                _serde::export::Ok(Filter{id: __field0,
                                                          phrase: __field1,
                                                          context: __field2,
                                                          expires_at:
                                                              __field3,
                                                          irreversible:
                                                              __field4,
                                                          whole_word:
                                                              __field5,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Vec<FilterContext>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("phrase"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("context"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<FilterContext>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("expires_at"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("irreversible"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("whole_word"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("phrase")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("context")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("expires_at")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("irreversible")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("whole_word")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Filter{id: __field0,
                                                          phrase: __field1,
                                                          context: __field2,
                                                          expires_at:
                                                              __field3,
                                                          irreversible:
                                                              __field4,
                                                          whole_word:
                                                              __field5,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "phrase", "context", "expires_at",
                              "irreversible", "whole_word"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Filter",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Filter>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        /// Represents the various types of Filter contexts
        pub enum FilterContext {

            /// Represents the "home" context
            #[serde(rename = "home")]
            Home,

            /// Represents the "notifications" context
            #[serde(rename = "notifications")]
            Notifications,

            /// Represents the "public" context
            #[serde(rename = "public")]
            Public,

            /// Represents the "thread" context
            #[serde(rename = "thread")]
            Thread,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for FilterContext {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match (&*self,) {
                    (&FilterContext::Home,) => {
                        let mut debug_trait_builder = f.debug_tuple("Home");
                        debug_trait_builder.finish()
                    }
                    (&FilterContext::Notifications,) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("Notifications");
                        debug_trait_builder.finish()
                    }
                    (&FilterContext::Public,) => {
                        let mut debug_trait_builder = f.debug_tuple("Public");
                        debug_trait_builder.finish()
                    }
                    (&FilterContext::Thread,) => {
                        let mut debug_trait_builder = f.debug_tuple("Thread");
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for FilterContext {
            #[inline]
            fn clone(&self) -> FilterContext { { *self } }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::marker::Copy for FilterContext { }
        impl ::core::marker::StructuralPartialEq for FilterContext { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for FilterContext {
            #[inline]
            fn eq(&self, other: &FilterContext) -> bool {
                {
                    let __self_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*self)
                        };
                    let __arg_1_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*other)
                        };
                    if true && __self_vi == __arg_1_vi {
                        match (&*self, &*other) { _ => true, }
                    } else { false }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_FilterContext: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for FilterContext {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        match *self {
                            FilterContext::Home =>
                            _serde::Serializer::serialize_unit_variant(__serializer,
                                                                       "FilterContext",
                                                                       0u32,
                                                                       "home"),
                            FilterContext::Notifications =>
                            _serde::Serializer::serialize_unit_variant(__serializer,
                                                                       "FilterContext",
                                                                       1u32,
                                                                       "notifications"),
                            FilterContext::Public =>
                            _serde::Serializer::serialize_unit_variant(__serializer,
                                                                       "FilterContext",
                                                                       2u32,
                                                                       "public"),
                            FilterContext::Thread =>
                            _serde::Serializer::serialize_unit_variant(__serializer,
                                                                       "FilterContext",
                                                                       3u32,
                                                                       "thread"),
                        }
                    }
                }
            };
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_FilterContext: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for FilterContext {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "variant identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"variant index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "home" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "notifications" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "public" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "thread" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"home" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"notifications" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"public" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"thread" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        let __value =
                                            &_serde::export::from_utf8_lossy(__value);
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<FilterContext>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = FilterContext;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "enum FilterContext")
                            }
                            fn visit_enum<__A>(self, __data: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::EnumAccess<'de> {
                                match match _serde::de::EnumAccess::variant(__data)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    (__Field::__field0, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(FilterContext::Home)
                                    }
                                    (__Field::__field1, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(FilterContext::Notifications)
                                    }
                                    (__Field::__field2, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(FilterContext::Public)
                                    }
                                    (__Field::__field3, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(FilterContext::Thread)
                                    }
                                }
                            }
                        }
                        const VARIANTS: &'static [&'static str] =
                            &["home", "notifications", "public", "thread"];
                        _serde::Deserializer::deserialize_enum(__deserializer,
                                                               "FilterContext",
                                                               VARIANTS,
                                                               __Visitor{marker:
                                                                             _serde::export::PhantomData::<FilterContext>,
                                                                         lifetime:
                                                                             _serde::export::PhantomData,})
                    }
                }
            };
    }
    /// Data structures for ser/de of instance-related resources
    pub mod instance {
        //! Module containing everything related to an instance.
        use super::account::Account;
        /// A struct containing info of an instance.
        pub struct Instance {
            /// URI of the current instance
            pub uri: String,
            /// The instance's title.
            pub title: String,
            /// A description for the instance.
            pub description: String,
            /// An email address which can be used to contact the
            /// instance administrator.
            pub email: String,
            /// The Mastodon version used by instance.
            pub version: String,
            /// Urls to the streaming api.
            pub urls: Option<StreamingApi>,
            /// Stats about the instance.
            pub stats: Option<Stats>,
            /// Thumbnail of the server image.
            pub thumbnail: Option<String>,
            /// List of languages used on the server.
            pub languages: Option<Vec<String>>,
            /// Contact account for the server.
            pub contact_account: Option<Account>,
            /// The maximum number of characters allowed in a status
            pub max_toot_chars: Option<u32>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Instance {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Instance {
                    uri: ref __self_0_0,
                    title: ref __self_0_1,
                    description: ref __self_0_2,
                    email: ref __self_0_3,
                    version: ref __self_0_4,
                    urls: ref __self_0_5,
                    stats: ref __self_0_6,
                    thumbnail: ref __self_0_7,
                    languages: ref __self_0_8,
                    contact_account: ref __self_0_9,
                    max_toot_chars: ref __self_0_10 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Instance");
                        let _ =
                            debug_trait_builder.field("uri", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("title",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("description",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("email",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("version",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("urls",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("stats",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("thumbnail",
                                                      &&(*__self_0_7));
                        let _ =
                            debug_trait_builder.field("languages",
                                                      &&(*__self_0_8));
                        let _ =
                            debug_trait_builder.field("contact_account",
                                                      &&(*__self_0_9));
                        let _ =
                            debug_trait_builder.field("max_toot_chars",
                                                      &&(*__self_0_10));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Instance {
            #[inline]
            fn clone(&self) -> Instance {
                match *self {
                    Instance {
                    uri: ref __self_0_0,
                    title: ref __self_0_1,
                    description: ref __self_0_2,
                    email: ref __self_0_3,
                    version: ref __self_0_4,
                    urls: ref __self_0_5,
                    stats: ref __self_0_6,
                    thumbnail: ref __self_0_7,
                    languages: ref __self_0_8,
                    contact_account: ref __self_0_9,
                    max_toot_chars: ref __self_0_10 } =>
                    Instance{uri: ::core::clone::Clone::clone(&(*__self_0_0)),
                             title:
                                 ::core::clone::Clone::clone(&(*__self_0_1)),
                             description:
                                 ::core::clone::Clone::clone(&(*__self_0_2)),
                             email:
                                 ::core::clone::Clone::clone(&(*__self_0_3)),
                             version:
                                 ::core::clone::Clone::clone(&(*__self_0_4)),
                             urls:
                                 ::core::clone::Clone::clone(&(*__self_0_5)),
                             stats:
                                 ::core::clone::Clone::clone(&(*__self_0_6)),
                             thumbnail:
                                 ::core::clone::Clone::clone(&(*__self_0_7)),
                             languages:
                                 ::core::clone::Clone::clone(&(*__self_0_8)),
                             contact_account:
                                 ::core::clone::Clone::clone(&(*__self_0_9)),
                             max_toot_chars:
                                 ::core::clone::Clone::clone(&(*__self_0_10)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Instance: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Instance {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __field8,
                            __field9,
                            __field10,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    8u64 =>
                                    _serde::export::Ok(__Field::__field8),
                                    9u64 =>
                                    _serde::export::Ok(__Field::__field9),
                                    10u64 =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 11")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "uri" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "description" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "email" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "version" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "urls" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "stats" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "thumbnail" =>
                                    _serde::export::Ok(__Field::__field7),
                                    "languages" =>
                                    _serde::export::Ok(__Field::__field8),
                                    "contact_account" =>
                                    _serde::export::Ok(__Field::__field9),
                                    "max_toot_chars" =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"uri" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"description" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"email" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"version" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"urls" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"stats" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"thumbnail" =>
                                    _serde::export::Ok(__Field::__field7),
                                    b"languages" =>
                                    _serde::export::Ok(__Field::__field8),
                                    b"contact_account" =>
                                    _serde::export::Ok(__Field::__field9),
                                    b"max_toot_chars" =>
                                    _serde::export::Ok(__Field::__field10),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Instance>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Instance;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Instance")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<Option<StreamingApi>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Stats>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field8 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Vec<String>>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field9 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Account>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                let __field10 =
                                    match match _serde::de::SeqAccess::next_element::<Option<u32>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
                                                                                                         &"struct Instance with 11 elements"));
                                        }
                                    };
                                _serde::export::Ok(Instance{uri: __field0,
                                                            title: __field1,
                                                            description:
                                                                __field2,
                                                            email: __field3,
                                                            version: __field4,
                                                            urls: __field5,
                                                            stats: __field6,
                                                            thumbnail:
                                                                __field7,
                                                            languages:
                                                                __field8,
                                                            contact_account:
                                                                __field9,
                                                            max_toot_chars:
                                                                __field10,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<Option<StreamingApi>> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<Option<Stats>> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field8:
                                        _serde::export::Option<Option<Vec<String>>> =
                                    _serde::export::None;
                                let mut __field9:
                                        _serde::export::Option<Option<Account>> =
                                    _serde::export::None;
                                let mut __field10:
                                        _serde::export::Option<Option<u32>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("uri"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("title"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("description"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("email"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("version"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("urls"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<StreamingApi>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("stats"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Stats>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("thumbnail"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field8 => {
                                            if _serde::export::Option::is_some(&__field8)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("languages"));
                                            }
                                            __field8 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Vec<String>>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field9 => {
                                            if _serde::export::Option::is_some(&__field9)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("contact_account"));
                                            }
                                            __field9 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Account>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field10 => {
                                            if _serde::export::Option::is_some(&__field10)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("max_toot_chars"));
                                            }
                                            __field10 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u32>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("uri")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("title")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("description")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("email")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("version")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("urls")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("stats")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("thumbnail")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field8 =
                                    match __field8 {
                                        _serde::export::Some(__field8) =>
                                        __field8,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("languages")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field9 =
                                    match __field9 {
                                        _serde::export::Some(__field9) =>
                                        __field9,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("contact_account")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field10 =
                                    match __field10 {
                                        _serde::export::Some(__field10) =>
                                        __field10,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("max_toot_chars")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Instance{uri: __field0,
                                                            title: __field1,
                                                            description:
                                                                __field2,
                                                            email: __field3,
                                                            version: __field4,
                                                            urls: __field5,
                                                            stats: __field6,
                                                            thumbnail:
                                                                __field7,
                                                            languages:
                                                                __field8,
                                                            contact_account:
                                                                __field9,
                                                            max_toot_chars:
                                                                __field10,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["uri", "title", "description", "email",
                              "version", "urls", "stats", "thumbnail",
                              "languages", "contact_account",
                              "max_toot_chars"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Instance",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Instance>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Instance { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Instance {
            #[inline]
            fn eq(&self, other: &Instance) -> bool {
                match *other {
                    Instance {
                    uri: ref __self_1_0,
                    title: ref __self_1_1,
                    description: ref __self_1_2,
                    email: ref __self_1_3,
                    version: ref __self_1_4,
                    urls: ref __self_1_5,
                    stats: ref __self_1_6,
                    thumbnail: ref __self_1_7,
                    languages: ref __self_1_8,
                    contact_account: ref __self_1_9,
                    max_toot_chars: ref __self_1_10 } =>
                    match *self {
                        Instance {
                        uri: ref __self_0_0,
                        title: ref __self_0_1,
                        description: ref __self_0_2,
                        email: ref __self_0_3,
                        version: ref __self_0_4,
                        urls: ref __self_0_5,
                        stats: ref __self_0_6,
                        thumbnail: ref __self_0_7,
                        languages: ref __self_0_8,
                        contact_account: ref __self_0_9,
                        max_toot_chars: ref __self_0_10 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7) &&
                            (*__self_0_8) == (*__self_1_8) &&
                            (*__self_0_9) == (*__self_1_9) &&
                            (*__self_0_10) == (*__self_1_10),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Instance) -> bool {
                match *other {
                    Instance {
                    uri: ref __self_1_0,
                    title: ref __self_1_1,
                    description: ref __self_1_2,
                    email: ref __self_1_3,
                    version: ref __self_1_4,
                    urls: ref __self_1_5,
                    stats: ref __self_1_6,
                    thumbnail: ref __self_1_7,
                    languages: ref __self_1_8,
                    contact_account: ref __self_1_9,
                    max_toot_chars: ref __self_1_10 } =>
                    match *self {
                        Instance {
                        uri: ref __self_0_0,
                        title: ref __self_0_1,
                        description: ref __self_0_2,
                        email: ref __self_0_3,
                        version: ref __self_0_4,
                        urls: ref __self_0_5,
                        stats: ref __self_0_6,
                        thumbnail: ref __self_0_7,
                        languages: ref __self_0_8,
                        contact_account: ref __self_0_9,
                        max_toot_chars: ref __self_0_10 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7) ||
                            (*__self_0_8) != (*__self_1_8) ||
                            (*__self_0_9) != (*__self_1_9) ||
                            (*__self_0_10) != (*__self_1_10),
                    },
                }
            }
        }
        /// Object containing url for streaming api.
        pub struct StreamingApi {
            /// Url for streaming API, typically a `wss://` url.
            pub streaming_api: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for StreamingApi {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    StreamingApi { streaming_api: ref __self_0_0 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("StreamingApi");
                        let _ =
                            debug_trait_builder.field("streaming_api",
                                                      &&(*__self_0_0));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for StreamingApi {
            #[inline]
            fn clone(&self) -> StreamingApi {
                match *self {
                    StreamingApi { streaming_api: ref __self_0_0 } =>
                    StreamingApi{streaming_api:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_StreamingApi: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for StreamingApi {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 1")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "streaming_api" =>
                                    _serde::export::Ok(__Field::__field0),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"streaming_api" =>
                                    _serde::export::Ok(__Field::__field0),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<StreamingApi>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = StreamingApi;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct StreamingApi")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct StreamingApi with 1 element"));
                                        }
                                    };
                                _serde::export::Ok(StreamingApi{streaming_api:
                                                                    __field0,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("streaming_api"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("streaming_api")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(StreamingApi{streaming_api:
                                                                    __field0,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["streaming_api"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "StreamingApi",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<StreamingApi>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for StreamingApi { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for StreamingApi {
            #[inline]
            fn eq(&self, other: &StreamingApi) -> bool {
                match *other {
                    StreamingApi { streaming_api: ref __self_1_0 } =>
                    match *self {
                        StreamingApi { streaming_api: ref __self_0_0 } =>
                        (*__self_0_0) == (*__self_1_0),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &StreamingApi) -> bool {
                match *other {
                    StreamingApi { streaming_api: ref __self_1_0 } =>
                    match *self {
                        StreamingApi { streaming_api: ref __self_0_0 } =>
                        (*__self_0_0) != (*__self_1_0),
                    },
                }
            }
        }
        /// Statistics about the Mastodon instance.
        pub struct Stats {
            user_count: u64,
            status_count: u64,
            domain_count: u64,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Stats {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Stats {
                    user_count: ref __self_0_0,
                    status_count: ref __self_0_1,
                    domain_count: ref __self_0_2 } => {
                        let mut debug_trait_builder = f.debug_struct("Stats");
                        let _ =
                            debug_trait_builder.field("user_count",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("status_count",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("domain_count",
                                                      &&(*__self_0_2));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Stats {
            #[inline]
            fn clone(&self) -> Stats {
                {
                    let _: ::core::clone::AssertParamIsClone<u64>;
                    let _: ::core::clone::AssertParamIsClone<u64>;
                    let _: ::core::clone::AssertParamIsClone<u64>;
                    *self
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::marker::Copy for Stats { }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Stats: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Stats {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 3")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "user_count" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "status_count" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "domain_count" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"user_count" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"status_count" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"domain_count" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Stats>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Stats;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Stats")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Stats with 3 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Stats with 3 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Stats with 3 elements"));
                                        }
                                    };
                                _serde::export::Ok(Stats{user_count: __field0,
                                                         status_count:
                                                             __field1,
                                                         domain_count:
                                                             __field2,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("user_count"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("status_count"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("domain_count"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("user_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("status_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("domain_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Stats{user_count: __field0,
                                                         status_count:
                                                             __field1,
                                                         domain_count:
                                                             __field2,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["user_count", "status_count", "domain_count"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Stats",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Stats>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Stats { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Stats {
            #[inline]
            fn eq(&self, other: &Stats) -> bool {
                match *other {
                    Stats {
                    user_count: ref __self_1_0,
                    status_count: ref __self_1_1,
                    domain_count: ref __self_1_2 } =>
                    match *self {
                        Stats {
                        user_count: ref __self_0_0,
                        status_count: ref __self_0_1,
                        domain_count: ref __self_0_2 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Stats) -> bool {
                match *other {
                    Stats {
                    user_count: ref __self_1_0,
                    status_count: ref __self_1_1,
                    domain_count: ref __self_1_2 } =>
                    match *self {
                        Stats {
                        user_count: ref __self_0_0,
                        status_count: ref __self_0_1,
                        domain_count: ref __self_0_2 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of list-related resources
    pub mod list {
        /// Used for ser/de of list resources
        pub struct List {
            id: String,
            title: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for List {
            #[inline]
            fn clone(&self) -> List {
                match *self {
                    List { id: ref __self_0_0, title: ref __self_0_1 } =>
                    List{id: ::core::clone::Clone::clone(&(*__self_0_0)),
                         title: ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for List {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    List { id: ref __self_0_0, title: ref __self_0_1 } => {
                        let mut debug_trait_builder = f.debug_struct("List");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("title",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_List: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for List {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"title" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<List>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = List;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct List")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct List with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct List with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(List{id: __field0,
                                                        title: __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("title"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("title")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(List{id: __field0,
                                                        title: __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "title"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "List",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<List>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for List { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for List {
            #[inline]
            fn eq(&self, other: &List) -> bool {
                match *other {
                    List { id: ref __self_1_0, title: ref __self_1_1 } =>
                    match *self {
                        List { id: ref __self_0_0, title: ref __self_0_1 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &List) -> bool {
                match *other {
                    List { id: ref __self_1_0, title: ref __self_1_1 } =>
                    match *self {
                        List { id: ref __self_0_0, title: ref __self_0_1 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of mention-related resources
    pub mod mention {
        /// Represents a `mention` used in a status
        pub struct Mention {
            /// URL of user's profile (can be remote)
            pub url: String,
            /// The username of the account
            pub username: String,
            /// Equals username for local users, includes `@domain` for remote ones
            pub acct: String,
            /// Account ID
            pub id: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Mention {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Mention {
                    url: ref __self_0_0,
                    username: ref __self_0_1,
                    acct: ref __self_0_2,
                    id: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Mention");
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("username",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("acct",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Mention {
            #[inline]
            fn clone(&self) -> Mention {
                match *self {
                    Mention {
                    url: ref __self_0_0,
                    username: ref __self_0_1,
                    acct: ref __self_0_2,
                    id: ref __self_0_3 } =>
                    Mention{url: ::core::clone::Clone::clone(&(*__self_0_0)),
                            username:
                                ::core::clone::Clone::clone(&(*__self_0_1)),
                            acct: ::core::clone::Clone::clone(&(*__self_0_2)),
                            id: ::core::clone::Clone::clone(&(*__self_0_3)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for Mention { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Mention {
            #[inline]
            fn eq(&self, other: &Mention) -> bool {
                match *other {
                    Mention {
                    url: ref __self_1_0,
                    username: ref __self_1_1,
                    acct: ref __self_1_2,
                    id: ref __self_1_3 } =>
                    match *self {
                        Mention {
                        url: ref __self_0_0,
                        username: ref __self_0_1,
                        acct: ref __self_0_2,
                        id: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Mention) -> bool {
                match *other {
                    Mention {
                    url: ref __self_1_0,
                    username: ref __self_1_1,
                    acct: ref __self_1_2,
                    id: ref __self_1_3 } =>
                    match *self {
                        Mention {
                        url: ref __self_0_0,
                        username: ref __self_0_1,
                        acct: ref __self_0_2,
                        id: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of notification-related resources
    pub mod notification {
        //! Module containing all info about notifications.
        use super::{account::Account, status::Status};
        use chrono::prelude::*;
        /// A struct containing info about a notification.
        pub struct Notification {
            /// The notification ID.
            pub id: String,
            /// The type of notification.
            #[serde(rename = "type")]
            pub notification_type: NotificationType,
            /// The time the notification was created.
            pub created_at: DateTime<Utc>,
            /// The Account sending the notification to the user.
            pub account: Account,
            /// The Status associated with the notification, if applicable.
            pub status: Option<Status>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Notification {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Notification {
                    id: ref __self_0_0,
                    notification_type: ref __self_0_1,
                    created_at: ref __self_0_2,
                    account: ref __self_0_3,
                    status: ref __self_0_4 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Notification");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("notification_type",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("created_at",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("account",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("status",
                                                      &&(*__self_0_4));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Notification {
            #[inline]
            fn clone(&self) -> Notification {
                match *self {
                    Notification {
                    id: ref __self_0_0,
                    notification_type: ref __self_0_1,
                    created_at: ref __self_0_2,
                    account: ref __self_0_3,
                    status: ref __self_0_4 } =>
                    Notification{id:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 notification_type:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),
                                 created_at:
                                     ::core::clone::Clone::clone(&(*__self_0_2)),
                                 account:
                                     ::core::clone::Clone::clone(&(*__self_0_3)),
                                 status:
                                     ::core::clone::Clone::clone(&(*__self_0_4)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Notification: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Notification {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 5")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "type" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "created_at" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "account" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "status" =>
                                    _serde::export::Ok(__Field::__field4),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"type" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"created_at" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"account" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"status" =>
                                    _serde::export::Ok(__Field::__field4),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Notification>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Notification;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Notification")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Notification with 5 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<NotificationType>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Notification with 5 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Notification with 5 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Account>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Notification with 5 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Status>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Notification with 5 elements"));
                                        }
                                    };
                                _serde::export::Ok(Notification{id: __field0,
                                                                notification_type:
                                                                    __field1,
                                                                created_at:
                                                                    __field2,
                                                                account:
                                                                    __field3,
                                                                status:
                                                                    __field4,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<NotificationType> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<DateTime<Utc>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Account> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<Option<Status>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("type"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<NotificationType>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("created_at"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("account"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Account>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("status"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Status>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("type")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("created_at")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("account")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("status")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Notification{id: __field0,
                                                                notification_type:
                                                                    __field1,
                                                                created_at:
                                                                    __field2,
                                                                account:
                                                                    __field3,
                                                                status:
                                                                    __field4,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "type", "created_at", "account",
                              "status"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Notification",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Notification>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Notification { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Notification {
            #[inline]
            fn eq(&self, other: &Notification) -> bool {
                match *other {
                    Notification {
                    id: ref __self_1_0,
                    notification_type: ref __self_1_1,
                    created_at: ref __self_1_2,
                    account: ref __self_1_3,
                    status: ref __self_1_4 } =>
                    match *self {
                        Notification {
                        id: ref __self_0_0,
                        notification_type: ref __self_0_1,
                        created_at: ref __self_0_2,
                        account: ref __self_0_3,
                        status: ref __self_0_4 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Notification) -> bool {
                match *other {
                    Notification {
                    id: ref __self_1_0,
                    notification_type: ref __self_1_1,
                    created_at: ref __self_1_2,
                    account: ref __self_1_3,
                    status: ref __self_1_4 } =>
                    match *self {
                        Notification {
                        id: ref __self_0_0,
                        notification_type: ref __self_0_1,
                        created_at: ref __self_0_2,
                        account: ref __self_0_3,
                        status: ref __self_0_4 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4),
                    },
                }
            }
        }
        /// The type of notification.
        #[serde(rename_all = "lowercase")]
        pub enum NotificationType {

            /// Someone mentioned the application client in another status.
            Mention,

            /// Someone reblogged one of the application client's statuses.
            Reblog,

            /// Someone favourited one of the application client's statuses.
            Favourite,

            /// Someone followed the application client.
            Follow,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for NotificationType {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match (&*self,) {
                    (&NotificationType::Mention,) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("Mention");
                        debug_trait_builder.finish()
                    }
                    (&NotificationType::Reblog,) => {
                        let mut debug_trait_builder = f.debug_tuple("Reblog");
                        debug_trait_builder.finish()
                    }
                    (&NotificationType::Favourite,) => {
                        let mut debug_trait_builder =
                            f.debug_tuple("Favourite");
                        debug_trait_builder.finish()
                    }
                    (&NotificationType::Follow,) => {
                        let mut debug_trait_builder = f.debug_tuple("Follow");
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for NotificationType {
            #[inline]
            fn clone(&self) -> NotificationType { { *self } }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::marker::Copy for NotificationType { }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_NotificationType: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for NotificationType {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "variant identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"variant index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "mention" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "reblog" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "favourite" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "follow" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"mention" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"reblog" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"favourite" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"follow" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        let __value =
                                            &_serde::export::from_utf8_lossy(__value);
                                        _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                               VARIANTS))
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<NotificationType>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = NotificationType;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "enum NotificationType")
                            }
                            fn visit_enum<__A>(self, __data: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::EnumAccess<'de> {
                                match match _serde::de::EnumAccess::variant(__data)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    (__Field::__field0, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(NotificationType::Mention)
                                    }
                                    (__Field::__field1, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(NotificationType::Reblog)
                                    }
                                    (__Field::__field2, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(NotificationType::Favourite)
                                    }
                                    (__Field::__field3, __variant) => {
                                        match _serde::de::VariantAccess::unit_variant(__variant)
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        };
                                        _serde::export::Ok(NotificationType::Follow)
                                    }
                                }
                            }
                        }
                        const VARIANTS: &'static [&'static str] =
                            &["mention", "reblog", "favourite", "follow"];
                        _serde::Deserializer::deserialize_enum(__deserializer,
                                                               "NotificationType",
                                                               VARIANTS,
                                                               __Visitor{marker:
                                                                             _serde::export::PhantomData::<NotificationType>,
                                                                         lifetime:
                                                                             _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for NotificationType { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for NotificationType {
            #[inline]
            fn eq(&self, other: &NotificationType) -> bool {
                {
                    let __self_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*self)
                        };
                    let __arg_1_vi =
                        unsafe {
                            ::core::intrinsics::discriminant_value(&*other)
                        };
                    if true && __self_vi == __arg_1_vi {
                        match (&*self, &*other) { _ => true, }
                    } else { false }
                }
            }
        }
    }
    /// Data structures for ser/de of push-subscription-related resources
    pub mod push {
        /// Represents the `alerts` key of the `Subscription` object
        pub struct Alerts {
            /// flag for follow alerts
            pub follow: Option<bool>,
            /// flag for favourite alerts
            pub favourite: Option<bool>,
            /// flag for reblog alerts
            pub reblog: Option<bool>,
            /// flag for mention alerts
            pub mention: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Alerts {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Alerts {
                    follow: ref __self_0_0,
                    favourite: ref __self_0_1,
                    reblog: ref __self_0_2,
                    mention: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Alerts");
                        let _ =
                            debug_trait_builder.field("follow",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("favourite",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("reblog",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("mention",
                                                      &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Alerts {
            #[inline]
            fn clone(&self) -> Alerts {
                {
                    let _: ::core::clone::AssertParamIsClone<Option<bool>>;
                    let _: ::core::clone::AssertParamIsClone<Option<bool>>;
                    let _: ::core::clone::AssertParamIsClone<Option<bool>>;
                    let _: ::core::clone::AssertParamIsClone<Option<bool>>;
                    *self
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::marker::Copy for Alerts { }
        impl ::core::marker::StructuralPartialEq for Alerts { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Alerts {
            #[inline]
            fn eq(&self, other: &Alerts) -> bool {
                match *other {
                    Alerts {
                    follow: ref __self_1_0,
                    favourite: ref __self_1_1,
                    reblog: ref __self_1_2,
                    mention: ref __self_1_3 } =>
                    match *self {
                        Alerts {
                        follow: ref __self_0_0,
                        favourite: ref __self_0_1,
                        reblog: ref __self_0_2,
                        mention: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Alerts) -> bool {
                match *other {
                    Alerts {
                    follow: ref __self_1_0,
                    favourite: ref __self_1_1,
                    reblog: ref __self_1_2,
                    mention: ref __self_1_3 } =>
                    match *self {
                        Alerts {
                        follow: ref __self_0_0,
                        favourite: ref __self_0_1,
                        reblog: ref __self_0_2,
                        mention: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Alerts: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for Alerts {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Alerts",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "follow",
                                                                            &self.follow)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "favourite",
                                                                            &self.favourite)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "reblog",
                                                                            &self.reblog)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "mention",
                                                                            &self.mention)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Alerts: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Alerts {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "follow" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "favourite" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "reblog" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "mention" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"follow" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"favourite" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"reblog" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"mention" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Alerts>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Alerts;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Alerts")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Alerts with 4 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Alerts with 4 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Alerts with 4 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Alerts with 4 elements"));
                                        }
                                    };
                                _serde::export::Ok(Alerts{follow: __field0,
                                                          favourite: __field1,
                                                          reblog: __field2,
                                                          mention: __field3,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("follow"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("favourite"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("reblog"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("mention"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("follow")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("favourite")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("reblog")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("mention")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Alerts{follow: __field0,
                                                          favourite: __field1,
                                                          reblog: __field2,
                                                          mention: __field3,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["follow", "favourite", "reblog", "mention"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Alerts",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Alerts>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for Alerts {
            #[inline]
            fn default() -> Alerts {
                Alerts{follow: ::core::default::Default::default(),
                       favourite: ::core::default::Default::default(),
                       reblog: ::core::default::Default::default(),
                       mention: ::core::default::Default::default(),}
            }
        }
        /// Represents a new Push subscription
        pub struct Subscription {
            /// The `id` of the subscription
            pub id: String,
            /// The endpoint of the subscription
            pub endpoint: String,
            /// The server key of the subscription
            pub server_key: String,
            /// The status of the alerts for this subscription
            pub alerts: Option<Alerts>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Subscription {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Subscription {
                    id: ref __self_0_0,
                    endpoint: ref __self_0_1,
                    server_key: ref __self_0_2,
                    alerts: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Subscription");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("endpoint",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("server_key",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("alerts",
                                                      &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Subscription {
            #[inline]
            fn clone(&self) -> Subscription {
                match *self {
                    Subscription {
                    id: ref __self_0_0,
                    endpoint: ref __self_0_1,
                    server_key: ref __self_0_2,
                    alerts: ref __self_0_3 } =>
                    Subscription{id:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 endpoint:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),
                                 server_key:
                                     ::core::clone::Clone::clone(&(*__self_0_2)),
                                 alerts:
                                     ::core::clone::Clone::clone(&(*__self_0_3)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for Subscription { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Subscription {
            #[inline]
            fn eq(&self, other: &Subscription) -> bool {
                match *other {
                    Subscription {
                    id: ref __self_1_0,
                    endpoint: ref __self_1_1,
                    server_key: ref __self_1_2,
                    alerts: ref __self_1_3 } =>
                    match *self {
                        Subscription {
                        id: ref __self_0_0,
                        endpoint: ref __self_0_1,
                        server_key: ref __self_0_2,
                        alerts: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Subscription) -> bool {
                match *other {
                    Subscription {
                    id: ref __self_1_0,
                    endpoint: ref __self_1_1,
                    server_key: ref __self_1_2,
                    alerts: ref __self_1_3 } =>
                    match *self {
                        Subscription {
                        id: ref __self_0_0,
                        endpoint: ref __self_0_1,
                        server_key: ref __self_0_2,
                        alerts: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Subscription: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Subscription {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "endpoint" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "server_key" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "alerts" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"endpoint" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"server_key" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"alerts" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Subscription>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Subscription;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Subscription")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Subscription with 4 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Subscription with 4 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Subscription with 4 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Alerts>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Subscription with 4 elements"));
                                        }
                                    };
                                _serde::export::Ok(Subscription{id: __field0,
                                                                endpoint:
                                                                    __field1,
                                                                server_key:
                                                                    __field2,
                                                                alerts:
                                                                    __field3,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Option<Alerts>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("endpoint"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("server_key"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("alerts"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Alerts>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("endpoint")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("server_key")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("alerts")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Subscription{id: __field0,
                                                                endpoint:
                                                                    __field1,
                                                                server_key:
                                                                    __field2,
                                                                alerts:
                                                                    __field3,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "endpoint", "server_key", "alerts"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Subscription",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Subscription>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        pub(crate) mod add_subscription {
            use super::Alerts;
            pub(crate) struct Form {
                pub(crate) subscription: Subscription,
                pub(crate) data: Option<Data>,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Form {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Form {
                        subscription: ref __self_0_0, data: ref __self_0_1 }
                        => {
                            let mut debug_trait_builder =
                                f.debug_struct("Form");
                            let _ =
                                debug_trait_builder.field("subscription",
                                                          &&(*__self_0_0));
                            let _ =
                                debug_trait_builder.field("data",
                                                          &&(*__self_0_1));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Form {
                #[inline]
                fn clone(&self) -> Form {
                    match *self {
                        Form {
                        subscription: ref __self_0_0, data: ref __self_0_1 }
                        =>
                        Form{subscription:
                                 ::core::clone::Clone::clone(&(*__self_0_0)),
                             data:
                                 ::core::clone::Clone::clone(&(*__self_0_1)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Form { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Form {
                #[inline]
                fn eq(&self, other: &Form) -> bool {
                    match *other {
                        Form {
                        subscription: ref __self_1_0, data: ref __self_1_1 }
                        =>
                        match *self {
                            Form {
                            subscription: ref __self_0_0, data: ref __self_0_1
                            } =>
                            (*__self_0_0) == (*__self_1_0) &&
                                (*__self_0_1) == (*__self_1_1),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Form) -> bool {
                    match *other {
                        Form {
                        subscription: ref __self_1_0, data: ref __self_1_1 }
                        =>
                        match *self {
                            Form {
                            subscription: ref __self_0_0, data: ref __self_0_1
                            } =>
                            (*__self_0_0) != (*__self_1_0) ||
                                (*__self_0_1) != (*__self_1_1),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Form: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Form {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Form",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "subscription",
                                                                                &self.subscription)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "data",
                                                                                &self.data)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Form {
                #[inline]
                fn default() -> Form {
                    Form{subscription: ::core::default::Default::default(),
                         data: ::core::default::Default::default(),}
                }
            }
            pub(crate) struct Subscription {
                pub(crate) endpoint: String,
                pub(crate) keys: Keys,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Subscription {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Subscription {
                        endpoint: ref __self_0_0, keys: ref __self_0_1 } => {
                            let mut debug_trait_builder =
                                f.debug_struct("Subscription");
                            let _ =
                                debug_trait_builder.field("endpoint",
                                                          &&(*__self_0_0));
                            let _ =
                                debug_trait_builder.field("keys",
                                                          &&(*__self_0_1));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Subscription {
                #[inline]
                fn clone(&self) -> Subscription {
                    match *self {
                        Subscription {
                        endpoint: ref __self_0_0, keys: ref __self_0_1 } =>
                        Subscription{endpoint:
                                         ::core::clone::Clone::clone(&(*__self_0_0)),
                                     keys:
                                         ::core::clone::Clone::clone(&(*__self_0_1)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Subscription { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Subscription {
                #[inline]
                fn eq(&self, other: &Subscription) -> bool {
                    match *other {
                        Subscription {
                        endpoint: ref __self_1_0, keys: ref __self_1_1 } =>
                        match *self {
                            Subscription {
                            endpoint: ref __self_0_0, keys: ref __self_0_1 }
                            =>
                            (*__self_0_0) == (*__self_1_0) &&
                                (*__self_0_1) == (*__self_1_1),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Subscription) -> bool {
                    match *other {
                        Subscription {
                        endpoint: ref __self_1_0, keys: ref __self_1_1 } =>
                        match *self {
                            Subscription {
                            endpoint: ref __self_0_0, keys: ref __self_0_1 }
                            =>
                            (*__self_0_0) != (*__self_1_0) ||
                                (*__self_0_1) != (*__self_1_1),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Subscription: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Subscription {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Subscription",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "endpoint",
                                                                                &self.endpoint)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "keys",
                                                                                &self.keys)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Subscription {
                #[inline]
                fn default() -> Subscription {
                    Subscription{endpoint:
                                     ::core::default::Default::default(),
                                 keys: ::core::default::Default::default(),}
                }
            }
            pub(crate) struct Keys {
                pub(crate) p256dh: String,
                pub(crate) auth: String,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Keys {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
                        => {
                            let mut debug_trait_builder =
                                f.debug_struct("Keys");
                            let _ =
                                debug_trait_builder.field("p256dh",
                                                          &&(*__self_0_0));
                            let _ =
                                debug_trait_builder.field("auth",
                                                          &&(*__self_0_1));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Keys {
                #[inline]
                fn clone(&self) -> Keys {
                    match *self {
                        Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
                        =>
                        Keys{p256dh:
                                 ::core::clone::Clone::clone(&(*__self_0_0)),
                             auth:
                                 ::core::clone::Clone::clone(&(*__self_0_1)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Keys { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Keys {
                #[inline]
                fn eq(&self, other: &Keys) -> bool {
                    match *other {
                        Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 }
                        =>
                        match *self {
                            Keys {
                            p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
                            (*__self_0_0) == (*__self_1_0) &&
                                (*__self_0_1) == (*__self_1_1),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Keys) -> bool {
                    match *other {
                        Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 }
                        =>
                        match *self {
                            Keys {
                            p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
                            (*__self_0_0) != (*__self_1_0) ||
                                (*__self_0_1) != (*__self_1_1),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Keys: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Keys {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Keys",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "p256dh",
                                                                                &self.p256dh)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "auth",
                                                                                &self.auth)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Keys {
                #[inline]
                fn default() -> Keys {
                    Keys{p256dh: ::core::default::Default::default(),
                         auth: ::core::default::Default::default(),}
                }
            }
            pub(crate) struct Data {
                pub(crate) alerts: Option<Alerts>,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Data {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Data { alerts: ref __self_0_0 } => {
                            let mut debug_trait_builder =
                                f.debug_struct("Data");
                            let _ =
                                debug_trait_builder.field("alerts",
                                                          &&(*__self_0_0));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Data {
                #[inline]
                fn clone(&self) -> Data {
                    match *self {
                        Data { alerts: ref __self_0_0 } =>
                        Data{alerts:
                                 ::core::clone::Clone::clone(&(*__self_0_0)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Data { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Data {
                #[inline]
                fn eq(&self, other: &Data) -> bool {
                    match *other {
                        Data { alerts: ref __self_1_0 } =>
                        match *self {
                            Data { alerts: ref __self_0_0 } =>
                            (*__self_0_0) == (*__self_1_0),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Data) -> bool {
                    match *other {
                        Data { alerts: ref __self_1_0 } =>
                        match *self {
                            Data { alerts: ref __self_0_0 } =>
                            (*__self_0_0) != (*__self_1_0),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Data: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Data {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Data",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "alerts",
                                                                                &self.alerts)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Data {
                #[inline]
                fn default() -> Data {
                    Data{alerts: ::core::default::Default::default(),}
                }
            }
        }
        pub(crate) mod update_data {
            use super::Alerts;
            pub(crate) struct Data {
                pub(crate) alerts: Option<Alerts>,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Data {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Data { alerts: ref __self_0_0 } => {
                            let mut debug_trait_builder =
                                f.debug_struct("Data");
                            let _ =
                                debug_trait_builder.field("alerts",
                                                          &&(*__self_0_0));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Data {
                #[inline]
                fn clone(&self) -> Data {
                    match *self {
                        Data { alerts: ref __self_0_0 } =>
                        Data{alerts:
                                 ::core::clone::Clone::clone(&(*__self_0_0)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Data { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Data {
                #[inline]
                fn eq(&self, other: &Data) -> bool {
                    match *other {
                        Data { alerts: ref __self_1_0 } =>
                        match *self {
                            Data { alerts: ref __self_0_0 } =>
                            (*__self_0_0) == (*__self_1_0),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Data) -> bool {
                    match *other {
                        Data { alerts: ref __self_1_0 } =>
                        match *self {
                            Data { alerts: ref __self_0_0 } =>
                            (*__self_0_0) != (*__self_1_0),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Data: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Data {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Data",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "alerts",
                                                                                &self.alerts)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Data {
                #[inline]
                fn default() -> Data {
                    Data{alerts: ::core::default::Default::default(),}
                }
            }
            pub(crate) struct Form {
                pub(crate) id: String,
                pub(crate) data: Data,
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::fmt::Debug for Form {
                fn fmt(&self, f: &mut ::core::fmt::Formatter)
                 -> ::core::fmt::Result {
                    match *self {
                        Form { id: ref __self_0_0, data: ref __self_0_1 } => {
                            let mut debug_trait_builder =
                                f.debug_struct("Form");
                            let _ =
                                debug_trait_builder.field("id",
                                                          &&(*__self_0_0));
                            let _ =
                                debug_trait_builder.field("data",
                                                          &&(*__self_0_1));
                            debug_trait_builder.finish()
                        }
                    }
                }
            }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::clone::Clone for Form {
                #[inline]
                fn clone(&self) -> Form {
                    match *self {
                        Form { id: ref __self_0_0, data: ref __self_0_1 } =>
                        Form{id: ::core::clone::Clone::clone(&(*__self_0_0)),
                             data:
                                 ::core::clone::Clone::clone(&(*__self_0_1)),},
                    }
                }
            }
            impl ::core::marker::StructuralPartialEq for Form { }
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::cmp::PartialEq for Form {
                #[inline]
                fn eq(&self, other: &Form) -> bool {
                    match *other {
                        Form { id: ref __self_1_0, data: ref __self_1_1 } =>
                        match *self {
                            Form { id: ref __self_0_0, data: ref __self_0_1 }
                            =>
                            (*__self_0_0) == (*__self_1_0) &&
                                (*__self_0_1) == (*__self_1_1),
                        },
                    }
                }
                #[inline]
                fn ne(&self, other: &Form) -> bool {
                    match *other {
                        Form { id: ref __self_1_0, data: ref __self_1_1 } =>
                        match *self {
                            Form { id: ref __self_0_0, data: ref __self_0_1 }
                            =>
                            (*__self_0_0) != (*__self_1_0) ||
                                (*__self_0_1) != (*__self_1_1),
                        },
                    }
                }
            }
            #[doc(hidden)]
            #[allow(non_upper_case_globals, unused_attributes,
                    unused_qualifications)]
            const _IMPL_SERIALIZE_FOR_Form: () =
                {
                    #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                    extern crate serde as _serde;
                    #[allow(unused_macros)]
                    macro_rules! try {
                        ($ __expr : expr) =>
                        {
                            match $ __expr
                            {
                                _serde :: export :: Ok(__val) => __val, _serde
                                :: export :: Err(__err) =>
                                { return _serde :: export :: Err(__err) ; }
                            }
                        }
                    }
                    #[automatically_derived]
                    impl _serde::Serialize for Form {
                        fn serialize<__S>(&self, __serializer: __S)
                         -> _serde::export::Result<__S::Ok, __S::Error> where
                         __S: _serde::Serializer {
                            let mut __serde_state =
                                match _serde::Serializer::serialize_struct(__serializer,
                                                                           "Form",
                                                                           false
                                                                               as
                                                                               usize
                                                                               +
                                                                               1
                                                                               +
                                                                               1)
                                    {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "id",
                                                                                &self.id)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "data",
                                                                                &self.data)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                            _serde::ser::SerializeStruct::end(__serde_state)
                        }
                    }
                };
            #[automatically_derived]
            #[allow(unused_qualifications)]
            impl ::core::default::Default for Form {
                #[inline]
                fn default() -> Form {
                    Form{id: ::core::default::Default::default(),
                         data: ::core::default::Default::default(),}
                }
            }
        }
    }
    /// Data structures for ser/de of relationship-related resources
    pub mod relationship {
        //! module containing everything relating to a relationship with
        //! another account.
        /// A struct containing information about a relationship with another account.
        pub struct Relationship {
            /// Target account id
            pub id: String,
            /// Whether the application client follows the account.
            pub following: bool,
            /// Whether the account follows the application client.
            pub followed_by: bool,
            /// Whether the application client blocks the account.
            pub blocking: bool,
            /// Whether the application client blocks the account.
            pub muting: bool,
            /// Whether the application client has requested to follow the account.
            pub requested: bool,
            /// Whether the user is also muting notifications
            pub muting_notifications: bool,
            /// Whether the user is currently blocking the accounts's domain
            pub domain_blocking: bool,
            /// Whether the user's reblogs will show up in the home timeline
            pub showing_reblogs: bool,
            /// Whether the user is currently endorsing the account
            ///
            /// This field is not techincally nullable with mastodon >= 2.5.0, but
            /// making it `Option<bool>` here means we shouldn't get deser errors when
            /// making calls to pleroma or mastodon<2.5.0 instances
            pub endorsed: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Relationship {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Relationship {
                    id: ref __self_0_0,
                    following: ref __self_0_1,
                    followed_by: ref __self_0_2,
                    blocking: ref __self_0_3,
                    muting: ref __self_0_4,
                    requested: ref __self_0_5,
                    muting_notifications: ref __self_0_6,
                    domain_blocking: ref __self_0_7,
                    showing_reblogs: ref __self_0_8,
                    endorsed: ref __self_0_9 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Relationship");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("following",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("followed_by",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("blocking",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("muting",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("requested",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("muting_notifications",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("domain_blocking",
                                                      &&(*__self_0_7));
                        let _ =
                            debug_trait_builder.field("showing_reblogs",
                                                      &&(*__self_0_8));
                        let _ =
                            debug_trait_builder.field("endorsed",
                                                      &&(*__self_0_9));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Relationship {
            #[inline]
            fn clone(&self) -> Relationship {
                match *self {
                    Relationship {
                    id: ref __self_0_0,
                    following: ref __self_0_1,
                    followed_by: ref __self_0_2,
                    blocking: ref __self_0_3,
                    muting: ref __self_0_4,
                    requested: ref __self_0_5,
                    muting_notifications: ref __self_0_6,
                    domain_blocking: ref __self_0_7,
                    showing_reblogs: ref __self_0_8,
                    endorsed: ref __self_0_9 } =>
                    Relationship{id:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 following:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),
                                 followed_by:
                                     ::core::clone::Clone::clone(&(*__self_0_2)),
                                 blocking:
                                     ::core::clone::Clone::clone(&(*__self_0_3)),
                                 muting:
                                     ::core::clone::Clone::clone(&(*__self_0_4)),
                                 requested:
                                     ::core::clone::Clone::clone(&(*__self_0_5)),
                                 muting_notifications:
                                     ::core::clone::Clone::clone(&(*__self_0_6)),
                                 domain_blocking:
                                     ::core::clone::Clone::clone(&(*__self_0_7)),
                                 showing_reblogs:
                                     ::core::clone::Clone::clone(&(*__self_0_8)),
                                 endorsed:
                                     ::core::clone::Clone::clone(&(*__self_0_9)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Relationship: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Relationship {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __field8,
                            __field9,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    8u64 =>
                                    _serde::export::Ok(__Field::__field8),
                                    9u64 =>
                                    _serde::export::Ok(__Field::__field9),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 10")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "following" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "followed_by" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "blocking" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "muting" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "requested" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "muting_notifications" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "domain_blocking" =>
                                    _serde::export::Ok(__Field::__field7),
                                    "showing_reblogs" =>
                                    _serde::export::Ok(__Field::__field8),
                                    "endorsed" =>
                                    _serde::export::Ok(__Field::__field9),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"following" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"followed_by" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"blocking" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"muting" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"requested" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"muting_notifications" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"domain_blocking" =>
                                    _serde::export::Ok(__Field::__field7),
                                    b"showing_reblogs" =>
                                    _serde::export::Ok(__Field::__field8),
                                    b"endorsed" =>
                                    _serde::export::Ok(__Field::__field9),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Relationship>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Relationship;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Relationship")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field8 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                let __field9 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
                                                                                                         &"struct Relationship with 10 elements"));
                                        }
                                    };
                                _serde::export::Ok(Relationship{id: __field0,
                                                                following:
                                                                    __field1,
                                                                followed_by:
                                                                    __field2,
                                                                blocking:
                                                                    __field3,
                                                                muting:
                                                                    __field4,
                                                                requested:
                                                                    __field5,
                                                                muting_notifications:
                                                                    __field6,
                                                                domain_blocking:
                                                                    __field7,
                                                                showing_reblogs:
                                                                    __field8,
                                                                endorsed:
                                                                    __field9,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field8:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field9:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("following"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("followed_by"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("blocking"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("muting"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("requested"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("muting_notifications"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("domain_blocking"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field8 => {
                                            if _serde::export::Option::is_some(&__field8)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("showing_reblogs"));
                                            }
                                            __field8 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field9 => {
                                            if _serde::export::Option::is_some(&__field9)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("endorsed"));
                                            }
                                            __field9 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("following")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("followed_by")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("blocking")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("muting")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("requested")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("muting_notifications")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("domain_blocking")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field8 =
                                    match __field8 {
                                        _serde::export::Some(__field8) =>
                                        __field8,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("showing_reblogs")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field9 =
                                    match __field9 {
                                        _serde::export::Some(__field9) =>
                                        __field9,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("endorsed")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Relationship{id: __field0,
                                                                following:
                                                                    __field1,
                                                                followed_by:
                                                                    __field2,
                                                                blocking:
                                                                    __field3,
                                                                muting:
                                                                    __field4,
                                                                requested:
                                                                    __field5,
                                                                muting_notifications:
                                                                    __field6,
                                                                domain_blocking:
                                                                    __field7,
                                                                showing_reblogs:
                                                                    __field8,
                                                                endorsed:
                                                                    __field9,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "following", "followed_by", "blocking",
                              "muting", "requested", "muting_notifications",
                              "domain_blocking", "showing_reblogs",
                              "endorsed"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Relationship",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Relationship>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Relationship { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Relationship {
            #[inline]
            fn eq(&self, other: &Relationship) -> bool {
                match *other {
                    Relationship {
                    id: ref __self_1_0,
                    following: ref __self_1_1,
                    followed_by: ref __self_1_2,
                    blocking: ref __self_1_3,
                    muting: ref __self_1_4,
                    requested: ref __self_1_5,
                    muting_notifications: ref __self_1_6,
                    domain_blocking: ref __self_1_7,
                    showing_reblogs: ref __self_1_8,
                    endorsed: ref __self_1_9 } =>
                    match *self {
                        Relationship {
                        id: ref __self_0_0,
                        following: ref __self_0_1,
                        followed_by: ref __self_0_2,
                        blocking: ref __self_0_3,
                        muting: ref __self_0_4,
                        requested: ref __self_0_5,
                        muting_notifications: ref __self_0_6,
                        domain_blocking: ref __self_0_7,
                        showing_reblogs: ref __self_0_8,
                        endorsed: ref __self_0_9 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7) &&
                            (*__self_0_8) == (*__self_1_8) &&
                            (*__self_0_9) == (*__self_1_9),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Relationship) -> bool {
                match *other {
                    Relationship {
                    id: ref __self_1_0,
                    following: ref __self_1_1,
                    followed_by: ref __self_1_2,
                    blocking: ref __self_1_3,
                    muting: ref __self_1_4,
                    requested: ref __self_1_5,
                    muting_notifications: ref __self_1_6,
                    domain_blocking: ref __self_1_7,
                    showing_reblogs: ref __self_1_8,
                    endorsed: ref __self_1_9 } =>
                    match *self {
                        Relationship {
                        id: ref __self_0_0,
                        following: ref __self_0_1,
                        followed_by: ref __self_0_2,
                        blocking: ref __self_0_3,
                        muting: ref __self_0_4,
                        requested: ref __self_0_5,
                        muting_notifications: ref __self_0_6,
                        domain_blocking: ref __self_0_7,
                        showing_reblogs: ref __self_0_8,
                        endorsed: ref __self_0_9 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7) ||
                            (*__self_0_8) != (*__self_1_8) ||
                            (*__self_0_9) != (*__self_1_9),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of report-related resources
    pub mod report {
        //! module containing information about a finished report of a user.
        /// A struct containing info about a report.
        pub struct Report {
            /// The ID of the report.
            pub id: String,
            /// The action taken in response to the report.
            pub action_taken: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Report {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Report { id: ref __self_0_0, action_taken: ref __self_0_1
                    } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Report");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("action_taken",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Report {
            #[inline]
            fn clone(&self) -> Report {
                match *self {
                    Report { id: ref __self_0_0, action_taken: ref __self_0_1
                    } =>
                    Report{id: ::core::clone::Clone::clone(&(*__self_0_0)),
                           action_taken:
                               ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Report: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Report {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "action_taken" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"action_taken" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Report>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Report;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Report")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Report with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Report with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(Report{id: __field0,
                                                          action_taken:
                                                              __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("action_taken"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("action_taken")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Report{id: __field0,
                                                          action_taken:
                                                              __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "action_taken"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Report",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Report>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Report { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Report {
            #[inline]
            fn eq(&self, other: &Report) -> bool {
                match *other {
                    Report { id: ref __self_1_0, action_taken: ref __self_1_1
                    } =>
                    match *self {
                        Report {
                        id: ref __self_0_0, action_taken: ref __self_0_1 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Report) -> bool {
                match *other {
                    Report { id: ref __self_1_0, action_taken: ref __self_1_1
                    } =>
                    match *self {
                        Report {
                        id: ref __self_0_0, action_taken: ref __self_0_1 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of search-related resources
    pub mod search_result {
        //! A module containing info relating to a search result.
        use super::{prelude::{Account, Status}, status::Tag};
        /// A struct containing results of a search.
        pub struct SearchResult {
            /// An array of matched Accounts.
            pub accounts: Vec<Account>,
            /// An array of matched Statuses.
            pub statuses: Vec<Status>,
            /// An array of matched hashtags, as strings.
            pub hashtags: Vec<String>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for SearchResult {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    SearchResult {
                    accounts: ref __self_0_0,
                    statuses: ref __self_0_1,
                    hashtags: ref __self_0_2 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("SearchResult");
                        let _ =
                            debug_trait_builder.field("accounts",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("statuses",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("hashtags",
                                                      &&(*__self_0_2));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for SearchResult {
            #[inline]
            fn clone(&self) -> SearchResult {
                match *self {
                    SearchResult {
                    accounts: ref __self_0_0,
                    statuses: ref __self_0_1,
                    hashtags: ref __self_0_2 } =>
                    SearchResult{accounts:
                                     ::core::clone::Clone::clone(&(*__self_0_0)),
                                 statuses:
                                     ::core::clone::Clone::clone(&(*__self_0_1)),
                                 hashtags:
                                     ::core::clone::Clone::clone(&(*__self_0_2)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_SearchResult: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for SearchResult {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 3")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "accounts" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "statuses" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "hashtags" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"accounts" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"statuses" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"hashtags" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<SearchResult>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = SearchResult;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct SearchResult")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Account>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct SearchResult with 3 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct SearchResult with 3 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct SearchResult with 3 elements"));
                                        }
                                    };
                                _serde::export::Ok(SearchResult{accounts:
                                                                    __field0,
                                                                statuses:
                                                                    __field1,
                                                                hashtags:
                                                                    __field2,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Vec<Account>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Vec<Status>> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Vec<String>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("accounts"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Account>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("statuses"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("hashtags"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("accounts")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("statuses")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("hashtags")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(SearchResult{accounts:
                                                                    __field0,
                                                                statuses:
                                                                    __field1,
                                                                hashtags:
                                                                    __field2,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["accounts", "statuses", "hashtags"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "SearchResult",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<SearchResult>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for SearchResult { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for SearchResult {
            #[inline]
            fn eq(&self, other: &SearchResult) -> bool {
                match *other {
                    SearchResult {
                    accounts: ref __self_1_0,
                    statuses: ref __self_1_1,
                    hashtags: ref __self_1_2 } =>
                    match *self {
                        SearchResult {
                        accounts: ref __self_0_0,
                        statuses: ref __self_0_1,
                        hashtags: ref __self_0_2 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &SearchResult) -> bool {
                match *other {
                    SearchResult {
                    accounts: ref __self_1_0,
                    statuses: ref __self_1_1,
                    hashtags: ref __self_1_2 } =>
                    match *self {
                        SearchResult {
                        accounts: ref __self_0_0,
                        statuses: ref __self_0_1,
                        hashtags: ref __self_0_2 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2),
                    },
                }
            }
        }
        /// A struct containing results of a search, with `Tag` objects in the
        /// `hashtags` field
        pub struct SearchResultV2 {
            /// An array of matched Accounts.
            pub accounts: Vec<Account>,
            /// An array of matched Statuses.
            pub statuses: Vec<Status>,
            /// An array of matched hashtags, as `Tag` objects.
            pub hashtags: Vec<Tag>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for SearchResultV2 {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    SearchResultV2 {
                    accounts: ref __self_0_0,
                    statuses: ref __self_0_1,
                    hashtags: ref __self_0_2 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("SearchResultV2");
                        let _ =
                            debug_trait_builder.field("accounts",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("statuses",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("hashtags",
                                                      &&(*__self_0_2));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for SearchResultV2 {
            #[inline]
            fn clone(&self) -> SearchResultV2 {
                match *self {
                    SearchResultV2 {
                    accounts: ref __self_0_0,
                    statuses: ref __self_0_1,
                    hashtags: ref __self_0_2 } =>
                    SearchResultV2{accounts:
                                       ::core::clone::Clone::clone(&(*__self_0_0)),
                                   statuses:
                                       ::core::clone::Clone::clone(&(*__self_0_1)),
                                   hashtags:
                                       ::core::clone::Clone::clone(&(*__self_0_2)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_SearchResultV2: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for SearchResultV2 {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 3")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "accounts" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "statuses" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "hashtags" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"accounts" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"statuses" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"hashtags" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<SearchResultV2>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = SearchResultV2;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct SearchResultV2")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Account>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct SearchResultV2 with 3 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Status>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct SearchResultV2 with 3 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Tag>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct SearchResultV2 with 3 elements"));
                                        }
                                    };
                                _serde::export::Ok(SearchResultV2{accounts:
                                                                      __field0,
                                                                  statuses:
                                                                      __field1,
                                                                  hashtags:
                                                                      __field2,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<Vec<Account>> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Vec<Status>> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Vec<Tag>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("accounts"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Account>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("statuses"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Status>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("hashtags"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Tag>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("accounts")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("statuses")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("hashtags")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(SearchResultV2{accounts:
                                                                      __field0,
                                                                  statuses:
                                                                      __field1,
                                                                  hashtags:
                                                                      __field2,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["accounts", "statuses", "hashtags"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "SearchResultV2",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<SearchResultV2>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for SearchResultV2 { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for SearchResultV2 {
            #[inline]
            fn eq(&self, other: &SearchResultV2) -> bool {
                match *other {
                    SearchResultV2 {
                    accounts: ref __self_1_0,
                    statuses: ref __self_1_1,
                    hashtags: ref __self_1_2 } =>
                    match *self {
                        SearchResultV2 {
                        accounts: ref __self_0_0,
                        statuses: ref __self_0_1,
                        hashtags: ref __self_0_2 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &SearchResultV2) -> bool {
                match *other {
                    SearchResultV2 {
                    accounts: ref __self_1_0,
                    statuses: ref __self_1_1,
                    hashtags: ref __self_1_2 } =>
                    match *self {
                        SearchResultV2 {
                        accounts: ref __self_0_0,
                        statuses: ref __self_0_1,
                        hashtags: ref __self_0_2 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2),
                    },
                }
            }
        }
    }
    /// Data structures for ser/de of status-related resources
    pub mod status {
        //! Module containing all info relating to a status.
        use super::prelude::*;
        use chrono::prelude::*;
        use crate::entities::card::Card;
        use crate::status_builder::Visibility;
        /// A status from the instance.
        pub struct Status {
            /// The ID of the status.
            pub id: String,
            /// A Fediverse-unique resource ID.
            pub uri: String,
            /// URL to the status page (can be remote)
            pub url: Option<String>,
            /// The Account which posted the status.
            pub account: Account,
            /// The ID of the status this status is replying to, if the status is
            /// a reply.
            pub in_reply_to_id: Option<String>,
            /// The ID of the account this status is replying to, if the status is
            /// a reply.
            pub in_reply_to_account_id: Option<String>,
            /// If this status is a reblogged Status of another User.
            pub reblog: Option<Box<Status>>,
            /// Body of the status; this will contain HTML
            /// (remote HTML already sanitized)
            pub content: String,
            /// The time the status was created.
            pub created_at: DateTime<Utc>,
            /// An array of Emoji
            pub emojis: Vec<Emoji>,
            /// The numbef or replies to this status.
            pub replies_count: Option<u64>,
            /// The number of reblogs for the status.
            pub reblogs_count: u64,
            /// The number of favourites for the status.
            pub favourites_count: u64,
            /// Whether the application client has reblogged the status.
            pub reblogged: Option<bool>,
            /// Whether the application client has favourited the status.
            pub favourited: Option<bool>,
            /// Whether media attachments should be hidden by default.
            pub sensitive: bool,
            /// If not empty, warning text that should be displayed before the actual
            /// content.
            pub spoiler_text: String,
            /// The visibilty of the status.
            pub visibility: Visibility,
            /// An array of attachments.
            pub media_attachments: Vec<Attachment>,
            /// An array of mentions.
            pub mentions: Vec<Mention>,
            /// An array of tags.
            pub tags: Vec<Tag>,
            /// The associated card
            pub card: Option<Card>,
            /// Name of application used to post status.
            pub application: Option<Application>,
            /// The detected language for the status, if detected.
            pub language: Option<String>,
            /// Whether this is the pinned status for the account that posted it.
            pub pinned: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Status {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Status {
                    id: ref __self_0_0,
                    uri: ref __self_0_1,
                    url: ref __self_0_2,
                    account: ref __self_0_3,
                    in_reply_to_id: ref __self_0_4,
                    in_reply_to_account_id: ref __self_0_5,
                    reblog: ref __self_0_6,
                    content: ref __self_0_7,
                    created_at: ref __self_0_8,
                    emojis: ref __self_0_9,
                    replies_count: ref __self_0_10,
                    reblogs_count: ref __self_0_11,
                    favourites_count: ref __self_0_12,
                    reblogged: ref __self_0_13,
                    favourited: ref __self_0_14,
                    sensitive: ref __self_0_15,
                    spoiler_text: ref __self_0_16,
                    visibility: ref __self_0_17,
                    media_attachments: ref __self_0_18,
                    mentions: ref __self_0_19,
                    tags: ref __self_0_20,
                    card: ref __self_0_21,
                    application: ref __self_0_22,
                    language: ref __self_0_23,
                    pinned: ref __self_0_24 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Status");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("uri", &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("account",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("in_reply_to_id",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("in_reply_to_account_id",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("reblog",
                                                      &&(*__self_0_6));
                        let _ =
                            debug_trait_builder.field("content",
                                                      &&(*__self_0_7));
                        let _ =
                            debug_trait_builder.field("created_at",
                                                      &&(*__self_0_8));
                        let _ =
                            debug_trait_builder.field("emojis",
                                                      &&(*__self_0_9));
                        let _ =
                            debug_trait_builder.field("replies_count",
                                                      &&(*__self_0_10));
                        let _ =
                            debug_trait_builder.field("reblogs_count",
                                                      &&(*__self_0_11));
                        let _ =
                            debug_trait_builder.field("favourites_count",
                                                      &&(*__self_0_12));
                        let _ =
                            debug_trait_builder.field("reblogged",
                                                      &&(*__self_0_13));
                        let _ =
                            debug_trait_builder.field("favourited",
                                                      &&(*__self_0_14));
                        let _ =
                            debug_trait_builder.field("sensitive",
                                                      &&(*__self_0_15));
                        let _ =
                            debug_trait_builder.field("spoiler_text",
                                                      &&(*__self_0_16));
                        let _ =
                            debug_trait_builder.field("visibility",
                                                      &&(*__self_0_17));
                        let _ =
                            debug_trait_builder.field("media_attachments",
                                                      &&(*__self_0_18));
                        let _ =
                            debug_trait_builder.field("mentions",
                                                      &&(*__self_0_19));
                        let _ =
                            debug_trait_builder.field("tags",
                                                      &&(*__self_0_20));
                        let _ =
                            debug_trait_builder.field("card",
                                                      &&(*__self_0_21));
                        let _ =
                            debug_trait_builder.field("application",
                                                      &&(*__self_0_22));
                        let _ =
                            debug_trait_builder.field("language",
                                                      &&(*__self_0_23));
                        let _ =
                            debug_trait_builder.field("pinned",
                                                      &&(*__self_0_24));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Status {
            #[inline]
            fn clone(&self) -> Status {
                match *self {
                    Status {
                    id: ref __self_0_0,
                    uri: ref __self_0_1,
                    url: ref __self_0_2,
                    account: ref __self_0_3,
                    in_reply_to_id: ref __self_0_4,
                    in_reply_to_account_id: ref __self_0_5,
                    reblog: ref __self_0_6,
                    content: ref __self_0_7,
                    created_at: ref __self_0_8,
                    emojis: ref __self_0_9,
                    replies_count: ref __self_0_10,
                    reblogs_count: ref __self_0_11,
                    favourites_count: ref __self_0_12,
                    reblogged: ref __self_0_13,
                    favourited: ref __self_0_14,
                    sensitive: ref __self_0_15,
                    spoiler_text: ref __self_0_16,
                    visibility: ref __self_0_17,
                    media_attachments: ref __self_0_18,
                    mentions: ref __self_0_19,
                    tags: ref __self_0_20,
                    card: ref __self_0_21,
                    application: ref __self_0_22,
                    language: ref __self_0_23,
                    pinned: ref __self_0_24 } =>
                    Status{id: ::core::clone::Clone::clone(&(*__self_0_0)),
                           uri: ::core::clone::Clone::clone(&(*__self_0_1)),
                           url: ::core::clone::Clone::clone(&(*__self_0_2)),
                           account:
                               ::core::clone::Clone::clone(&(*__self_0_3)),
                           in_reply_to_id:
                               ::core::clone::Clone::clone(&(*__self_0_4)),
                           in_reply_to_account_id:
                               ::core::clone::Clone::clone(&(*__self_0_5)),
                           reblog:
                               ::core::clone::Clone::clone(&(*__self_0_6)),
                           content:
                               ::core::clone::Clone::clone(&(*__self_0_7)),
                           created_at:
                               ::core::clone::Clone::clone(&(*__self_0_8)),
                           emojis:
                               ::core::clone::Clone::clone(&(*__self_0_9)),
                           replies_count:
                               ::core::clone::Clone::clone(&(*__self_0_10)),
                           reblogs_count:
                               ::core::clone::Clone::clone(&(*__self_0_11)),
                           favourites_count:
                               ::core::clone::Clone::clone(&(*__self_0_12)),
                           reblogged:
                               ::core::clone::Clone::clone(&(*__self_0_13)),
                           favourited:
                               ::core::clone::Clone::clone(&(*__self_0_14)),
                           sensitive:
                               ::core::clone::Clone::clone(&(*__self_0_15)),
                           spoiler_text:
                               ::core::clone::Clone::clone(&(*__self_0_16)),
                           visibility:
                               ::core::clone::Clone::clone(&(*__self_0_17)),
                           media_attachments:
                               ::core::clone::Clone::clone(&(*__self_0_18)),
                           mentions:
                               ::core::clone::Clone::clone(&(*__self_0_19)),
                           tags: ::core::clone::Clone::clone(&(*__self_0_20)),
                           card: ::core::clone::Clone::clone(&(*__self_0_21)),
                           application:
                               ::core::clone::Clone::clone(&(*__self_0_22)),
                           language:
                               ::core::clone::Clone::clone(&(*__self_0_23)),
                           pinned:
                               ::core::clone::Clone::clone(&(*__self_0_24)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Status: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Status {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __field4,
                            __field5,
                            __field6,
                            __field7,
                            __field8,
                            __field9,
                            __field10,
                            __field11,
                            __field12,
                            __field13,
                            __field14,
                            __field15,
                            __field16,
                            __field17,
                            __field18,
                            __field19,
                            __field20,
                            __field21,
                            __field22,
                            __field23,
                            __field24,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    4u64 =>
                                    _serde::export::Ok(__Field::__field4),
                                    5u64 =>
                                    _serde::export::Ok(__Field::__field5),
                                    6u64 =>
                                    _serde::export::Ok(__Field::__field6),
                                    7u64 =>
                                    _serde::export::Ok(__Field::__field7),
                                    8u64 =>
                                    _serde::export::Ok(__Field::__field8),
                                    9u64 =>
                                    _serde::export::Ok(__Field::__field9),
                                    10u64 =>
                                    _serde::export::Ok(__Field::__field10),
                                    11u64 =>
                                    _serde::export::Ok(__Field::__field11),
                                    12u64 =>
                                    _serde::export::Ok(__Field::__field12),
                                    13u64 =>
                                    _serde::export::Ok(__Field::__field13),
                                    14u64 =>
                                    _serde::export::Ok(__Field::__field14),
                                    15u64 =>
                                    _serde::export::Ok(__Field::__field15),
                                    16u64 =>
                                    _serde::export::Ok(__Field::__field16),
                                    17u64 =>
                                    _serde::export::Ok(__Field::__field17),
                                    18u64 =>
                                    _serde::export::Ok(__Field::__field18),
                                    19u64 =>
                                    _serde::export::Ok(__Field::__field19),
                                    20u64 =>
                                    _serde::export::Ok(__Field::__field20),
                                    21u64 =>
                                    _serde::export::Ok(__Field::__field21),
                                    22u64 =>
                                    _serde::export::Ok(__Field::__field22),
                                    23u64 =>
                                    _serde::export::Ok(__Field::__field23),
                                    24u64 =>
                                    _serde::export::Ok(__Field::__field24),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 25")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "uri" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "account" =>
                                    _serde::export::Ok(__Field::__field3),
                                    "in_reply_to_id" =>
                                    _serde::export::Ok(__Field::__field4),
                                    "in_reply_to_account_id" =>
                                    _serde::export::Ok(__Field::__field5),
                                    "reblog" =>
                                    _serde::export::Ok(__Field::__field6),
                                    "content" =>
                                    _serde::export::Ok(__Field::__field7),
                                    "created_at" =>
                                    _serde::export::Ok(__Field::__field8),
                                    "emojis" =>
                                    _serde::export::Ok(__Field::__field9),
                                    "replies_count" =>
                                    _serde::export::Ok(__Field::__field10),
                                    "reblogs_count" =>
                                    _serde::export::Ok(__Field::__field11),
                                    "favourites_count" =>
                                    _serde::export::Ok(__Field::__field12),
                                    "reblogged" =>
                                    _serde::export::Ok(__Field::__field13),
                                    "favourited" =>
                                    _serde::export::Ok(__Field::__field14),
                                    "sensitive" =>
                                    _serde::export::Ok(__Field::__field15),
                                    "spoiler_text" =>
                                    _serde::export::Ok(__Field::__field16),
                                    "visibility" =>
                                    _serde::export::Ok(__Field::__field17),
                                    "media_attachments" =>
                                    _serde::export::Ok(__Field::__field18),
                                    "mentions" =>
                                    _serde::export::Ok(__Field::__field19),
                                    "tags" =>
                                    _serde::export::Ok(__Field::__field20),
                                    "card" =>
                                    _serde::export::Ok(__Field::__field21),
                                    "application" =>
                                    _serde::export::Ok(__Field::__field22),
                                    "language" =>
                                    _serde::export::Ok(__Field::__field23),
                                    "pinned" =>
                                    _serde::export::Ok(__Field::__field24),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"uri" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"account" =>
                                    _serde::export::Ok(__Field::__field3),
                                    b"in_reply_to_id" =>
                                    _serde::export::Ok(__Field::__field4),
                                    b"in_reply_to_account_id" =>
                                    _serde::export::Ok(__Field::__field5),
                                    b"reblog" =>
                                    _serde::export::Ok(__Field::__field6),
                                    b"content" =>
                                    _serde::export::Ok(__Field::__field7),
                                    b"created_at" =>
                                    _serde::export::Ok(__Field::__field8),
                                    b"emojis" =>
                                    _serde::export::Ok(__Field::__field9),
                                    b"replies_count" =>
                                    _serde::export::Ok(__Field::__field10),
                                    b"reblogs_count" =>
                                    _serde::export::Ok(__Field::__field11),
                                    b"favourites_count" =>
                                    _serde::export::Ok(__Field::__field12),
                                    b"reblogged" =>
                                    _serde::export::Ok(__Field::__field13),
                                    b"favourited" =>
                                    _serde::export::Ok(__Field::__field14),
                                    b"sensitive" =>
                                    _serde::export::Ok(__Field::__field15),
                                    b"spoiler_text" =>
                                    _serde::export::Ok(__Field::__field16),
                                    b"visibility" =>
                                    _serde::export::Ok(__Field::__field17),
                                    b"media_attachments" =>
                                    _serde::export::Ok(__Field::__field18),
                                    b"mentions" =>
                                    _serde::export::Ok(__Field::__field19),
                                    b"tags" =>
                                    _serde::export::Ok(__Field::__field20),
                                    b"card" =>
                                    _serde::export::Ok(__Field::__field21),
                                    b"application" =>
                                    _serde::export::Ok(__Field::__field22),
                                    b"language" =>
                                    _serde::export::Ok(__Field::__field23),
                                    b"pinned" =>
                                    _serde::export::Ok(__Field::__field24),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Status>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Status;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Status")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<Account>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field4 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(4usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field5 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(5usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field6 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Box<Status>>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(6usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field7 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(7usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field8 =
                                    match match _serde::de::SeqAccess::next_element::<DateTime<Utc>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(8usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field9 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Emoji>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(9usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field10 =
                                    match match _serde::de::SeqAccess::next_element::<Option<u64>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(10usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field11 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(11usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field12 =
                                    match match _serde::de::SeqAccess::next_element::<u64>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(12usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field13 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(13usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field14 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(14usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field15 =
                                    match match _serde::de::SeqAccess::next_element::<bool>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(15usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field16 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(16usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field17 =
                                    match match _serde::de::SeqAccess::next_element::<Visibility>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(17usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field18 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Attachment>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(18usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field19 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Mention>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(19usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field20 =
                                    match match _serde::de::SeqAccess::next_element::<Vec<Tag>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(20usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field21 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Card>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(21usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field22 =
                                    match match _serde::de::SeqAccess::next_element::<Option<Application>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(22usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field23 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(23usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                let __field24 =
                                    match match _serde::de::SeqAccess::next_element::<Option<bool>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(24usize,
                                                                                                         &"struct Status with 25 elements"));
                                        }
                                    };
                                _serde::export::Ok(Status{id: __field0,
                                                          uri: __field1,
                                                          url: __field2,
                                                          account: __field3,
                                                          in_reply_to_id:
                                                              __field4,
                                                          in_reply_to_account_id:
                                                              __field5,
                                                          reblog: __field6,
                                                          content: __field7,
                                                          created_at:
                                                              __field8,
                                                          emojis: __field9,
                                                          replies_count:
                                                              __field10,
                                                          reblogs_count:
                                                              __field11,
                                                          favourites_count:
                                                              __field12,
                                                          reblogged:
                                                              __field13,
                                                          favourited:
                                                              __field14,
                                                          sensitive:
                                                              __field15,
                                                          spoiler_text:
                                                              __field16,
                                                          visibility:
                                                              __field17,
                                                          media_attachments:
                                                              __field18,
                                                          mentions: __field19,
                                                          tags: __field20,
                                                          card: __field21,
                                                          application:
                                                              __field22,
                                                          language: __field23,
                                                          pinned: __field24,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<Account> =
                                    _serde::export::None;
                                let mut __field4:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field5:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field6:
                                        _serde::export::Option<Option<Box<Status>>> =
                                    _serde::export::None;
                                let mut __field7:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field8:
                                        _serde::export::Option<DateTime<Utc>> =
                                    _serde::export::None;
                                let mut __field9:
                                        _serde::export::Option<Vec<Emoji>> =
                                    _serde::export::None;
                                let mut __field10:
                                        _serde::export::Option<Option<u64>> =
                                    _serde::export::None;
                                let mut __field11:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field12:
                                        _serde::export::Option<u64> =
                                    _serde::export::None;
                                let mut __field13:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                let mut __field14:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                let mut __field15:
                                        _serde::export::Option<bool> =
                                    _serde::export::None;
                                let mut __field16:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field17:
                                        _serde::export::Option<Visibility> =
                                    _serde::export::None;
                                let mut __field18:
                                        _serde::export::Option<Vec<Attachment>> =
                                    _serde::export::None;
                                let mut __field19:
                                        _serde::export::Option<Vec<Mention>> =
                                    _serde::export::None;
                                let mut __field20:
                                        _serde::export::Option<Vec<Tag>> =
                                    _serde::export::None;
                                let mut __field21:
                                        _serde::export::Option<Option<Card>> =
                                    _serde::export::None;
                                let mut __field22:
                                        _serde::export::Option<Option<Application>> =
                                    _serde::export::None;
                                let mut __field23:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                let mut __field24:
                                        _serde::export::Option<Option<bool>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("uri"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("account"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Account>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field4 => {
                                            if _serde::export::Option::is_some(&__field4)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("in_reply_to_id"));
                                            }
                                            __field4 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field5 => {
                                            if _serde::export::Option::is_some(&__field5)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("in_reply_to_account_id"));
                                            }
                                            __field5 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field6 => {
                                            if _serde::export::Option::is_some(&__field6)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("reblog"));
                                            }
                                            __field6 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Box<Status>>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field7 => {
                                            if _serde::export::Option::is_some(&__field7)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("content"));
                                            }
                                            __field7 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field8 => {
                                            if _serde::export::Option::is_some(&__field8)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("created_at"));
                                            }
                                            __field8 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<DateTime<Utc>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field9 => {
                                            if _serde::export::Option::is_some(&__field9)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("emojis"));
                                            }
                                            __field9 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Emoji>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field10 => {
                                            if _serde::export::Option::is_some(&__field10)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("replies_count"));
                                            }
                                            __field10 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<u64>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field11 => {
                                            if _serde::export::Option::is_some(&__field11)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("reblogs_count"));
                                            }
                                            __field11 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field12 => {
                                            if _serde::export::Option::is_some(&__field12)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("favourites_count"));
                                            }
                                            __field12 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<u64>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field13 => {
                                            if _serde::export::Option::is_some(&__field13)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("reblogged"));
                                            }
                                            __field13 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field14 => {
                                            if _serde::export::Option::is_some(&__field14)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("favourited"));
                                            }
                                            __field14 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field15 => {
                                            if _serde::export::Option::is_some(&__field15)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("sensitive"));
                                            }
                                            __field15 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<bool>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field16 => {
                                            if _serde::export::Option::is_some(&__field16)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("spoiler_text"));
                                            }
                                            __field16 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field17 => {
                                            if _serde::export::Option::is_some(&__field17)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("visibility"));
                                            }
                                            __field17 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Visibility>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field18 => {
                                            if _serde::export::Option::is_some(&__field18)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("media_attachments"));
                                            }
                                            __field18 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Attachment>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field19 => {
                                            if _serde::export::Option::is_some(&__field19)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("mentions"));
                                            }
                                            __field19 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Mention>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field20 => {
                                            if _serde::export::Option::is_some(&__field20)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("tags"));
                                            }
                                            __field20 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Vec<Tag>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field21 => {
                                            if _serde::export::Option::is_some(&__field21)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("card"));
                                            }
                                            __field21 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Card>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field22 => {
                                            if _serde::export::Option::is_some(&__field22)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("application"));
                                            }
                                            __field22 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<Application>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field23 => {
                                            if _serde::export::Option::is_some(&__field23)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("language"));
                                            }
                                            __field23 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field24 => {
                                            if _serde::export::Option::is_some(&__field24)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("pinned"));
                                            }
                                            __field24 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<bool>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("uri")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("account")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field4 =
                                    match __field4 {
                                        _serde::export::Some(__field4) =>
                                        __field4,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("in_reply_to_id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field5 =
                                    match __field5 {
                                        _serde::export::Some(__field5) =>
                                        __field5,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("in_reply_to_account_id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field6 =
                                    match __field6 {
                                        _serde::export::Some(__field6) =>
                                        __field6,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("reblog")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field7 =
                                    match __field7 {
                                        _serde::export::Some(__field7) =>
                                        __field7,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("content")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field8 =
                                    match __field8 {
                                        _serde::export::Some(__field8) =>
                                        __field8,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("created_at")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field9 =
                                    match __field9 {
                                        _serde::export::Some(__field9) =>
                                        __field9,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("emojis")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field10 =
                                    match __field10 {
                                        _serde::export::Some(__field10) =>
                                        __field10,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("replies_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field11 =
                                    match __field11 {
                                        _serde::export::Some(__field11) =>
                                        __field11,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("reblogs_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field12 =
                                    match __field12 {
                                        _serde::export::Some(__field12) =>
                                        __field12,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("favourites_count")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field13 =
                                    match __field13 {
                                        _serde::export::Some(__field13) =>
                                        __field13,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("reblogged")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field14 =
                                    match __field14 {
                                        _serde::export::Some(__field14) =>
                                        __field14,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("favourited")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field15 =
                                    match __field15 {
                                        _serde::export::Some(__field15) =>
                                        __field15,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("sensitive")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field16 =
                                    match __field16 {
                                        _serde::export::Some(__field16) =>
                                        __field16,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("spoiler_text")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field17 =
                                    match __field17 {
                                        _serde::export::Some(__field17) =>
                                        __field17,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("visibility")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field18 =
                                    match __field18 {
                                        _serde::export::Some(__field18) =>
                                        __field18,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("media_attachments")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field19 =
                                    match __field19 {
                                        _serde::export::Some(__field19) =>
                                        __field19,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("mentions")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field20 =
                                    match __field20 {
                                        _serde::export::Some(__field20) =>
                                        __field20,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("tags")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field21 =
                                    match __field21 {
                                        _serde::export::Some(__field21) =>
                                        __field21,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("card")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field22 =
                                    match __field22 {
                                        _serde::export::Some(__field22) =>
                                        __field22,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("application")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field23 =
                                    match __field23 {
                                        _serde::export::Some(__field23) =>
                                        __field23,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("language")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field24 =
                                    match __field24 {
                                        _serde::export::Some(__field24) =>
                                        __field24,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("pinned")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Status{id: __field0,
                                                          uri: __field1,
                                                          url: __field2,
                                                          account: __field3,
                                                          in_reply_to_id:
                                                              __field4,
                                                          in_reply_to_account_id:
                                                              __field5,
                                                          reblog: __field6,
                                                          content: __field7,
                                                          created_at:
                                                              __field8,
                                                          emojis: __field9,
                                                          replies_count:
                                                              __field10,
                                                          reblogs_count:
                                                              __field11,
                                                          favourites_count:
                                                              __field12,
                                                          reblogged:
                                                              __field13,
                                                          favourited:
                                                              __field14,
                                                          sensitive:
                                                              __field15,
                                                          spoiler_text:
                                                              __field16,
                                                          visibility:
                                                              __field17,
                                                          media_attachments:
                                                              __field18,
                                                          mentions: __field19,
                                                          tags: __field20,
                                                          card: __field21,
                                                          application:
                                                              __field22,
                                                          language: __field23,
                                                          pinned: __field24,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["id", "uri", "url", "account", "in_reply_to_id",
                              "in_reply_to_account_id", "reblog", "content",
                              "created_at", "emojis", "replies_count",
                              "reblogs_count", "favourites_count",
                              "reblogged", "favourited", "sensitive",
                              "spoiler_text", "visibility",
                              "media_attachments", "mentions", "tags", "card",
                              "application", "language", "pinned"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Status",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Status>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Status { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Status {
            #[inline]
            fn eq(&self, other: &Status) -> bool {
                match *other {
                    Status {
                    id: ref __self_1_0,
                    uri: ref __self_1_1,
                    url: ref __self_1_2,
                    account: ref __self_1_3,
                    in_reply_to_id: ref __self_1_4,
                    in_reply_to_account_id: ref __self_1_5,
                    reblog: ref __self_1_6,
                    content: ref __self_1_7,
                    created_at: ref __self_1_8,
                    emojis: ref __self_1_9,
                    replies_count: ref __self_1_10,
                    reblogs_count: ref __self_1_11,
                    favourites_count: ref __self_1_12,
                    reblogged: ref __self_1_13,
                    favourited: ref __self_1_14,
                    sensitive: ref __self_1_15,
                    spoiler_text: ref __self_1_16,
                    visibility: ref __self_1_17,
                    media_attachments: ref __self_1_18,
                    mentions: ref __self_1_19,
                    tags: ref __self_1_20,
                    card: ref __self_1_21,
                    application: ref __self_1_22,
                    language: ref __self_1_23,
                    pinned: ref __self_1_24 } =>
                    match *self {
                        Status {
                        id: ref __self_0_0,
                        uri: ref __self_0_1,
                        url: ref __self_0_2,
                        account: ref __self_0_3,
                        in_reply_to_id: ref __self_0_4,
                        in_reply_to_account_id: ref __self_0_5,
                        reblog: ref __self_0_6,
                        content: ref __self_0_7,
                        created_at: ref __self_0_8,
                        emojis: ref __self_0_9,
                        replies_count: ref __self_0_10,
                        reblogs_count: ref __self_0_11,
                        favourites_count: ref __self_0_12,
                        reblogged: ref __self_0_13,
                        favourited: ref __self_0_14,
                        sensitive: ref __self_0_15,
                        spoiler_text: ref __self_0_16,
                        visibility: ref __self_0_17,
                        media_attachments: ref __self_0_18,
                        mentions: ref __self_0_19,
                        tags: ref __self_0_20,
                        card: ref __self_0_21,
                        application: ref __self_0_22,
                        language: ref __self_0_23,
                        pinned: ref __self_0_24 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6) &&
                            (*__self_0_7) == (*__self_1_7) &&
                            (*__self_0_8) == (*__self_1_8) &&
                            (*__self_0_9) == (*__self_1_9) &&
                            (*__self_0_10) == (*__self_1_10) &&
                            (*__self_0_11) == (*__self_1_11) &&
                            (*__self_0_12) == (*__self_1_12) &&
                            (*__self_0_13) == (*__self_1_13) &&
                            (*__self_0_14) == (*__self_1_14) &&
                            (*__self_0_15) == (*__self_1_15) &&
                            (*__self_0_16) == (*__self_1_16) &&
                            (*__self_0_17) == (*__self_1_17) &&
                            (*__self_0_18) == (*__self_1_18) &&
                            (*__self_0_19) == (*__self_1_19) &&
                            (*__self_0_20) == (*__self_1_20) &&
                            (*__self_0_21) == (*__self_1_21) &&
                            (*__self_0_22) == (*__self_1_22) &&
                            (*__self_0_23) == (*__self_1_23) &&
                            (*__self_0_24) == (*__self_1_24),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Status) -> bool {
                match *other {
                    Status {
                    id: ref __self_1_0,
                    uri: ref __self_1_1,
                    url: ref __self_1_2,
                    account: ref __self_1_3,
                    in_reply_to_id: ref __self_1_4,
                    in_reply_to_account_id: ref __self_1_5,
                    reblog: ref __self_1_6,
                    content: ref __self_1_7,
                    created_at: ref __self_1_8,
                    emojis: ref __self_1_9,
                    replies_count: ref __self_1_10,
                    reblogs_count: ref __self_1_11,
                    favourites_count: ref __self_1_12,
                    reblogged: ref __self_1_13,
                    favourited: ref __self_1_14,
                    sensitive: ref __self_1_15,
                    spoiler_text: ref __self_1_16,
                    visibility: ref __self_1_17,
                    media_attachments: ref __self_1_18,
                    mentions: ref __self_1_19,
                    tags: ref __self_1_20,
                    card: ref __self_1_21,
                    application: ref __self_1_22,
                    language: ref __self_1_23,
                    pinned: ref __self_1_24 } =>
                    match *self {
                        Status {
                        id: ref __self_0_0,
                        uri: ref __self_0_1,
                        url: ref __self_0_2,
                        account: ref __self_0_3,
                        in_reply_to_id: ref __self_0_4,
                        in_reply_to_account_id: ref __self_0_5,
                        reblog: ref __self_0_6,
                        content: ref __self_0_7,
                        created_at: ref __self_0_8,
                        emojis: ref __self_0_9,
                        replies_count: ref __self_0_10,
                        reblogs_count: ref __self_0_11,
                        favourites_count: ref __self_0_12,
                        reblogged: ref __self_0_13,
                        favourited: ref __self_0_14,
                        sensitive: ref __self_0_15,
                        spoiler_text: ref __self_0_16,
                        visibility: ref __self_0_17,
                        media_attachments: ref __self_0_18,
                        mentions: ref __self_0_19,
                        tags: ref __self_0_20,
                        card: ref __self_0_21,
                        application: ref __self_0_22,
                        language: ref __self_0_23,
                        pinned: ref __self_0_24 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6) ||
                            (*__self_0_7) != (*__self_1_7) ||
                            (*__self_0_8) != (*__self_1_8) ||
                            (*__self_0_9) != (*__self_1_9) ||
                            (*__self_0_10) != (*__self_1_10) ||
                            (*__self_0_11) != (*__self_1_11) ||
                            (*__self_0_12) != (*__self_1_12) ||
                            (*__self_0_13) != (*__self_1_13) ||
                            (*__self_0_14) != (*__self_1_14) ||
                            (*__self_0_15) != (*__self_1_15) ||
                            (*__self_0_16) != (*__self_1_16) ||
                            (*__self_0_17) != (*__self_1_17) ||
                            (*__self_0_18) != (*__self_1_18) ||
                            (*__self_0_19) != (*__self_1_19) ||
                            (*__self_0_20) != (*__self_1_20) ||
                            (*__self_0_21) != (*__self_1_21) ||
                            (*__self_0_22) != (*__self_1_22) ||
                            (*__self_0_23) != (*__self_1_23) ||
                            (*__self_0_24) != (*__self_1_24),
                    },
                }
            }
        }
        /// A mention of another user.
        pub struct Mention {
            /// URL of user's profile (can be remote).
            pub url: String,
            /// The username of the account.
            pub username: String,
            /// Equals `username` for local users, includes `@domain` for remote ones.
            pub acct: String,
            /// Account ID.
            pub id: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Mention {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Mention {
                    url: ref __self_0_0,
                    username: ref __self_0_1,
                    acct: ref __self_0_2,
                    id: ref __self_0_3 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Mention");
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("username",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("acct",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_3));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Mention {
            #[inline]
            fn clone(&self) -> Mention {
                match *self {
                    Mention {
                    url: ref __self_0_0,
                    username: ref __self_0_1,
                    acct: ref __self_0_2,
                    id: ref __self_0_3 } =>
                    Mention{url: ::core::clone::Clone::clone(&(*__self_0_0)),
                            username:
                                ::core::clone::Clone::clone(&(*__self_0_1)),
                            acct: ::core::clone::Clone::clone(&(*__self_0_2)),
                            id: ::core::clone::Clone::clone(&(*__self_0_3)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Mention: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Mention {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __field3,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    3u64 =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 4")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "url" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "username" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "acct" =>
                                    _serde::export::Ok(__Field::__field2),
                                    "id" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"username" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"acct" =>
                                    _serde::export::Ok(__Field::__field2),
                                    b"id" =>
                                    _serde::export::Ok(__Field::__field3),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Mention>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Mention;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Mention")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Mention with 4 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Mention with 4 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Mention with 4 elements"));
                                        }
                                    };
                                let __field3 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(3usize,
                                                                                                         &"struct Mention with 4 elements"));
                                        }
                                    };
                                _serde::export::Ok(Mention{url: __field0,
                                                           username: __field1,
                                                           acct: __field2,
                                                           id: __field3,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field3:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("username"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("acct"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field3 => {
                                            if _serde::export::Option::is_some(&__field3)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("id"));
                                            }
                                            __field3 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("username")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("acct")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field3 =
                                    match __field3 {
                                        _serde::export::Some(__field3) =>
                                        __field3,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("id")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Mention{url: __field0,
                                                           username: __field1,
                                                           acct: __field2,
                                                           id: __field3,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["url", "username", "acct", "id"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Mention",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Mention>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Mention { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Mention {
            #[inline]
            fn eq(&self, other: &Mention) -> bool {
                match *other {
                    Mention {
                    url: ref __self_1_0,
                    username: ref __self_1_1,
                    acct: ref __self_1_2,
                    id: ref __self_1_3 } =>
                    match *self {
                        Mention {
                        url: ref __self_0_0,
                        username: ref __self_0_1,
                        acct: ref __self_0_2,
                        id: ref __self_0_3 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Mention) -> bool {
                match *other {
                    Mention {
                    url: ref __self_1_0,
                    username: ref __self_1_1,
                    acct: ref __self_1_2,
                    id: ref __self_1_3 } =>
                    match *self {
                        Mention {
                        url: ref __self_0_0,
                        username: ref __self_0_1,
                        acct: ref __self_0_2,
                        id: ref __self_0_3 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3),
                    },
                }
            }
        }
        /// Struct representing an emoji within text.
        pub struct Emoji {
            /// The shortcode of the emoji
            pub shortcode: String,
            /// URL to the emoji static image
            pub static_url: String,
            /// URL to the emoji image
            pub url: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Emoji {
            #[inline]
            fn clone(&self) -> Emoji {
                match *self {
                    Emoji {
                    shortcode: ref __self_0_0,
                    static_url: ref __self_0_1,
                    url: ref __self_0_2 } =>
                    Emoji{shortcode:
                              ::core::clone::Clone::clone(&(*__self_0_0)),
                          static_url:
                              ::core::clone::Clone::clone(&(*__self_0_1)),
                          url: ::core::clone::Clone::clone(&(*__self_0_2)),},
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Emoji {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Emoji {
                    shortcode: ref __self_0_0,
                    static_url: ref __self_0_1,
                    url: ref __self_0_2 } => {
                        let mut debug_trait_builder = f.debug_struct("Emoji");
                        let _ =
                            debug_trait_builder.field("shortcode",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("static_url",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_2));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Emoji: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Emoji {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field {
                            __field0,
                            __field1,
                            __field2,
                            __ignore,
                        }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    2u64 =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 3")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "shortcode" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "static_url" =>
                                    _serde::export::Ok(__Field::__field1),
                                    "url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"shortcode" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"static_url" =>
                                    _serde::export::Ok(__Field::__field1),
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field2),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Emoji>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Emoji;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Emoji")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Emoji with 3 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Emoji with 3 elements"));
                                        }
                                    };
                                let __field2 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(2usize,
                                                                                                         &"struct Emoji with 3 elements"));
                                        }
                                    };
                                _serde::export::Ok(Emoji{shortcode: __field0,
                                                         static_url: __field1,
                                                         url: __field2,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field2:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("shortcode"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("static_url"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field2 => {
                                            if _serde::export::Option::is_some(&__field2)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field2 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("shortcode")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("static_url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field2 =
                                    match __field2 {
                                        _serde::export::Some(__field2) =>
                                        __field2,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Emoji{shortcode: __field0,
                                                         static_url: __field1,
                                                         url: __field2,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["shortcode", "static_url", "url"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Emoji",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Emoji>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Emoji { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Emoji {
            #[inline]
            fn eq(&self, other: &Emoji) -> bool {
                match *other {
                    Emoji {
                    shortcode: ref __self_1_0,
                    static_url: ref __self_1_1,
                    url: ref __self_1_2 } =>
                    match *self {
                        Emoji {
                        shortcode: ref __self_0_0,
                        static_url: ref __self_0_1,
                        url: ref __self_0_2 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Emoji) -> bool {
                match *other {
                    Emoji {
                    shortcode: ref __self_1_0,
                    static_url: ref __self_1_1,
                    url: ref __self_1_2 } =>
                    match *self {
                        Emoji {
                        shortcode: ref __self_0_0,
                        static_url: ref __self_0_1,
                        url: ref __self_0_2 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2),
                    },
                }
            }
        }
        /// Hashtags in the status.
        pub struct Tag {
            /// The hashtag, not including the preceding `#`.
            pub name: String,
            /// The URL of the hashtag.
            pub url: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Tag {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Tag { name: ref __self_0_0, url: ref __self_0_1 } => {
                        let mut debug_trait_builder = f.debug_struct("Tag");
                        let _ =
                            debug_trait_builder.field("name",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("url", &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Tag {
            #[inline]
            fn clone(&self) -> Tag {
                match *self {
                    Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
                    Tag{name: ::core::clone::Clone::clone(&(*__self_0_0)),
                        url: ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Tag: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Tag {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "url" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"url" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Tag>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Tag;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Tag")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Tag with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Tag with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(Tag{name: __field0,
                                                       url: __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("name"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("url"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("url")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Tag{name: __field0,
                                                       url: __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["name", "url"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Tag",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Tag>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Tag { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Tag {
            #[inline]
            fn eq(&self, other: &Tag) -> bool {
                match *other {
                    Tag { name: ref __self_1_0, url: ref __self_1_1 } =>
                    match *self {
                        Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Tag) -> bool {
                match *other {
                    Tag { name: ref __self_1_0, url: ref __self_1_1 } =>
                    match *self {
                        Tag { name: ref __self_0_0, url: ref __self_0_1 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
        /// Application details.
        pub struct Application {
            /// Name of the application.
            pub name: String,
            /// Homepage URL of the application.
            pub website: Option<String>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Application {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Application {
                    name: ref __self_0_0, website: ref __self_0_1 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("Application");
                        let _ =
                            debug_trait_builder.field("name",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("website",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Application {
            #[inline]
            fn clone(&self) -> Application {
                match *self {
                    Application {
                    name: ref __self_0_0, website: ref __self_0_1 } =>
                    Application{name:
                                    ::core::clone::Clone::clone(&(*__self_0_0)),
                                website:
                                    ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_DESERIALIZE_FOR_Application: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'de> _serde::Deserialize<'de> for Application {
                    fn deserialize<__D>(__deserializer: __D)
                     -> _serde::export::Result<Self, __D::Error> where
                     __D: _serde::Deserializer<'de> {
                        #[allow(non_camel_case_types)]
                        enum __Field { __field0, __field1, __ignore, }
                        struct __FieldVisitor;
                        impl <'de> _serde::de::Visitor<'de> for __FieldVisitor
                         {
                            type Value = __Field;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "field identifier")
                            }
                            fn visit_u64<__E>(self, __value: u64)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    0u64 =>
                                    _serde::export::Ok(__Field::__field0),
                                    1u64 =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ =>
                                    _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                         &"field index 0 <= i < 2")),
                                }
                            }
                            fn visit_str<__E>(self, __value: &str)
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    "name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    "website" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                            fn visit_bytes<__E>(self, __value: &[u8])
                             -> _serde::export::Result<Self::Value, __E> where
                             __E: _serde::de::Error {
                                match __value {
                                    b"name" =>
                                    _serde::export::Ok(__Field::__field0),
                                    b"website" =>
                                    _serde::export::Ok(__Field::__field1),
                                    _ => {
                                        _serde::export::Ok(__Field::__ignore)
                                    }
                                }
                            }
                        }
                        impl <'de> _serde::Deserialize<'de> for __Field {
                            #[inline]
                            fn deserialize<__D>(__deserializer: __D)
                             -> _serde::export::Result<Self, __D::Error> where
                             __D: _serde::Deserializer<'de> {
                                _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                             __FieldVisitor)
                            }
                        }
                        struct __Visitor<'de> {
                            marker: _serde::export::PhantomData<Application>,
                            lifetime: _serde::export::PhantomData<&'de ()>,
                        }
                        impl <'de> _serde::de::Visitor<'de> for __Visitor<'de>
                         {
                            type Value = Application;
                            fn expecting(&self,
                                         __formatter:
                                             &mut _serde::export::Formatter)
                             -> _serde::export::fmt::Result {
                                _serde::export::Formatter::write_str(__formatter,
                                                                     "struct Application")
                            }
                            #[inline]
                            fn visit_seq<__A>(self, mut __seq: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::SeqAccess<'de> {
                                let __field0 =
                                    match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                         &"struct Application with 2 elements"));
                                        }
                                    };
                                let __field1 =
                                    match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                        _serde::export::Some(__value) =>
                                        __value,
                                        _serde::export::None => {
                                            return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                         &"struct Application with 2 elements"));
                                        }
                                    };
                                _serde::export::Ok(Application{name: __field0,
                                                               website:
                                                                   __field1,})
                            }
                            #[inline]
                            fn visit_map<__A>(self, mut __map: __A)
                             ->
                                 _serde::export::Result<Self::Value,
                                                        __A::Error> where
                             __A: _serde::de::MapAccess<'de> {
                                let mut __field0:
                                        _serde::export::Option<String> =
                                    _serde::export::None;
                                let mut __field1:
                                        _serde::export::Option<Option<String>> =
                                    _serde::export::None;
                                while let _serde::export::Some(__key) =
                                          match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                              {
                                              _serde::export::Ok(__val) =>
                                              __val,
                                              _serde::export::Err(__err) => {
                                                  return _serde::export::Err(__err);
                                              }
                                          } {
                                    match __key {
                                        __Field::__field0 => {
                                            if _serde::export::Option::is_some(&__field0)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("name"));
                                            }
                                            __field0 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        __Field::__field1 => {
                                            if _serde::export::Option::is_some(&__field1)
                                               {
                                                return _serde::export::Err(<__A::Error
                                                                               as
                                                                               _serde::de::Error>::duplicate_field("website"));
                                            }
                                            __field1 =
                                                _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                         {
                                                                         _serde::export::Ok(__val)
                                                                         =>
                                                                         __val,
                                                                         _serde::export::Err(__err)
                                                                         => {
                                                                             return _serde::export::Err(__err);
                                                                         }
                                                                     });
                                        }
                                        _ => {
                                            let _ =
                                                match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                    {
                                                    _serde::export::Ok(__val)
                                                    => __val,
                                                    _serde::export::Err(__err)
                                                    => {
                                                        return _serde::export::Err(__err);
                                                    }
                                                };
                                        }
                                    }
                                }
                                let __field0 =
                                    match __field0 {
                                        _serde::export::Some(__field0) =>
                                        __field0,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("name")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                let __field1 =
                                    match __field1 {
                                        _serde::export::Some(__field1) =>
                                        __field1,
                                        _serde::export::None =>
                                        match _serde::private::de::missing_field("website")
                                            {
                                            _serde::export::Ok(__val) =>
                                            __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                    };
                                _serde::export::Ok(Application{name: __field0,
                                                               website:
                                                                   __field1,})
                            }
                        }
                        const FIELDS: &'static [&'static str] =
                            &["name", "website"];
                        _serde::Deserializer::deserialize_struct(__deserializer,
                                                                 "Application",
                                                                 FIELDS,
                                                                 __Visitor{marker:
                                                                               _serde::export::PhantomData::<Application>,
                                                                           lifetime:
                                                                               _serde::export::PhantomData,})
                    }
                }
            };
        impl ::core::marker::StructuralPartialEq for Application { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Application {
            #[inline]
            fn eq(&self, other: &Application) -> bool {
                match *other {
                    Application {
                    name: ref __self_1_0, website: ref __self_1_1 } =>
                    match *self {
                        Application {
                        name: ref __self_0_0, website: ref __self_0_1 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Application) -> bool {
                match *other {
                    Application {
                    name: ref __self_1_0, website: ref __self_1_1 } =>
                    match *self {
                        Application {
                        name: ref __self_0_0, website: ref __self_0_1 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
    }
    /// An empty JSON object.
    pub struct Empty {
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_Empty: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for Empty {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field { __ignore, }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "field identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"field index 0 <= i < 0")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<Empty>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = Empty;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "struct Empty")
                        }
                        #[inline]
                        fn visit_seq<__A>(self, _: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::SeqAccess<'de> {
                            _serde::export::Ok(Empty{})
                        }
                        #[inline]
                        fn visit_map<__A>(self, mut __map: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::MapAccess<'de> {
                            while let _serde::export::Some(__key) =
                                      match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                match __key {
                                    _ => {
                                        let _ =
                                            match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                {
                                                _serde::export::Ok(__val) =>
                                                __val,
                                                _serde::export::Err(__err) =>
                                                {
                                                    return _serde::export::Err(__err);
                                                }
                                            };
                                    }
                                }
                            }
                            _serde::export::Ok(Empty{})
                        }
                    }
                    const FIELDS: &'static [&'static str] = &[];
                    _serde::Deserializer::deserialize_struct(__deserializer,
                                                             "Empty", FIELDS,
                                                             __Visitor{marker:
                                                                           _serde::export::PhantomData::<Empty>,
                                                                       lifetime:
                                                                           _serde::export::PhantomData,})
                }
            }
        };
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Empty {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                Empty {  } => {
                    let mut debug_trait_builder = f.debug_struct("Empty");
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::marker::Copy for Empty { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Empty {
        #[inline]
        fn clone(&self) -> Empty { { *self } }
    }
    impl ::core::marker::StructuralPartialEq for Empty { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Empty {
        #[inline]
        fn eq(&self, other: &Empty) -> bool {
            match *other {
                Empty {  } => match *self { Empty {  } => true, },
            }
        }
    }
    /// The purpose of this module is to alleviate imports of many common
    /// structs by adding a glob import to the top of mastodon heavy
    /// modules:
    pub mod prelude {
        pub use super::{account::{Account, Source},
                        attachment::{Attachment, MediaType}, card::Card,
                        context::Context, event::Event,
                        filter::{Filter, FilterContext}, instance::*,
                        list::List, mention::Mention,
                        notification::Notification, push::Subscription,
                        relationship::Relationship, report::Report,
                        search_result::{SearchResult, SearchResultV2},
                        status::{Application, Emoji, Status}, Empty};
    }
}
/// Errors
pub mod errors {
    use std::{error, fmt, io::Error as IoError};
    use hyper_old_types::Error as HeaderParseError;
    use reqwest::{header::ToStrError as HeaderStrError, Error as HttpError,
                  StatusCode};
    use serde_json::Error as SerdeError;
    use serde_qs::Error as SerdeQsError;
    use serde_urlencoded::ser::Error as UrlEncodedError;
    use url::ParseError as UrlError;
    use tungstenite::error::Error as WebSocketError;
    /// Convience type over `std::result::Result` with `Error` as the error type.
    pub type Result<T> = ::std::result::Result<T, Error>;
    /// enum of possible errors encountered using the mastodon API.
    pub enum Error {

        /// Error from the Mastodon API. This typically means something went
        /// wrong with your authentication or data.
        Api(ApiError),

        /// Error deserialising to json. Typically represents a breaking change in
        /// the Mastodon API
        Serde(SerdeError),

        /// Error serializing to url-encoded string
        UrlEncoded(UrlEncodedError),

        /// Error encountered in the HTTP backend while requesting a route.
        Http(HttpError),

        /// Wrapper around the `std::io::Error` struct.
        Io(IoError),

        /// Wrapper around the `url::ParseError` struct.
        Url(UrlError),

        /// Missing Client Id.
        ClientIdRequired,

        /// Missing Client Secret.
        ClientSecretRequired,

        /// Missing Access Token.
        AccessTokenRequired,

        /// Generic client error.
        Client(StatusCode),

        /// Generic server error.
        Server(StatusCode),

        /// MastodonBuilder & AppBuilder error
        MissingField(&'static str),

        /// Error converting an http header to a string
        HeaderStrError(HeaderStrError),

        /// Error parsing the http Link header
        HeaderParseError(HeaderParseError),

        /// Error serializing to a query string
        SerdeQs(SerdeQsError),

        /// WebSocket error
        WebSocket(WebSocketError),

        /// Other errors
        Other(String),
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Error {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match (&*self,) {
                (&Error::Api(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Api");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Serde(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Serde");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::UrlEncoded(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("UrlEncoded");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Http(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Http");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Io(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Io");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Url(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Url");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::ClientIdRequired,) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("ClientIdRequired");
                    debug_trait_builder.finish()
                }
                (&Error::ClientSecretRequired,) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("ClientSecretRequired");
                    debug_trait_builder.finish()
                }
                (&Error::AccessTokenRequired,) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("AccessTokenRequired");
                    debug_trait_builder.finish()
                }
                (&Error::Client(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Client");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Server(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Server");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::MissingField(ref __self_0),) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("MissingField");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::HeaderStrError(ref __self_0),) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("HeaderStrError");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::HeaderParseError(ref __self_0),) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("HeaderParseError");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::SerdeQs(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("SerdeQs");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::WebSocket(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("WebSocket");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Error::Other(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Other");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    impl fmt::Display for Error {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
                                                       &match (&self,) {
                                                            (arg0,) =>
                                                            [::core::fmt::ArgumentV1::new(arg0,
                                                                                          ::core::fmt::Debug::fmt)],
                                                        }))
        }
    }
    impl error::Error for Error {
        fn source(&self) -> Option<&(dyn error::Error + 'static)> {
            Some(match *self {
                     Error::Api(ref e) => e,
                     Error::Serde(ref e) => e,
                     Error::UrlEncoded(ref e) => e,
                     Error::Http(ref e) => e,
                     Error::Io(ref e) => e,
                     Error::Url(ref e) => e,
                     Error::HeaderStrError(ref e) => e,
                     Error::HeaderParseError(ref e) => e,
                     Error::SerdeQs(ref e) => e,
                     Error::WebSocket(ref e) => e,
                     Error::Client(..) | Error::Server(..) => { return None }
                     Error::ClientIdRequired => return None,
                     Error::ClientSecretRequired => return None,
                     Error::AccessTokenRequired => return None,
                     Error::MissingField(_) => return None,
                     Error::Other(..) => return None,
                 })
        }
    }
    /// Error returned from the Mastodon API.
    pub struct ApiError {
        /// The type of error.
        pub error: Option<String>,
        /// The description of the error.
        pub error_description: Option<String>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for ApiError {
        #[inline]
        fn clone(&self) -> ApiError {
            match *self {
                ApiError {
                error: ref __self_0_0, error_description: ref __self_0_1 } =>
                ApiError{error: ::core::clone::Clone::clone(&(*__self_0_0)),
                         error_description:
                             ::core::clone::Clone::clone(&(*__self_0_1)),},
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for ApiError {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                ApiError {
                error: ref __self_0_0, error_description: ref __self_0_1 } =>
                {
                    let mut debug_trait_builder = f.debug_struct("ApiError");
                    let _ =
                        debug_trait_builder.field("error", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("error_description",
                                                  &&(*__self_0_1));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_ApiError: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for ApiError {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field { __field0, __field1, __ignore, }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "field identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                0u64 => _serde::export::Ok(__Field::__field0),
                                1u64 => _serde::export::Ok(__Field::__field1),
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"field index 0 <= i < 2")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                "error" =>
                                _serde::export::Ok(__Field::__field0),
                                "error_description" =>
                                _serde::export::Ok(__Field::__field1),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                b"error" =>
                                _serde::export::Ok(__Field::__field0),
                                b"error_description" =>
                                _serde::export::Ok(__Field::__field1),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<ApiError>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = ApiError;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "struct ApiError")
                        }
                        #[inline]
                        fn visit_seq<__A>(self, mut __seq: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::SeqAccess<'de> {
                            let __field0 =
                                match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                     &"struct ApiError with 2 elements"));
                                    }
                                };
                            let __field1 =
                                match match _serde::de::SeqAccess::next_element::<Option<String>>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                     &"struct ApiError with 2 elements"));
                                    }
                                };
                            _serde::export::Ok(ApiError{error: __field0,
                                                        error_description:
                                                            __field1,})
                        }
                        #[inline]
                        fn visit_map<__A>(self, mut __map: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::MapAccess<'de> {
                            let mut __field0:
                                    _serde::export::Option<Option<String>> =
                                _serde::export::None;
                            let mut __field1:
                                    _serde::export::Option<Option<String>> =
                                _serde::export::None;
                            while let _serde::export::Some(__key) =
                                      match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                match __key {
                                    __Field::__field0 => {
                                        if _serde::export::Option::is_some(&__field0)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("error"));
                                        }
                                        __field0 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field1 => {
                                        if _serde::export::Option::is_some(&__field1)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("error_description"));
                                        }
                                        __field1 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<Option<String>>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    _ => {
                                        let _ =
                                            match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                {
                                                _serde::export::Ok(__val) =>
                                                __val,
                                                _serde::export::Err(__err) =>
                                                {
                                                    return _serde::export::Err(__err);
                                                }
                                            };
                                    }
                                }
                            }
                            let __field0 =
                                match __field0 {
                                    _serde::export::Some(__field0) =>
                                    __field0,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("error")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field1 =
                                match __field1 {
                                    _serde::export::Some(__field1) =>
                                    __field1,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("error_description")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            _serde::export::Ok(ApiError{error: __field0,
                                                        error_description:
                                                            __field1,})
                        }
                    }
                    const FIELDS: &'static [&'static str] =
                        &["error", "error_description"];
                    _serde::Deserializer::deserialize_struct(__deserializer,
                                                             "ApiError",
                                                             FIELDS,
                                                             __Visitor{marker:
                                                                           _serde::export::PhantomData::<ApiError>,
                                                                       lifetime:
                                                                           _serde::export::PhantomData,})
                }
            }
        };
    impl fmt::Display for ApiError {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
                                                       &match (&self,) {
                                                            (arg0,) =>
                                                            [::core::fmt::ArgumentV1::new(arg0,
                                                                                          ::core::fmt::Debug::fmt)],
                                                        }))
        }
    }
    impl error::Error for ApiError { }
    macro_rules! from {
        ($ ($ (# [$ met : meta]) * $ typ : ident, $ variant : ident,) *) =>
        {
            $
            ($ (# [$ met]) * impl From < $ typ > for Error
             {
                 fn from(from : $ typ) -> Self
                 { use crate :: Error :: * ; $ variant(from) }
             }) *
        }
    }
    impl From<HttpError> for Error {
        fn from(from: HttpError) -> Self {
            use crate::Error::*;
            Http(from)
        }
    }
    impl From<IoError> for Error {
        fn from(from: IoError) -> Self {
            use crate::Error::*;
            Io(from)
        }
    }
    impl From<SerdeError> for Error {
        fn from(from: SerdeError) -> Self {
            use crate::Error::*;
            Serde(from)
        }
    }
    impl From<UrlEncodedError> for Error {
        fn from(from: UrlEncodedError) -> Self {
            use crate::Error::*;
            UrlEncoded(from)
        }
    }
    impl From<UrlError> for Error {
        fn from(from: UrlError) -> Self {
            use crate::Error::*;
            Url(from)
        }
    }
    impl From<ApiError> for Error {
        fn from(from: ApiError) -> Self {
            use crate::Error::*;
            Api(from)
        }
    }
    impl From<HeaderStrError> for Error {
        fn from(from: HeaderStrError) -> Self {
            use crate::Error::*;
            HeaderStrError(from)
        }
    }
    impl From<HeaderParseError> for Error {
        fn from(from: HeaderParseError) -> Self {
            use crate::Error::*;
            HeaderParseError(from)
        }
    }
    impl From<SerdeQsError> for Error {
        fn from(from: SerdeQsError) -> Self {
            use crate::Error::*;
            SerdeQs(from)
        }
    }
    impl From<WebSocketError> for Error {
        fn from(from: WebSocketError) -> Self {
            use crate::Error::*;
            WebSocket(from)
        }
    }
    impl From<String> for Error {
        fn from(from: String) -> Self {
            use crate::Error::*;
            Other(from)
        }
    }
    #[macro_export]
    /// Used to easily create errors from strings
    macro_rules! format_err {
        ($ ($ arg : tt) *) =>
        { { use elefren :: Error ; Error :: Other(format ! ($ ($ arg) *)) } }
    }
}
/// Collection of helpers for serializing/deserializing `Data` objects
pub mod helpers {
    /// Helpers for working with the command line
    pub mod cli {
        use std::io::{self, BufRead, Write};
        use crate::errors::Result;
        use crate::registration::Registered;
        use crate::Mastodon;
        /// Finishes the authentication process for the given `Registered` object,
        /// using the command-line
        pub fn authenticate(registration: Registered) -> Result<Mastodon> {
            let url = registration.authorize_url()?;
            let stdout = io::stdout();
            let stdin = io::stdin();
            let mut stdout = stdout.lock();
            let mut stdin = stdin.lock();
            (&mut stdout).write_fmt(::core::fmt::Arguments::new_v1(&["Click this link to authorize: ",
                                                                     "\n"],
                                                                   &match (&url,)
                                                                        {
                                                                        (arg0,)
                                                                        =>
                                                                        [::core::fmt::ArgumentV1::new(arg0,
                                                                                                      ::core::fmt::Display::fmt)],
                                                                    }))?;
            (&mut stdout).write_fmt(::core::fmt::Arguments::new_v1(&["Paste the returned authorization code: "],
                                                                   &match () {
                                                                        () =>
                                                                        [],
                                                                    }))?;
            stdout.flush()?;
            let mut input = String::new();
            stdin.read_line(&mut input)?;
            let code = input.trim();
            Ok(registration.complete(code)?)
        }
    }
}
mod mastodon_client {
    use async_trait::async_trait;
    use std::borrow::Cow;
    use crate::entities::prelude::*;
    use crate::errors::Result;
    use crate::page::Page;
    use crate::requests::{AddFilterRequest, AddPushRequest, StatusesRequest,
                          UpdateCredsRequest, UpdatePushRequest};
    use crate::status_builder::NewStatus;
    #[doc =
      " Represents the set of methods that a Mastodon Client can do, so that"]
    #[doc = " implementations might be swapped out for testing"]
    #[allow(unused)]
    pub trait MastodonClient {
        #[doc = " GET /api/v1/favourites"]
        #[must_use]
        fn favourites<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Status>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __favourites<AsyncTrait: ?Sized + MastodonClient +
                                  ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Status>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__favourites::<Self>(self))
        }
        #[doc = " GET /api/v1/blocks"]
        #[must_use]
        fn blocks<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Account>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __blocks<AsyncTrait: ?Sized + MastodonClient +
                              ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Account>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__blocks::<Self>(self))
        }
        #[doc = " GET /api/v1/domain_blocks"]
        #[must_use]
        fn domain_blocks<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         String>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __domain_blocks<AsyncTrait: ?Sized + MastodonClient +
                                     ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, String>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__domain_blocks::<Self>(self))
        }
        #[doc = " GET /api/v1/follow_requests"]
        #[must_use]
        fn follow_requests<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Account>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __follow_requests<AsyncTrait: ?Sized + MastodonClient +
                                       ::core::marker::Sync>(_self:
                                                                 &AsyncTrait)
             -> Result<Page<'_, Account>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__follow_requests::<Self>(self))
        }
        #[doc = " GET /api/v1/timelines/home"]
        #[must_use]
        fn get_home_timeline<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Status>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __get_home_timeline<AsyncTrait: ?Sized + MastodonClient +
                                         ::core::marker::Sync>(_self:
                                                                   &AsyncTrait)
             -> Result<Page<'_, Status>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__get_home_timeline::<Self>(self))
        }
        #[doc = " GET /api/v1/custom_emojis"]
        #[must_use]
        fn get_emojis<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Emoji>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __get_emojis<AsyncTrait: ?Sized + MastodonClient +
                                  ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Emoji>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__get_emojis::<Self>(self))
        }
        #[doc = " GET /api/v1/mutes"]
        #[must_use]
        fn mutes<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Account>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __mutes<AsyncTrait: ?Sized + MastodonClient +
                             ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Account>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__mutes::<Self>(self))
        }
        #[doc = " GET /api/v1/notifications"]
        #[must_use]
        fn notifications<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Notification>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __notifications<AsyncTrait: ?Sized + MastodonClient +
                                     ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Notification>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__notifications::<Self>(self))
        }
        #[doc = " GET /api/v1/reports"]
        #[must_use]
        fn reports<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Report>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __reports<AsyncTrait: ?Sized + MastodonClient +
                               ::core::marker::Sync>(_self: &AsyncTrait)
             -> Result<Page<'_, Report>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__reports::<Self>(self))
        }
        #[doc = " GET /api/v1/accounts/:id/followers"]
        fn followers(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/following"]
        fn following(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/statuses/:id/reblogged_by"]
        fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/statuses/:id/favourited_by"]
        fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " DELETE /api/v1/domain_blocks"]
        fn unblock_domain(&self, domain: String) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/instance"]
        fn instance(&self) -> Result<Instance> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/verify_credentials"]
        fn verify_credentials(&self) -> Result<Account> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/reports"]
        fn report(&self, account_id: &str, status_ids: Vec<&str>,
                  comment: String) -> Result<Report> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/domain_blocks"]
        fn block_domain(&self, domain: String) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/accounts/follow_requests/authorize"]
        fn authorize_follow_request(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/accounts/follow_requests/reject"]
        fn reject_follow_request(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/search"]
        fn search<'a>(&self, q: &'a str, resolve: bool)
         -> Result<SearchResult> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v2/search"]
        fn search_v2<'a>(&self, q: &'a str, resolve: bool)
         -> Result<SearchResultV2> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/follows"]
        fn follows(&self, uri: Cow<'static, str>) -> Result<Account> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/media"]
        fn media(&self, file: Cow<'static, str>) -> Result<Attachment> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/notifications/clear"]
        fn clear_notifications(&self) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/notifications/dismiss"]
        fn dismiss_notification(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id"]
        fn get_account(&self, id: &str) -> Result<Account> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/accounts/:id/follow"]
        fn follow(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/accounts/:id/unfollow"]
        fn unfollow(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/block"]
        fn block(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/unblock"]
        fn unblock(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/mute"]
        fn mute(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/unmute"]
        fn unmute(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/notifications/:id"]
        fn get_notification(&self, id: &str) -> Result<Notification> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/statuses/:id"]
        fn get_status(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/statuses/:id/context"]
        fn get_context(&self, id: &str) -> Result<Context> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/statuses/:id/card"]
        fn get_card(&self, id: &str) -> Result<Card> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/statuses/:id/reblog"]
        fn reblog(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/statuses/:id/unreblog"]
        fn unreblog(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/statuses/:id/favourite"]
        fn favourite(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/statuses/:id/unfavourite"]
        fn unfavourite(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " DELETE /api/v1/statuses/:id"]
        fn delete_status(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " PATCH /api/v1/accounts/update_credentials"]
        fn update_credentials(&self, builder: &mut UpdateCredsRequest)
         -> Result<Account> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/statuses"]
        fn new_status(&self, status: NewStatus) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/timelines/public"]
        fn get_public_timeline(&self, local: bool) -> Result<Vec<Status>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/timelines/tag/:hashtag"]
        fn get_tagged_timeline(&self, hashtag: String, local: bool)
         -> Result<Vec<Status>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/:id/statuses"]
        fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S)
         -> Result<Page<Status>> where S: Into<Option<StatusesRequest<'a>>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/accounts/relationships"]
        fn relationships(&self, ids: &[&str]) -> Result<Page<Relationship>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc =
          " GET /api/v1/accounts/search?q=:query&limit=:limit&following=:following"]
        #[must_use]
        fn search_accounts<'life0, 'life1,
                           'async_trait>(&'life0 self, query: &'life1 str,
                                         limit: Option<u64>, following: bool)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Account>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, 'life1: 'async_trait,
         Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __search_accounts<AsyncTrait: ?Sized + MastodonClient +
                                       ::core::marker::Sync>(_self:
                                                                 &AsyncTrait,
                                                             query: &str,
                                                             limit:
                                                                 Option<u64>,
                                                             following: bool)
             -> Result<Page<'_, Account>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__search_accounts::<Self>(self, query, limit, following))
        }
        #[doc = " POST /api/v1/push/subscription"]
        fn add_push_subscription(&self, request: &AddPushRequest)
         -> Result<Subscription> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " PUT /api/v1/push/subscription"]
        fn update_push_data(&self, request: &UpdatePushRequest)
         -> Result<Subscription> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/push/subscription"]
        fn get_push_subscription(&self) -> Result<Subscription> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " DELETE /api/v1/push/subscription"]
        fn delete_push_subscription(&self) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/filters"]
        fn get_filters(&self) -> Result<Vec<Filter>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/filters"]
        fn add_filter(&self, request: &mut AddFilterRequest)
         -> Result<Filter> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/filters/:id"]
        fn get_filter(&self, id: &str) -> Result<Filter> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " PUT /api/v1/filters/:id"]
        fn update_filter(&self, id: &str, request: &mut AddFilterRequest)
         -> Result<Filter> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " DELETE /api/v1/filters/:id"]
        fn delete_filter(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/suggestions"]
        fn get_follow_suggestions(&self) -> Result<Vec<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " DELETE /api/v1/suggestions/:account_id"]
        fn delete_from_suggestions(&self, id: &str) -> Result<Empty> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " GET /api/v1/endorsements"]
        #[must_use]
        fn get_endorsements<'life0, 'async_trait>(&'life0 self)
         ->
             ::core::pin::Pin<Box<dyn ::core::future::Future<Output =
                                                             Result<Page<'_,
                                                                         Account>>> +
                                  ::core::marker::Send + 'async_trait>> where
         'life0: 'async_trait, Self: ::core::marker::Sync + 'async_trait {
            #[allow(clippy :: missing_docs_in_private_items, clippy ::
                    type_repetition_in_bounds, clippy ::
                    used_underscore_binding,)]
            async fn __get_endorsements<AsyncTrait: ?Sized + MastodonClient +
                                        ::core::marker::Sync>(_self:
                                                                  &AsyncTrait)
             -> Result<Page<'_, Account>> {
                {
                    ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                               &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                       &match ()
                                                                                                                            {
                                                                                                                            ()
                                                                                                                            =>
                                                                                                                            [],
                                                                                                                        }),)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }))
                };
            }
            Box::pin(__get_endorsements::<Self>(self))
        }
        #[doc = " POST /api/v1/accounts/:id/pin"]
        fn endorse_user(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " POST /api/v1/accounts/:id/unpin"]
        fn unendorse_user(&self, id: &str) -> Result<Relationship> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc =
          " Shortcut for: `let me = client.verify_credentials(); client.followers()`"]
        #[doc = ""]
        #[doc = " ```no_run"]
        #[doc = " # extern crate elefren;"]
        #[doc = " # use std::error::Error;"]
        #[doc = " # use elefren::prelude::*;"]
        #[doc = " # fn main() -> Result<(), Box<Error>> {"]
        #[doc = " # let data = Data {"]
        #[doc = " #   base: \"\".into(),"]
        #[doc = " #   client_id: \"\".into(),"]
        #[doc = " #   client_secret: \"\".into(),"]
        #[doc = " #   redirect: \"\".into(),"]
        #[doc = " #   token: \"\".into(),"]
        #[doc = " # };"]
        #[doc = " # let client = Mastodon::from(data);"]
        #[doc = " let follows_me = client.follows_me()?;"]
        #[doc = " #   Ok(())"]
        #[doc = " # }"]
        fn follows_me(&self) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        #[doc = " Shortcut for"]
        #[doc =
          " `let me = client.verify_credentials(); client.following(&me.id)`"]
        #[doc = ""]
        #[doc = " ```no_run"]
        #[doc = " # extern crate elefren;"]
        #[doc = " # use std::error::Error;"]
        #[doc = " # use elefren::prelude::*;"]
        #[doc = " # fn main() -> Result<(), Box<Error>> {"]
        #[doc = " # let data = Data {"]
        #[doc = " #   base: \"\".into(),"]
        #[doc = " #   client_id: \"\".into(),"]
        #[doc = " #   client_secret: \"\".into(),"]
        #[doc = " #   redirect: \"\".into(),"]
        #[doc = " #   token: \"\".into(),"]
        #[doc = " # };"]
        #[doc = " # let client = Mastodon::from(data);"]
        #[doc = " let follows_me = client.followed_by_me()?;"]
        #[doc = " #   Ok(())"]
        #[doc = " # }"]
        fn followed_by_me(&self) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
    }
    /// Trait that represents clients that can make unauthenticated calls to a
    /// mastodon instance
    #[allow(unused)]
    pub trait MastodonUnauthenticated {
        /// GET /api/v1/statuses/:id
        fn get_status(&self, id: &str) -> Result<Status> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        /// GET /api/v1/statuses/:id/context
        fn get_context(&self, id: &str) -> Result<Context> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        /// GET /api/v1/statuses/:id/card
        fn get_card(&self, id: &str) -> Result<Card> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        /// GET /api/v1/statuses/:id/reblogged_by
        fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
        /// GET /api/v1/statuses/:id/favourited_by
        fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
            {
                ::std::rt::begin_panic_fmt(&::core::fmt::Arguments::new_v1(&["not implemented: "],
                                                                           &match (&::core::fmt::Arguments::new_v1(&["This method was not implemented"],
                                                                                                                   &match ()
                                                                                                                        {
                                                                                                                        ()
                                                                                                                        =>
                                                                                                                        [],
                                                                                                                    }),)
                                                                                {
                                                                                (arg0,)
                                                                                =>
                                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                                              ::core::fmt::Display::fmt)],
                                                                            }))
            };
        }
    }
}
/// Handling multiple pages of entities.
pub mod page {
    use super::{deserialise, Mastodon, Result};
    use hyper_old_types::header::{parsing, Link, RelationType};
    use reqwest::{header::LINK, Response};
    use serde::Deserialize;
    use url::Url;
    macro_rules! pages {
        ($ ($ direction : ident : $ fun : ident), *) =>
        {
            $
            (doc_comment !
             (concat !
              ("Method to retrieve the ", stringify ! ($ direction),
               " page of results"), pub async fn $ fun(& mut self) -> Result <
              Option < Vec < T >> >
              {
                  let url = match self . $ direction . take()
                  { Some(s) => s, None => return Ok(None), } ; let response =
                  self . mastodon . send(self . mastodon . client . get(url))
                  ? ; let(prev, next) = get_links(& response) ? ; self . next
                  = next ; self . prev = prev ; deserialise(response)
              }) ;) *
        }
    }
    /// Owned version of the `Page` struct in this module. Allows this to be more
    /// easily stored for later use
    ///
    /// # Example
    ///
    /// ```no_run
    /// # extern crate elefren;
    /// # use elefren::Mastodon;
    /// # use elefren::page::OwnedPage;
    /// # use elefren::entities::status::Status;
    /// # use std::cell::RefCell;
    /// # use elefren::prelude::*;
    /// # fn main() -> Result<(), elefren::Error> {
    /// # let data = Data {
    /// #   base: "".into(),
    /// #   client_id: "".into(),
    /// #   client_secret: "".into(),
    /// #   redirect: "".into(),
    /// #   token: "".into(),
    /// # };
    /// struct HomeTimeline {
    ///     client: Mastodon,
    ///     page: RefCell<Option<OwnedPage<Status>>>,
    /// }
    /// let client = Mastodon::from(data);
    /// let home = client.get_home_timeline()?.to_owned();
    /// let tl = HomeTimeline {
    ///     client,
    ///     page: RefCell::new(Some(home)),
    /// };
    /// # Ok(())
    /// # }
    /// ```
    pub struct OwnedPage<T: for<'de> Deserialize<'de>> {
        mastodon: Mastodon,
        next: Option<Url>,
        prev: Option<Url>,
        /// Initial set of items
        pub initial_items: Vec<T>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <T: ::core::fmt::Debug + for<'de> Deserialize<'de>>
     ::core::fmt::Debug for OwnedPage<T> {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                OwnedPage {
                mastodon: ref __self_0_0,
                next: ref __self_0_1,
                prev: ref __self_0_2,
                initial_items: ref __self_0_3 } => {
                    let mut debug_trait_builder = f.debug_struct("OwnedPage");
                    let _ =
                        debug_trait_builder.field("mastodon",
                                                  &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("next", &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("prev", &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("initial_items",
                                                  &&(*__self_0_3));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <T: ::core::clone::Clone + for<'de> Deserialize<'de>>
     ::core::clone::Clone for OwnedPage<T> {
        #[inline]
        fn clone(&self) -> OwnedPage<T> {
            match *self {
                OwnedPage {
                mastodon: ref __self_0_0,
                next: ref __self_0_1,
                prev: ref __self_0_2,
                initial_items: ref __self_0_3 } =>
                OwnedPage{mastodon:
                              ::core::clone::Clone::clone(&(*__self_0_0)),
                          next: ::core::clone::Clone::clone(&(*__self_0_1)),
                          prev: ::core::clone::Clone::clone(&(*__self_0_2)),
                          initial_items:
                              ::core::clone::Clone::clone(&(*__self_0_3)),},
            }
        }
    }
    impl <T: for<'de> Deserialize<'de>> OwnedPage<T> {
        #[doc = "Method to retrieve the next page of results"]
        pub async fn next_page(&mut self) -> Result<Option<Vec<T>>> {
            let url =
                match self.next.take() {
                    Some(s) => s,
                    None => return Ok(None),
                };
            let response = self.mastodon.send(self.mastodon.client.get(url))?;
            let (prev, next) = get_links(&response)?;
            self.next = next;
            self.prev = prev;
            deserialise(response)
        }
        #[doc = "Method to retrieve the prev page of results"]
        pub async fn prev_page(&mut self) -> Result<Option<Vec<T>>> {
            let url =
                match self.prev.take() {
                    Some(s) => s,
                    None => return Ok(None),
                };
            let response = self.mastodon.send(self.mastodon.client.get(url))?;
            let (prev, next) = get_links(&response)?;
            self.next = next;
            self.prev = prev;
            deserialise(response)
        }
    }
    impl <'a, T: for<'de> Deserialize<'de>> From<Page<'a, T>> for OwnedPage<T>
     {
        fn from(page: Page<'a, T>) -> OwnedPage<T> {
            OwnedPage{mastodon: page.mastodon.clone(),
                      next: page.next,
                      prev: page.prev,
                      initial_items: page.initial_items,}
        }
    }
    /// Represents a single page of API results
    pub struct Page<'a, T: for<'de> Deserialize<'de>> {
        mastodon: &'a Mastodon,
        next: Option<Url>,
        prev: Option<Url>,
        /// Initial set of items
        pub initial_items: Vec<T>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a, T: ::core::fmt::Debug + for<'de> Deserialize<'de>>
     ::core::fmt::Debug for Page<'a, T> {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                Page {
                mastodon: ref __self_0_0,
                next: ref __self_0_1,
                prev: ref __self_0_2,
                initial_items: ref __self_0_3 } => {
                    let mut debug_trait_builder = f.debug_struct("Page");
                    let _ =
                        debug_trait_builder.field("mastodon",
                                                  &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("next", &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("prev", &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("initial_items",
                                                  &&(*__self_0_3));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a, T: ::core::clone::Clone + for<'de> Deserialize<'de>>
     ::core::clone::Clone for Page<'a, T> {
        #[inline]
        fn clone(&self) -> Page<'a, T> {
            match *self {
                Page {
                mastodon: ref __self_0_0,
                next: ref __self_0_1,
                prev: ref __self_0_2,
                initial_items: ref __self_0_3 } =>
                Page{mastodon: ::core::clone::Clone::clone(&(*__self_0_0)),
                     next: ::core::clone::Clone::clone(&(*__self_0_1)),
                     prev: ::core::clone::Clone::clone(&(*__self_0_2)),
                     initial_items:
                         ::core::clone::Clone::clone(&(*__self_0_3)),},
            }
        }
    }
    impl <'a, T: for<'de> Deserialize<'de>> Page<'a, T> {
        #[doc = "Method to retrieve the next page of results"]
        pub async fn next_page(&mut self) -> Result<Option<Vec<T>>> {
            let url =
                match self.next.take() {
                    Some(s) => s,
                    None => return Ok(None),
                };
            let response = self.mastodon.send(self.mastodon.client.get(url))?;
            let (prev, next) = get_links(&response)?;
            self.next = next;
            self.prev = prev;
            deserialise(response)
        }
        #[doc = "Method to retrieve the prev page of results"]
        pub async fn prev_page(&mut self) -> Result<Option<Vec<T>>> {
            let url =
                match self.prev.take() {
                    Some(s) => s,
                    None => return Ok(None),
                };
            let response = self.mastodon.send(self.mastodon.client.get(url))?;
            let (prev, next) = get_links(&response)?;
            self.next = next;
            self.prev = prev;
            deserialise(response)
        }
        pub(crate) fn new(mastodon: &'a Mastodon, response: Response)
         -> Result<Self> {
            let (prev, next) = get_links(&response)?;
            Ok(Page{initial_items: deserialise(response)?,
                    next,
                    prev,
                    mastodon,})
        }
    }
    impl <'a, T: Clone + for<'de> Deserialize<'de>> Page<'a, T> {
        /// Returns an owned version of this struct that doesn't borrow the client
        /// that created it
        ///
        /// # Example
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # use elefren::Mastodon;
        /// # use elefren::page::OwnedPage;
        /// # use elefren::entities::status::Status;
        /// # use std::cell::RefCell;
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// # let data = Data {
        /// #   base: "".into(),
        /// #   client_id: "".into(),
        /// #   client_secret: "".into(),
        /// #   redirect: "".into(),
        /// #   token: "".into(),
        /// # };
        /// struct HomeTimeline {
        ///     client: Mastodon,
        ///     page: RefCell<Option<OwnedPage<Status>>>,
        /// }
        /// let client = Mastodon::from(data);
        /// let home = client.get_home_timeline()?.to_owned();
        /// let tl = HomeTimeline {
        ///     client,
        ///     page: RefCell::new(Some(home)),
        /// };
        /// # Ok(())
        /// # }
        /// ```
        pub fn to_owned(self) -> OwnedPage<T> { OwnedPage::from(self) }
    }
    fn get_links(response: &Response) -> Result<(Option<Url>, Option<Url>)> {
        let mut prev = None;
        let mut next = None;
        if let Some(link_header) = response.headers().get(LINK) {
            let link_header = link_header.to_str()?;
            let link_header = link_header.as_bytes();
            let link_header: Link = parsing::from_raw_str(&link_header)?;
            for value in link_header.values() {
                if let Some(relations) = value.rel() {
                    if relations.contains(&RelationType::Next) {
                        next = Some(Url::parse(value.link())?);
                    }
                    if relations.contains(&RelationType::Prev) {
                        prev = Some(Url::parse(value.link())?);
                    }
                }
            }
        }
        Ok((prev, next))
    }
}
/// Registering your app.
pub mod registration {
    use std::borrow::Cow;
    use reqwest::{Client, RequestBuilder, Response};
    use try_from::TryInto;
    use url::percent_encoding::{utf8_percent_encode, DEFAULT_ENCODE_SET};
    use crate::apps::{App, AppBuilder};
    use crate::scopes::Scopes;
    use crate::Data;
    use crate::Error;
    use crate::Mastodon;
    use crate::MastodonBuilder;
    use crate::Result;
    const DEFAULT_REDIRECT_URI: &'static str = "urn:ietf:wg:oauth:2.0:oob";
    /// Handles registering your mastodon app to your instance. It is recommended
    /// you cache your data struct to avoid registering on every run.
    pub struct Registration<'a> {
        base: String,
        client: Client,
        app_builder: AppBuilder<'a>,
        force_login: bool,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::fmt::Debug for Registration<'a> {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                Registration {
                base: ref __self_0_0,
                client: ref __self_0_1,
                app_builder: ref __self_0_2,
                force_login: ref __self_0_3 } => {
                    let mut debug_trait_builder =
                        f.debug_struct("Registration");
                    let _ =
                        debug_trait_builder.field("base", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("client", &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("app_builder",
                                                  &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("force_login",
                                                  &&(*__self_0_3));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl <'a> ::core::clone::Clone for Registration<'a> {
        #[inline]
        fn clone(&self) -> Registration<'a> {
            match *self {
                Registration {
                base: ref __self_0_0,
                client: ref __self_0_1,
                app_builder: ref __self_0_2,
                force_login: ref __self_0_3 } =>
                Registration{base:
                                 ::core::clone::Clone::clone(&(*__self_0_0)),
                             client:
                                 ::core::clone::Clone::clone(&(*__self_0_1)),
                             app_builder:
                                 ::core::clone::Clone::clone(&(*__self_0_2)),
                             force_login:
                                 ::core::clone::Clone::clone(&(*__self_0_3)),},
            }
        }
    }
    struct OAuth {
        client_id: String,
        client_secret: String,
        #[serde(default = "default_redirect_uri")]
        redirect_uri: String,
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_OAuth: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for OAuth {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field { __field0, __field1, __field2, __ignore, }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "field identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                0u64 => _serde::export::Ok(__Field::__field0),
                                1u64 => _serde::export::Ok(__Field::__field1),
                                2u64 => _serde::export::Ok(__Field::__field2),
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"field index 0 <= i < 3")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                "client_id" =>
                                _serde::export::Ok(__Field::__field0),
                                "client_secret" =>
                                _serde::export::Ok(__Field::__field1),
                                "redirect_uri" =>
                                _serde::export::Ok(__Field::__field2),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                b"client_id" =>
                                _serde::export::Ok(__Field::__field0),
                                b"client_secret" =>
                                _serde::export::Ok(__Field::__field1),
                                b"redirect_uri" =>
                                _serde::export::Ok(__Field::__field2),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<OAuth>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = OAuth;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "struct OAuth")
                        }
                        #[inline]
                        fn visit_seq<__A>(self, mut __seq: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::SeqAccess<'de> {
                            let __field0 =
                                match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                     &"struct OAuth with 3 elements"));
                                    }
                                };
                            let __field1 =
                                match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(1usize,
                                                                                                     &"struct OAuth with 3 elements"));
                                    }
                                };
                            let __field2 =
                                match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        default_redirect_uri()
                                    }
                                };
                            _serde::export::Ok(OAuth{client_id: __field0,
                                                     client_secret: __field1,
                                                     redirect_uri: __field2,})
                        }
                        #[inline]
                        fn visit_map<__A>(self, mut __map: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::MapAccess<'de> {
                            let mut __field0: _serde::export::Option<String> =
                                _serde::export::None;
                            let mut __field1: _serde::export::Option<String> =
                                _serde::export::None;
                            let mut __field2: _serde::export::Option<String> =
                                _serde::export::None;
                            while let _serde::export::Some(__key) =
                                      match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                match __key {
                                    __Field::__field0 => {
                                        if _serde::export::Option::is_some(&__field0)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("client_id"));
                                        }
                                        __field0 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field1 => {
                                        if _serde::export::Option::is_some(&__field1)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("client_secret"));
                                        }
                                        __field1 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    __Field::__field2 => {
                                        if _serde::export::Option::is_some(&__field2)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("redirect_uri"));
                                        }
                                        __field2 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    _ => {
                                        let _ =
                                            match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                {
                                                _serde::export::Ok(__val) =>
                                                __val,
                                                _serde::export::Err(__err) =>
                                                {
                                                    return _serde::export::Err(__err);
                                                }
                                            };
                                    }
                                }
                            }
                            let __field0 =
                                match __field0 {
                                    _serde::export::Some(__field0) =>
                                    __field0,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("client_id")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field1 =
                                match __field1 {
                                    _serde::export::Some(__field1) =>
                                    __field1,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("client_secret")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            let __field2 =
                                match __field2 {
                                    _serde::export::Some(__field2) =>
                                    __field2,
                                    _serde::export::None =>
                                    default_redirect_uri(),
                                };
                            _serde::export::Ok(OAuth{client_id: __field0,
                                                     client_secret: __field1,
                                                     redirect_uri: __field2,})
                        }
                    }
                    const FIELDS: &'static [&'static str] =
                        &["client_id", "client_secret", "redirect_uri"];
                    _serde::Deserializer::deserialize_struct(__deserializer,
                                                             "OAuth", FIELDS,
                                                             __Visitor{marker:
                                                                           _serde::export::PhantomData::<OAuth>,
                                                                       lifetime:
                                                                           _serde::export::PhantomData,})
                }
            }
        };
    fn default_redirect_uri() -> String { DEFAULT_REDIRECT_URI.to_string() }
    struct AccessToken {
        access_token: String,
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_AccessToken: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for AccessToken {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field { __field0, __ignore, }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "field identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                0u64 => _serde::export::Ok(__Field::__field0),
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"field index 0 <= i < 1")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                "access_token" =>
                                _serde::export::Ok(__Field::__field0),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                b"access_token" =>
                                _serde::export::Ok(__Field::__field0),
                                _ => { _serde::export::Ok(__Field::__ignore) }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<AccessToken>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = AccessToken;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "struct AccessToken")
                        }
                        #[inline]
                        fn visit_seq<__A>(self, mut __seq: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::SeqAccess<'de> {
                            let __field0 =
                                match match _serde::de::SeqAccess::next_element::<String>(&mut __seq)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                    _serde::export::Some(__value) => __value,
                                    _serde::export::None => {
                                        return _serde::export::Err(_serde::de::Error::invalid_length(0usize,
                                                                                                     &"struct AccessToken with 1 element"));
                                    }
                                };
                            _serde::export::Ok(AccessToken{access_token:
                                                               __field0,})
                        }
                        #[inline]
                        fn visit_map<__A>(self, mut __map: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::MapAccess<'de> {
                            let mut __field0: _serde::export::Option<String> =
                                _serde::export::None;
                            while let _serde::export::Some(__key) =
                                      match _serde::de::MapAccess::next_key::<__Field>(&mut __map)
                                          {
                                          _serde::export::Ok(__val) => __val,
                                          _serde::export::Err(__err) => {
                                              return _serde::export::Err(__err);
                                          }
                                      } {
                                match __key {
                                    __Field::__field0 => {
                                        if _serde::export::Option::is_some(&__field0)
                                           {
                                            return _serde::export::Err(<__A::Error
                                                                           as
                                                                           _serde::de::Error>::duplicate_field("access_token"));
                                        }
                                        __field0 =
                                            _serde::export::Some(match _serde::de::MapAccess::next_value::<String>(&mut __map)
                                                                     {
                                                                     _serde::export::Ok(__val)
                                                                     => __val,
                                                                     _serde::export::Err(__err)
                                                                     => {
                                                                         return _serde::export::Err(__err);
                                                                     }
                                                                 });
                                    }
                                    _ => {
                                        let _ =
                                            match _serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)
                                                {
                                                _serde::export::Ok(__val) =>
                                                __val,
                                                _serde::export::Err(__err) =>
                                                {
                                                    return _serde::export::Err(__err);
                                                }
                                            };
                                    }
                                }
                            }
                            let __field0 =
                                match __field0 {
                                    _serde::export::Some(__field0) =>
                                    __field0,
                                    _serde::export::None =>
                                    match _serde::private::de::missing_field("access_token")
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    },
                                };
                            _serde::export::Ok(AccessToken{access_token:
                                                               __field0,})
                        }
                    }
                    const FIELDS: &'static [&'static str] = &["access_token"];
                    _serde::Deserializer::deserialize_struct(__deserializer,
                                                             "AccessToken",
                                                             FIELDS,
                                                             __Visitor{marker:
                                                                           _serde::export::PhantomData::<AccessToken>,
                                                                       lifetime:
                                                                           _serde::export::PhantomData,})
                }
            }
        };
    impl <'a> Registration<'a> {
        /// Construct a new registration process to the instance of the `base` url.
        /// ```
        /// use elefren::prelude::*;
        ///
        /// let registration = Registration::new("https://mastodon.social");
        /// ```
        pub fn new<I: Into<String>>(base: I) -> Self {
            Registration{base: base.into(),
                         client: Client::new(),
                         app_builder: AppBuilder::new(),
                         force_login: false,}
        }
    }
    impl <'a> Registration<'a> {
        /// Sets the name of this app
        ///
        /// This is required, and if this isn't set then the AppBuilder::build
        /// method will fail
        pub fn client_name<I: Into<Cow<'a, str>>>(&mut self, name: I)
         -> &mut Self {
            self.app_builder.client_name(name.into());
            self
        }
        /// Sets the redirect uris that this app uses
        pub fn redirect_uris<I: Into<Cow<'a, str>>>(&mut self, uris: I)
         -> &mut Self {
            self.app_builder.redirect_uris(uris);
            self
        }
        /// Sets the scopes that this app requires
        ///
        /// The default for an app is Scopes::Read
        pub fn scopes(&mut self, scopes: Scopes) -> &mut Self {
            self.app_builder.scopes(scopes);
            self
        }
        /// Sets the optional "website" to register the app with
        pub fn website<I: Into<Cow<'a, str>>>(&mut self, website: I)
         -> &mut Self {
            self.app_builder.website(website);
            self
        }
        /// Forces the user to re-login (useful if you need to re-auth as a
        /// different user on the same instance
        pub fn force_login(&mut self, force_login: bool) -> &mut Self {
            self.force_login = force_login;
            self
        }
        fn send(&self, req: RequestBuilder) -> Result<Response> {
            let req = req.build()?;
            Ok(self.client.execute(req)?)
        }
        /// Register the given application
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # fn main () -> elefren::Result<()> {
        /// use elefren::{apps::App, prelude::*};
        ///
        /// let mut app = App::builder();
        /// app.client_name("elefren_test");
        ///
        /// let registration = Registration::new("https://mastodon.social").register(app)?;
        /// let url = registration.authorize_url()?;
        /// // Here you now need to open the url in the browser
        /// // And handle a the redirect url coming back with the code.
        /// let code = String::from("RETURNED_FROM_BROWSER");
        /// let mastodon = registration.complete(&code)?;
        ///
        /// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
        /// # Ok(())
        /// # }
        /// ```
        pub fn register<I: TryInto<App>>(&mut self, app: I)
         -> Result<Registered> where Error: From<<I as TryInto<App>>::Err> {
            let app = app.try_into()?;
            let oauth = self.send_app(&app)?;
            Ok(Registered{base: self.base.clone(),
                          client: self.client.clone(),
                          client_id: oauth.client_id,
                          client_secret: oauth.client_secret,
                          redirect: oauth.redirect_uri,
                          scopes: app.scopes().clone(),
                          force_login: self.force_login,})
        }
        /// Register the application with the server from the `base` url.
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # fn main () -> elefren::Result<()> {
        /// use elefren::prelude::*;
        ///
        /// let registration = Registration::new("https://mastodon.social")
        ///     .client_name("elefren_test")
        ///     .build()?;
        /// let url = registration.authorize_url()?;
        /// // Here you now need to open the url in the browser
        /// // And handle a the redirect url coming back with the code.
        /// let code = String::from("RETURNED_FROM_BROWSER");
        /// let mastodon = registration.complete(&code)?;
        ///
        /// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
        /// # Ok(())
        /// # }
        /// ```
        pub fn build(&mut self) -> Result<Registered> {
            let app: App = self.app_builder.clone().build()?;
            let oauth = self.send_app(&app)?;
            Ok(Registered{base: self.base.clone(),
                          client: self.client.clone(),
                          client_id: oauth.client_id,
                          client_secret: oauth.client_secret,
                          redirect: oauth.redirect_uri,
                          scopes: app.scopes().clone(),
                          force_login: self.force_login,})
        }
        fn send_app(&self, app: &App) -> Result<OAuth> {
            let url =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                              "/api/v1/apps"],
                                                                            &match (&self.base,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                };
            Ok(self.send(self.client.post(&url).json(&app))?.json()?)
        }
    }
    impl Registered {
        /// Skip having to retrieve the client id and secret from the server by
        /// creating a `Registered` struct directly
        ///
        /// # Example
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # fn main() -> elefren::Result<()> {
        /// use elefren::{prelude::*, registration::Registered};
        ///
        /// let registration = Registered::from_parts(
        ///     "https://example.com",
        ///     "the-client-id",
        ///     "the-client-secret",
        ///     "https://example.com/redirect",
        ///     Scopes::read_all(),
        ///     false,
        /// );
        /// let url = registration.authorize_url()?;
        /// // Here you now need to open the url in the browser
        /// // And handle a the redirect url coming back with the code.
        /// let code = String::from("RETURNED_FROM_BROWSER");
        /// let mastodon = registration.complete(&code)?;
        ///
        /// println!("{:?}", mastodon.get_home_timeline()?.initial_items);
        /// #   Ok(())
        /// # }
        /// ```
        pub fn from_parts(base: &str, client_id: &str, client_secret: &str,
                          redirect: &str, scopes: Scopes, force_login: bool)
         -> Registered {
            Registered{base: base.to_string(),
                       client: Client::new(),
                       client_id: client_id.to_string(),
                       client_secret: client_secret.to_string(),
                       redirect: redirect.to_string(),
                       scopes,
                       force_login,}
        }
    }
    impl Registered {
        fn send(&self, req: RequestBuilder) -> Result<Response> {
            let req = req.build()?;
            Ok(self.client.execute(req)?)
        }
        /// Returns the parts of the `Registered` struct that can be used to
        /// recreate another `Registered` struct
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// use elefren::{prelude::*, registration::Registered};
        /// # fn main() -> Result<(), Box<std::error::Error>> {
        ///
        /// let origbase = "https://example.social";
        /// let origclient_id = "some-client_id";
        /// let origclient_secret = "some-client-secret";
        /// let origredirect = "https://example.social/redirect";
        /// let origscopes = Scopes::all();
        /// let origforce_login = false;
        ///
        /// let registered = Registered::from_parts(
        ///     origbase,
        ///     origclient_id,
        ///     origclient_secret,
        ///     origredirect,
        ///     origscopes.clone(),
        ///     origforce_login,
        /// );
        ///
        /// let (base, client_id, client_secret, redirect, scopes, force_login) = registered.into_parts();
        ///
        /// assert_eq!(origbase, &base);
        /// assert_eq!(origclient_id, &client_id);
        /// assert_eq!(origclient_secret, &client_secret);
        /// assert_eq!(origredirect, &redirect);
        /// assert_eq!(origscopes, scopes);
        /// assert_eq!(origforce_login, force_login);
        /// #   Ok(())
        /// # }
        /// ```
        pub fn into_parts(self)
         -> (String, String, String, String, Scopes, bool) {
            (self.base, self.client_id, self.client_secret, self.redirect,
             self.scopes, self.force_login)
        }
        /// Returns the full url needed for authorisation. This needs to be opened
        /// in a browser.
        pub fn authorize_url(&self) -> Result<String> {
            let scopes =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&self.scopes,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                };
            let scopes: String =
                utf8_percent_encode(&scopes, DEFAULT_ENCODE_SET).collect();
            let url =
                if self.force_login {
                    {
                        let res =
                            ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                                  "/oauth/authorize?client_id=",
                                                                                  "&redirect_uri=",
                                                                                  "&scope=",
                                                                                  "&force_login=true&response_type=code"],
                                                                                &match (&self.base,
                                                                                        &self.client_id,
                                                                                        &self.redirect,
                                                                                        &scopes)
                                                                                     {
                                                                                     (arg0,
                                                                                      arg1,
                                                                                      arg2,
                                                                                      arg3)
                                                                                     =>
                                                                                     [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg1,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg2,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg3,
                                                                                                                   ::core::fmt::Display::fmt)],
                                                                                 }));
                        res
                    }
                } else {
                    {
                        let res =
                            ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                                  "/oauth/authorize?client_id=",
                                                                                  "&redirect_uri=",
                                                                                  "&scope=",
                                                                                  "&response_type=code"],
                                                                                &match (&self.base,
                                                                                        &self.client_id,
                                                                                        &self.redirect,
                                                                                        &scopes)
                                                                                     {
                                                                                     (arg0,
                                                                                      arg1,
                                                                                      arg2,
                                                                                      arg3)
                                                                                     =>
                                                                                     [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg1,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg2,
                                                                                                                   ::core::fmt::Display::fmt),
                                                                                      ::core::fmt::ArgumentV1::new(arg3,
                                                                                                                   ::core::fmt::Display::fmt)],
                                                                                 }));
                        res
                    }
                };
            Ok(url)
        }
        /// Create an access token from the client id, client secret, and code
        /// provided by the authorisation url.
        pub fn complete(&self, code: &str) -> Result<Mastodon> {
            let url =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                              "/oauth/token?client_id=",
                                                                              "&client_secret=",
                                                                              "&code=",
                                                                              "&grant_type=authorization_code&redirect_uri="],
                                                                            &match (&self.base,
                                                                                    &self.client_id,
                                                                                    &self.client_secret,
                                                                                    &code,
                                                                                    &self.redirect)
                                                                                 {
                                                                                 (arg0,
                                                                                  arg1,
                                                                                  arg2,
                                                                                  arg3,
                                                                                  arg4)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt),
                                                                                  ::core::fmt::ArgumentV1::new(arg1,
                                                                                                               ::core::fmt::Display::fmt),
                                                                                  ::core::fmt::ArgumentV1::new(arg2,
                                                                                                               ::core::fmt::Display::fmt),
                                                                                  ::core::fmt::ArgumentV1::new(arg3,
                                                                                                               ::core::fmt::Display::fmt),
                                                                                  ::core::fmt::ArgumentV1::new(arg4,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                };
            let token: AccessToken =
                self.send(self.client.post(&url))?.json()?;
            let data =
                Data{base: self.base.clone().into(),
                     client_id: self.client_id.clone().into(),
                     client_secret: self.client_secret.clone().into(),
                     redirect: self.redirect.clone().into(),
                     token: token.access_token.into(),};
            let mut builder = MastodonBuilder::new();
            builder.client(self.client.clone()).data(data);
            Ok(builder.build()?)
        }
    }
    /// Represents the state of the auth flow when the app has been registered but
    /// the user is not authenticated
    pub struct Registered {
        base: String,
        client: Client,
        client_id: String,
        client_secret: String,
        redirect: String,
        scopes: Scopes,
        force_login: bool,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Registered {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                Registered {
                base: ref __self_0_0,
                client: ref __self_0_1,
                client_id: ref __self_0_2,
                client_secret: ref __self_0_3,
                redirect: ref __self_0_4,
                scopes: ref __self_0_5,
                force_login: ref __self_0_6 } => {
                    let mut debug_trait_builder =
                        f.debug_struct("Registered");
                    let _ =
                        debug_trait_builder.field("base", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("client", &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("client_id",
                                                  &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("client_secret",
                                                  &&(*__self_0_3));
                    let _ =
                        debug_trait_builder.field("redirect",
                                                  &&(*__self_0_4));
                    let _ =
                        debug_trait_builder.field("scopes", &&(*__self_0_5));
                    let _ =
                        debug_trait_builder.field("force_login",
                                                  &&(*__self_0_6));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Registered {
        #[inline]
        fn clone(&self) -> Registered {
            match *self {
                Registered {
                base: ref __self_0_0,
                client: ref __self_0_1,
                client_id: ref __self_0_2,
                client_secret: ref __self_0_3,
                redirect: ref __self_0_4,
                scopes: ref __self_0_5,
                force_login: ref __self_0_6 } =>
                Registered{base: ::core::clone::Clone::clone(&(*__self_0_0)),
                           client:
                               ::core::clone::Clone::clone(&(*__self_0_1)),
                           client_id:
                               ::core::clone::Clone::clone(&(*__self_0_2)),
                           client_secret:
                               ::core::clone::Clone::clone(&(*__self_0_3)),
                           redirect:
                               ::core::clone::Clone::clone(&(*__self_0_4)),
                           scopes:
                               ::core::clone::Clone::clone(&(*__self_0_5)),
                           force_login:
                               ::core::clone::Clone::clone(&(*__self_0_6)),},
            }
        }
    }
}
/// Requests
pub mod requests {
    /// Data structure for the MastodonClient::add_filter method
    pub use self::filter::AddFilterRequest;
    /// Data structure for the MastodonClient::add_push_subscription method
    pub use self::push::{AddPushRequest, Keys, UpdatePushRequest};
    /// Data structure for the MastodonClient::statuses method
    pub use self::statuses::StatusesRequest;
    /// Data structure for the MastodonClient::update_credentials method
    pub use self::update_credentials::UpdateCredsRequest;
    mod filter {
        use crate::entities::filter::FilterContext;
        use std::time::Duration;
        /// Form used to create a filter
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::{entities::filter::FilterContext, requests::AddFilterRequest};
        /// # fn main() -> Result<(), Box<Error>> {
        /// let request = AddFilterRequest::new("foo", FilterContext::Home);
        /// #   Ok(())
        /// # }
        /// ```
        pub struct AddFilterRequest {
            phrase: String,
            context: FilterContext,
            irreversible: Option<bool>,
            whole_word: Option<bool>,
            #[serde(serialize_with = "serialize_duration::ser")]
            expires_in: Option<Duration>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for AddFilterRequest {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    AddFilterRequest {
                    phrase: ref __self_0_0,
                    context: ref __self_0_1,
                    irreversible: ref __self_0_2,
                    whole_word: ref __self_0_3,
                    expires_in: ref __self_0_4 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("AddFilterRequest");
                        let _ =
                            debug_trait_builder.field("phrase",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("context",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("irreversible",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("whole_word",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("expires_in",
                                                      &&(*__self_0_4));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for AddFilterRequest {
            #[inline]
            fn clone(&self) -> AddFilterRequest {
                match *self {
                    AddFilterRequest {
                    phrase: ref __self_0_0,
                    context: ref __self_0_1,
                    irreversible: ref __self_0_2,
                    whole_word: ref __self_0_3,
                    expires_in: ref __self_0_4 } =>
                    AddFilterRequest{phrase:
                                         ::core::clone::Clone::clone(&(*__self_0_0)),
                                     context:
                                         ::core::clone::Clone::clone(&(*__self_0_1)),
                                     irreversible:
                                         ::core::clone::Clone::clone(&(*__self_0_2)),
                                     whole_word:
                                         ::core::clone::Clone::clone(&(*__self_0_3)),
                                     expires_in:
                                         ::core::clone::Clone::clone(&(*__self_0_4)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for AddFilterRequest { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for AddFilterRequest {
            #[inline]
            fn eq(&self, other: &AddFilterRequest) -> bool {
                match *other {
                    AddFilterRequest {
                    phrase: ref __self_1_0,
                    context: ref __self_1_1,
                    irreversible: ref __self_1_2,
                    whole_word: ref __self_1_3,
                    expires_in: ref __self_1_4 } =>
                    match *self {
                        AddFilterRequest {
                        phrase: ref __self_0_0,
                        context: ref __self_0_1,
                        irreversible: ref __self_0_2,
                        whole_word: ref __self_0_3,
                        expires_in: ref __self_0_4 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &AddFilterRequest) -> bool {
                match *other {
                    AddFilterRequest {
                    phrase: ref __self_1_0,
                    context: ref __self_1_1,
                    irreversible: ref __self_1_2,
                    whole_word: ref __self_1_3,
                    expires_in: ref __self_1_4 } =>
                    match *self {
                        AddFilterRequest {
                        phrase: ref __self_0_0,
                        context: ref __self_0_1,
                        irreversible: ref __self_0_2,
                        whole_word: ref __self_0_3,
                        expires_in: ref __self_0_4 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_AddFilterRequest: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for AddFilterRequest {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "AddFilterRequest",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "phrase",
                                                                            &self.phrase)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "context",
                                                                            &self.context)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "irreversible",
                                                                            &self.irreversible)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "whole_word",
                                                                            &self.whole_word)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "expires_in",
                                                                            {
                                                                                struct __SerializeWith<'__a> {
                                                                                    values: (&'__a Option<Duration>,),
                                                                                    phantom: _serde::export::PhantomData<AddFilterRequest>,
                                                                                }
                                                                                impl <'__a>
                                                                                 _serde::Serialize
                                                                                 for
                                                                                 __SerializeWith<'__a>
                                                                                 {
                                                                                    fn serialize<__S>(&self,
                                                                                                      __s:
                                                                                                          __S)
                                                                                     ->
                                                                                         _serde::export::Result<__S::Ok,
                                                                                                                __S::Error>
                                                                                     where
                                                                                     __S: _serde::Serializer {
                                                                                        serialize_duration::ser(self.values.0,
                                                                                                                __s)
                                                                                    }
                                                                                }
                                                                                &__SerializeWith{values:
                                                                                                     (&self.expires_in,),
                                                                                                 phantom:
                                                                                                     _serde::export::PhantomData::<AddFilterRequest>,}
                                                                            })
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        impl AddFilterRequest {
            /// Create a new AddFilterRequest
            pub fn new(phrase: &str, context: FilterContext)
             -> AddFilterRequest {
                AddFilterRequest{phrase: phrase.to_string(),
                                 context,
                                 irreversible: None,
                                 whole_word: None,
                                 expires_in: None,}
            }
            /// Set `irreversible` to `true`
            pub fn irreversible(&mut self) -> &mut Self {
                self.irreversible = Some(true);
                self
            }
            /// Set `whole_word` to `true`
            pub fn whole_word(&mut self) -> &mut Self {
                self.whole_word = Some(true);
                self
            }
            /// Set `expires_in` to a duration
            pub fn expires_in(&mut self, d: Duration) -> &mut Self {
                self.expires_in = Some(d);
                self
            }
        }
        mod serialize_duration {
            use serde::ser::Serializer;
            use std::time::Duration;
            pub(crate) fn ser<S>(duration: &Option<Duration>, s: S)
             -> Result<S::Ok, S::Error> where S: Serializer {
                if let Some(d) = duration {
                    let sec = d.as_secs();
                    s.serialize_u64(sec)
                } else { s.serialize_none() }
            }
        }
    }
    mod push {
        use crate::entities::push::{add_subscription, update_data};
        use crate::errors::Result;
        /// Container for the key & auth strings for an AddPushRequest
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// use elefren::requests::Keys;
        ///
        /// let keys = Keys::new("anetohias===", "oeatssah=");
        /// ```
        pub struct Keys {
            pub(crate) p256dh: String,
            pub(crate) auth: String,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for Keys {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 } => {
                        let mut debug_trait_builder = f.debug_struct("Keys");
                        let _ =
                            debug_trait_builder.field("p256dh",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("auth",
                                                      &&(*__self_0_1));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for Keys {
            #[inline]
            fn default() -> Keys {
                Keys{p256dh: ::core::default::Default::default(),
                     auth: ::core::default::Default::default(),}
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for Keys {
            #[inline]
            fn clone(&self) -> Keys {
                match *self {
                    Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 } =>
                    Keys{p256dh: ::core::clone::Clone::clone(&(*__self_0_0)),
                         auth: ::core::clone::Clone::clone(&(*__self_0_1)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for Keys { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for Keys {
            #[inline]
            fn eq(&self, other: &Keys) -> bool {
                match *other {
                    Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 } =>
                    match *self {
                        Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
                        =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &Keys) -> bool {
                match *other {
                    Keys { p256dh: ref __self_1_0, auth: ref __self_1_1 } =>
                    match *self {
                        Keys { p256dh: ref __self_0_0, auth: ref __self_0_1 }
                        =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1),
                    },
                }
            }
        }
        impl Keys {
            /// Create the `Keys` container
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::Keys;
            ///
            /// let keys = Keys::new("anetohias===", "oeatssah=");
            /// ```
            pub fn new(p256dh: &str, auth: &str) -> Keys {
                Keys{p256dh: p256dh.to_string(), auth: auth.to_string(),}
            }
        }
        /// Builder to pass to the Mastodon::add_push_subscription method
        ///
        /// # Example
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # use elefren::{MastodonClient, Mastodon, Data};
        /// # fn main() -> Result<(), elefren::Error> {
        /// # let data = Data {
        /// #   base: "".into(),
        /// #   client_id: "".into(),
        /// #   client_secret: "".into(),
        /// #   redirect: "".into(),
        /// #   token: "".into(),
        /// # };
        /// use elefren::requests::{AddPushRequest, Keys};
        ///
        /// let client = Mastodon::from(data);
        ///
        /// let keys = Keys::new("stahesuahoei293ise===", "tasecoa,nmeozka==");
        /// let mut request = AddPushRequest::new("http://example.com/push/endpoint", &keys);
        /// request.follow().reblog();
        ///
        /// client.add_push_subscription(&request)?;
        /// #   Ok(())
        /// # }
        /// ```
        pub struct AddPushRequest {
            endpoint: String,
            p256dh: String,
            auth: String,
            follow: Option<bool>,
            favourite: Option<bool>,
            reblog: Option<bool>,
            mention: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for AddPushRequest {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    AddPushRequest {
                    endpoint: ref __self_0_0,
                    p256dh: ref __self_0_1,
                    auth: ref __self_0_2,
                    follow: ref __self_0_3,
                    favourite: ref __self_0_4,
                    reblog: ref __self_0_5,
                    mention: ref __self_0_6 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("AddPushRequest");
                        let _ =
                            debug_trait_builder.field("endpoint",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("p256dh",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("auth",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("follow",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("favourite",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("reblog",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("mention",
                                                      &&(*__self_0_6));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for AddPushRequest {
            #[inline]
            fn default() -> AddPushRequest {
                AddPushRequest{endpoint: ::core::default::Default::default(),
                               p256dh: ::core::default::Default::default(),
                               auth: ::core::default::Default::default(),
                               follow: ::core::default::Default::default(),
                               favourite: ::core::default::Default::default(),
                               reblog: ::core::default::Default::default(),
                               mention: ::core::default::Default::default(),}
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for AddPushRequest {
            #[inline]
            fn clone(&self) -> AddPushRequest {
                match *self {
                    AddPushRequest {
                    endpoint: ref __self_0_0,
                    p256dh: ref __self_0_1,
                    auth: ref __self_0_2,
                    follow: ref __self_0_3,
                    favourite: ref __self_0_4,
                    reblog: ref __self_0_5,
                    mention: ref __self_0_6 } =>
                    AddPushRequest{endpoint:
                                       ::core::clone::Clone::clone(&(*__self_0_0)),
                                   p256dh:
                                       ::core::clone::Clone::clone(&(*__self_0_1)),
                                   auth:
                                       ::core::clone::Clone::clone(&(*__self_0_2)),
                                   follow:
                                       ::core::clone::Clone::clone(&(*__self_0_3)),
                                   favourite:
                                       ::core::clone::Clone::clone(&(*__self_0_4)),
                                   reblog:
                                       ::core::clone::Clone::clone(&(*__self_0_5)),
                                   mention:
                                       ::core::clone::Clone::clone(&(*__self_0_6)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for AddPushRequest { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for AddPushRequest {
            #[inline]
            fn eq(&self, other: &AddPushRequest) -> bool {
                match *other {
                    AddPushRequest {
                    endpoint: ref __self_1_0,
                    p256dh: ref __self_1_1,
                    auth: ref __self_1_2,
                    follow: ref __self_1_3,
                    favourite: ref __self_1_4,
                    reblog: ref __self_1_5,
                    mention: ref __self_1_6 } =>
                    match *self {
                        AddPushRequest {
                        endpoint: ref __self_0_0,
                        p256dh: ref __self_0_1,
                        auth: ref __self_0_2,
                        follow: ref __self_0_3,
                        favourite: ref __self_0_4,
                        reblog: ref __self_0_5,
                        mention: ref __self_0_6 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &AddPushRequest) -> bool {
                match *other {
                    AddPushRequest {
                    endpoint: ref __self_1_0,
                    p256dh: ref __self_1_1,
                    auth: ref __self_1_2,
                    follow: ref __self_1_3,
                    favourite: ref __self_1_4,
                    reblog: ref __self_1_5,
                    mention: ref __self_1_6 } =>
                    match *self {
                        AddPushRequest {
                        endpoint: ref __self_0_0,
                        p256dh: ref __self_0_1,
                        auth: ref __self_0_2,
                        follow: ref __self_0_3,
                        favourite: ref __self_0_4,
                        reblog: ref __self_0_5,
                        mention: ref __self_0_6 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6),
                    },
                }
            }
        }
        impl AddPushRequest {
            /// Construct a new AddPushRequest
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::{AddPushRequest, Keys};
            /// let keys = Keys::new("abcdef===", "foobar==");
            /// let push_endpoint = "https://example.com/push/endpoint";
            /// let request = AddPushRequest::new(push_endpoint, &keys);
            /// ```
            pub fn new(endpoint: &str, keys: &Keys) -> AddPushRequest {
                AddPushRequest{endpoint: endpoint.to_string(),
                               p256dh: keys.p256dh.clone(),
                               auth: keys.auth.clone(), ..Default::default()}
            }
            /// A flag that indicates if you want follow notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::{AddPushRequest, Keys};
            /// let keys = Keys::new("abcdef===", "foobar==");
            /// let push_endpoint = "https://example.com/push/endpoint";
            /// let mut request = AddPushRequest::new(push_endpoint, &keys);
            /// request.follow();
            /// ```
            pub fn follow(&mut self) -> &mut Self {
                self.follow = Some(true);
                self
            }
            /// A flag that indicates if you want favourite notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::{AddPushRequest, Keys};
            /// let keys = Keys::new("abcdef===", "foobar==");
            /// let push_endpoint = "https://example.com/push/endpoint";
            /// let mut request = AddPushRequest::new(push_endpoint, &keys);
            /// request.favourite();
            /// ```
            pub fn favourite(&mut self) -> &mut Self {
                self.favourite = Some(true);
                self
            }
            /// A flag that indicates if you want reblog notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::{AddPushRequest, Keys};
            /// let keys = Keys::new("abcdef===", "foobar==");
            /// let push_endpoint = "https://example.com/push/endpoint";
            /// let mut request = AddPushRequest::new(push_endpoint, &keys);
            /// request.reblog();
            /// ```
            pub fn reblog(&mut self) -> &mut Self {
                self.reblog = Some(true);
                self
            }
            /// A flag that indicates if you want mention notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::{AddPushRequest, Keys};
            /// let keys = Keys::new("abcdef===", "foobar==");
            /// let push_endpoint = "https://example.com/push/endpoint";
            /// let mut request = AddPushRequest::new(push_endpoint, &keys);
            /// request.mention();
            /// ```
            pub fn mention(&mut self) -> &mut Self {
                self.mention = Some(true);
                self
            }
            fn flags_present(&self) -> bool {
                self.follow.is_some() || self.favourite.is_some() ||
                    self.reblog.is_some() || self.mention.is_some()
            }
            pub(crate) fn build(&self) -> Result<add_subscription::Form> {
                use crate::entities::push::{add_subscription::{Data, Form,
                                                               Keys,
                                                               Subscription},
                                            Alerts};
                let mut form =
                    Form{subscription:
                             Subscription{endpoint: self.endpoint.clone(),
                                          keys:
                                              Keys{p256dh:
                                                       self.p256dh.clone(),
                                                   auth:
                                                       self.auth.clone(),},},
                         data: None,};
                if self.flags_present() {
                    let mut alerts = Alerts::default();
                    if let Some(follow) = self.follow {
                        alerts.follow = Some(follow);
                    }
                    if let Some(favourite) = self.favourite {
                        alerts.favourite = Some(favourite);
                    }
                    if let Some(reblog) = self.reblog {
                        alerts.reblog = Some(reblog);
                    }
                    if let Some(mention) = self.mention {
                        alerts.mention = Some(mention);
                    }
                    form.data = Some(Data{alerts: Some(alerts),});
                }
                Ok(form)
            }
        }
        /// Builder to pass to the Mastodon::update_push_data method
        ///
        /// # Example
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # use elefren::{MastodonClient, Mastodon, Data};
        /// # fn main() -> Result<(), elefren::Error> {
        /// # let data = Data {
        /// #   base: "".into(),
        /// #   client_id: "".into(),
        /// #   client_secret: "".into(),
        /// #   redirect: "".into(),
        /// #   token: "".into(),
        /// # };
        /// use elefren::requests::UpdatePushRequest;
        ///
        /// let client = Mastodon::from(data);
        ///
        /// let mut request = UpdatePushRequest::new("foobar");
        /// request.follow(true).reblog(true);
        ///
        /// client.update_push_data(&request)?;
        /// #   Ok(())
        /// # }
        /// ```
        pub struct UpdatePushRequest {
            id: String,
            follow: Option<bool>,
            favourite: Option<bool>,
            reblog: Option<bool>,
            mention: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for UpdatePushRequest {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    UpdatePushRequest {
                    id: ref __self_0_0,
                    follow: ref __self_0_1,
                    favourite: ref __self_0_2,
                    reblog: ref __self_0_3,
                    mention: ref __self_0_4 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("UpdatePushRequest");
                        let _ =
                            debug_trait_builder.field("id", &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("follow",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("favourite",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("reblog",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("mention",
                                                      &&(*__self_0_4));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for UpdatePushRequest {
            #[inline]
            fn default() -> UpdatePushRequest {
                UpdatePushRequest{id: ::core::default::Default::default(),
                                  follow: ::core::default::Default::default(),
                                  favourite:
                                      ::core::default::Default::default(),
                                  reblog: ::core::default::Default::default(),
                                  mention:
                                      ::core::default::Default::default(),}
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for UpdatePushRequest {
            #[inline]
            fn clone(&self) -> UpdatePushRequest {
                match *self {
                    UpdatePushRequest {
                    id: ref __self_0_0,
                    follow: ref __self_0_1,
                    favourite: ref __self_0_2,
                    reblog: ref __self_0_3,
                    mention: ref __self_0_4 } =>
                    UpdatePushRequest{id:
                                          ::core::clone::Clone::clone(&(*__self_0_0)),
                                      follow:
                                          ::core::clone::Clone::clone(&(*__self_0_1)),
                                      favourite:
                                          ::core::clone::Clone::clone(&(*__self_0_2)),
                                      reblog:
                                          ::core::clone::Clone::clone(&(*__self_0_3)),
                                      mention:
                                          ::core::clone::Clone::clone(&(*__self_0_4)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for UpdatePushRequest { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for UpdatePushRequest {
            #[inline]
            fn eq(&self, other: &UpdatePushRequest) -> bool {
                match *other {
                    UpdatePushRequest {
                    id: ref __self_1_0,
                    follow: ref __self_1_1,
                    favourite: ref __self_1_2,
                    reblog: ref __self_1_3,
                    mention: ref __self_1_4 } =>
                    match *self {
                        UpdatePushRequest {
                        id: ref __self_0_0,
                        follow: ref __self_0_1,
                        favourite: ref __self_0_2,
                        reblog: ref __self_0_3,
                        mention: ref __self_0_4 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &UpdatePushRequest) -> bool {
                match *other {
                    UpdatePushRequest {
                    id: ref __self_1_0,
                    follow: ref __self_1_1,
                    favourite: ref __self_1_2,
                    reblog: ref __self_1_3,
                    mention: ref __self_1_4 } =>
                    match *self {
                        UpdatePushRequest {
                        id: ref __self_0_0,
                        follow: ref __self_0_1,
                        favourite: ref __self_0_2,
                        reblog: ref __self_0_3,
                        mention: ref __self_0_4 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_UpdatePushRequest: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl _serde::Serialize for UpdatePushRequest {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "UpdatePushRequest",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "id",
                                                                            &self.id)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "follow",
                                                                            &self.follow)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "favourite",
                                                                            &self.favourite)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "reblog",
                                                                            &self.reblog)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "mention",
                                                                            &self.mention)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        impl UpdatePushRequest {
            /// Construct a new UpdatePushRequest
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::UpdatePushRequest;
            /// let request = UpdatePushRequest::new("some-id");
            /// ```
            pub fn new(id: &str) -> UpdatePushRequest {
                UpdatePushRequest{id: id.to_string(), ..Default::default()}
            }
            /// A flag that indicates if you want follow notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::UpdatePushRequest;
            /// let mut request = UpdatePushRequest::new("foobar");
            /// request.follow(true);
            /// ```
            pub fn follow(&mut self, follow: bool) -> &mut Self {
                self.follow = Some(follow);
                self
            }
            /// A flag that indicates if you want favourite notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::UpdatePushRequest;
            /// let mut request = UpdatePushRequest::new("foobar");
            /// request.favourite(true);
            /// ```
            pub fn favourite(&mut self, favourite: bool) -> &mut Self {
                self.favourite = Some(favourite);
                self
            }
            /// A flag that indicates if you want reblog notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::UpdatePushRequest;
            /// let mut request = UpdatePushRequest::new("foobar");
            /// request.reblog(true);
            /// ```
            pub fn reblog(&mut self, reblog: bool) -> &mut Self {
                self.reblog = Some(reblog);
                self
            }
            /// A flag that indicates if you want mention notifications pushed
            ///
            /// # Example
            /// ```
            /// # extern crate elefren;
            /// use elefren::requests::UpdatePushRequest;
            /// let mut request = UpdatePushRequest::new("foobar");
            /// request.mention(true);
            /// ```
            pub fn mention(&mut self, mention: bool) -> &mut Self {
                self.mention = Some(mention);
                self
            }
            fn flags_present(&self) -> bool {
                self.follow.is_some() || self.favourite.is_some() ||
                    self.reblog.is_some() || self.mention.is_some()
            }
            pub(crate) fn build(&self) -> update_data::Form {
                use crate::entities::push::{update_data::{Data, Form},
                                            Alerts};
                let mut form =
                    Form{id: self.id.clone(), ..Default::default()};
                if self.flags_present() {
                    let mut alerts = Alerts::default();
                    if let Some(follow) = self.follow {
                        alerts.follow = Some(follow);
                    }
                    if let Some(favourite) = self.favourite {
                        alerts.favourite = Some(favourite);
                    }
                    if let Some(reblog) = self.reblog {
                        alerts.reblog = Some(reblog);
                    }
                    if let Some(mention) = self.mention {
                        alerts.mention = Some(mention);
                    }
                    form.data = Data{alerts: Some(alerts),};
                }
                form
            }
        }
    }
    mod statuses {
        use crate::errors::Error;
        use serde_qs;
        use std::{borrow::Cow, convert::Into};
        mod bool_qs_serialize {
            use serde::Serializer;
            pub fn is_false(b: &bool) -> bool { !*b }
            pub fn serialize<S: Serializer>(b: &bool, s: S)
             -> Result<S::Ok, S::Error> {
                if *b { s.serialize_i64(1) } else { s.serialize_i64(0) }
            }
        }
        /// Builder for making a client.statuses() call
        ///
        /// # Example
        ///
        /// ```
        /// # extern crate elefren;
        /// # use elefren::StatusesRequest;
        /// let mut request = StatusesRequest::new();
        /// request.only_media().pinned().since_id("foo");
        /// # assert_eq!(&request.to_querystring().expect("Couldn't serialize qs")[..], "?only_media=1&pinned=1&since_id=foo");
        /// ```
        pub struct StatusesRequest<'a> {
            #[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
            #[serde(serialize_with = "bool_qs_serialize::serialize")]
            only_media: bool,
            #[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
            #[serde(serialize_with = "bool_qs_serialize::serialize")]
            exclude_replies: bool,
            #[serde(skip_serializing_if = "bool_qs_serialize::is_false")]
            #[serde(serialize_with = "bool_qs_serialize::serialize")]
            pinned: bool,
            #[serde(skip_serializing_if = "Option::is_none")]
            max_id: Option<Cow<'a, str>>,
            #[serde(skip_serializing_if = "Option::is_none")]
            since_id: Option<Cow<'a, str>>,
            #[serde(skip_serializing_if = "Option::is_none")]
            limit: Option<usize>,
            #[serde(skip_serializing_if = "Option::is_none")]
            min_id: Option<Cow<'a, str>>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl <'a> ::core::clone::Clone for StatusesRequest<'a> {
            #[inline]
            fn clone(&self) -> StatusesRequest<'a> {
                match *self {
                    StatusesRequest {
                    only_media: ref __self_0_0,
                    exclude_replies: ref __self_0_1,
                    pinned: ref __self_0_2,
                    max_id: ref __self_0_3,
                    since_id: ref __self_0_4,
                    limit: ref __self_0_5,
                    min_id: ref __self_0_6 } =>
                    StatusesRequest{only_media:
                                        ::core::clone::Clone::clone(&(*__self_0_0)),
                                    exclude_replies:
                                        ::core::clone::Clone::clone(&(*__self_0_1)),
                                    pinned:
                                        ::core::clone::Clone::clone(&(*__self_0_2)),
                                    max_id:
                                        ::core::clone::Clone::clone(&(*__self_0_3)),
                                    since_id:
                                        ::core::clone::Clone::clone(&(*__self_0_4)),
                                    limit:
                                        ::core::clone::Clone::clone(&(*__self_0_5)),
                                    min_id:
                                        ::core::clone::Clone::clone(&(*__self_0_6)),},
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl <'a> ::core::fmt::Debug for StatusesRequest<'a> {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    StatusesRequest {
                    only_media: ref __self_0_0,
                    exclude_replies: ref __self_0_1,
                    pinned: ref __self_0_2,
                    max_id: ref __self_0_3,
                    since_id: ref __self_0_4,
                    limit: ref __self_0_5,
                    min_id: ref __self_0_6 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("StatusesRequest");
                        let _ =
                            debug_trait_builder.field("only_media",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("exclude_replies",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("pinned",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("max_id",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("since_id",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("limit",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("min_id",
                                                      &&(*__self_0_6));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl <'a> ::core::default::Default for StatusesRequest<'a> {
            #[inline]
            fn default() -> StatusesRequest<'a> {
                StatusesRequest{only_media:
                                    ::core::default::Default::default(),
                                exclude_replies:
                                    ::core::default::Default::default(),
                                pinned: ::core::default::Default::default(),
                                max_id: ::core::default::Default::default(),
                                since_id: ::core::default::Default::default(),
                                limit: ::core::default::Default::default(),
                                min_id: ::core::default::Default::default(),}
            }
        }
        impl <'a> ::core::marker::StructuralPartialEq for StatusesRequest<'a>
         {
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl <'a> ::core::cmp::PartialEq for StatusesRequest<'a> {
            #[inline]
            fn eq(&self, other: &StatusesRequest<'a>) -> bool {
                match *other {
                    StatusesRequest {
                    only_media: ref __self_1_0,
                    exclude_replies: ref __self_1_1,
                    pinned: ref __self_1_2,
                    max_id: ref __self_1_3,
                    since_id: ref __self_1_4,
                    limit: ref __self_1_5,
                    min_id: ref __self_1_6 } =>
                    match *self {
                        StatusesRequest {
                        only_media: ref __self_0_0,
                        exclude_replies: ref __self_0_1,
                        pinned: ref __self_0_2,
                        max_id: ref __self_0_3,
                        since_id: ref __self_0_4,
                        limit: ref __self_0_5,
                        min_id: ref __self_0_6 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &StatusesRequest<'a>) -> bool {
                match *other {
                    StatusesRequest {
                    only_media: ref __self_1_0,
                    exclude_replies: ref __self_1_1,
                    pinned: ref __self_1_2,
                    max_id: ref __self_1_3,
                    since_id: ref __self_1_4,
                    limit: ref __self_1_5,
                    min_id: ref __self_1_6 } =>
                    match *self {
                        StatusesRequest {
                        only_media: ref __self_0_0,
                        exclude_replies: ref __self_0_1,
                        pinned: ref __self_0_2,
                        max_id: ref __self_0_3,
                        since_id: ref __self_0_4,
                        limit: ref __self_0_5,
                        min_id: ref __self_0_6 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6),
                    },
                }
            }
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_StatusesRequest: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'a> _serde::Serialize for StatusesRequest<'a> {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "StatusesRequest",
                                                                       false
                                                                           as
                                                                           usize
                                                                           +
                                                                           if bool_qs_serialize::is_false(&self.only_media)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if bool_qs_serialize::is_false(&self.exclude_replies)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if bool_qs_serialize::is_false(&self.pinned)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.max_id)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.since_id)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.limit)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           if Option::is_none(&self.min_id)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           })
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        if !bool_qs_serialize::is_false(&self.only_media) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "only_media",
                                                                                {
                                                                                    struct __SerializeWith<'__a,
                                                                                                           'a: '__a> {
                                                                                        values: (&'__a bool,),
                                                                                        phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
                                                                                    }
                                                                                    impl <'__a,
                                                                                          'a: '__a>
                                                                                     _serde::Serialize
                                                                                     for
                                                                                     __SerializeWith<'__a,
                                                                                                     'a>
                                                                                     {
                                                                                        fn serialize<__S>(&self,
                                                                                                          __s:
                                                                                                              __S)
                                                                                         ->
                                                                                             _serde::export::Result<__S::Ok,
                                                                                                                    __S::Error>
                                                                                         where
                                                                                         __S: _serde::Serializer {
                                                                                            bool_qs_serialize::serialize(self.values.0,
                                                                                                                         __s)
                                                                                        }
                                                                                    }
                                                                                    &__SerializeWith{values:
                                                                                                         (&self.only_media,),
                                                                                                     phantom:
                                                                                                         _serde::export::PhantomData::<StatusesRequest<'a>>,}
                                                                                })
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "only_media")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !bool_qs_serialize::is_false(&self.exclude_replies)
                           {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "exclude_replies",
                                                                                {
                                                                                    struct __SerializeWith<'__a,
                                                                                                           'a: '__a> {
                                                                                        values: (&'__a bool,),
                                                                                        phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
                                                                                    }
                                                                                    impl <'__a,
                                                                                          'a: '__a>
                                                                                     _serde::Serialize
                                                                                     for
                                                                                     __SerializeWith<'__a,
                                                                                                     'a>
                                                                                     {
                                                                                        fn serialize<__S>(&self,
                                                                                                          __s:
                                                                                                              __S)
                                                                                         ->
                                                                                             _serde::export::Result<__S::Ok,
                                                                                                                    __S::Error>
                                                                                         where
                                                                                         __S: _serde::Serializer {
                                                                                            bool_qs_serialize::serialize(self.values.0,
                                                                                                                         __s)
                                                                                        }
                                                                                    }
                                                                                    &__SerializeWith{values:
                                                                                                         (&self.exclude_replies,),
                                                                                                     phantom:
                                                                                                         _serde::export::PhantomData::<StatusesRequest<'a>>,}
                                                                                })
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "exclude_replies")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !bool_qs_serialize::is_false(&self.pinned) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "pinned",
                                                                                {
                                                                                    struct __SerializeWith<'__a,
                                                                                                           'a: '__a> {
                                                                                        values: (&'__a bool,),
                                                                                        phantom: _serde::export::PhantomData<StatusesRequest<'a>>,
                                                                                    }
                                                                                    impl <'__a,
                                                                                          'a: '__a>
                                                                                     _serde::Serialize
                                                                                     for
                                                                                     __SerializeWith<'__a,
                                                                                                     'a>
                                                                                     {
                                                                                        fn serialize<__S>(&self,
                                                                                                          __s:
                                                                                                              __S)
                                                                                         ->
                                                                                             _serde::export::Result<__S::Ok,
                                                                                                                    __S::Error>
                                                                                         where
                                                                                         __S: _serde::Serializer {
                                                                                            bool_qs_serialize::serialize(self.values.0,
                                                                                                                         __s)
                                                                                        }
                                                                                    }
                                                                                    &__SerializeWith{values:
                                                                                                         (&self.pinned,),
                                                                                                     phantom:
                                                                                                         _serde::export::PhantomData::<StatusesRequest<'a>>,}
                                                                                })
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "pinned")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.max_id) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "max_id",
                                                                                &self.max_id)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "max_id")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.since_id) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "since_id",
                                                                                &self.since_id)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "since_id")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.limit) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "limit",
                                                                                &self.limit)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "limit")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        if !Option::is_none(&self.min_id) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "min_id",
                                                                                &self.min_id)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "min_id")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        impl <'a> Into<Option<StatusesRequest<'a>>> for
         &'a mut StatusesRequest<'a> {
            fn into(self) -> Option<StatusesRequest<'a>> {
                Some(StatusesRequest{only_media: self.only_media,
                                     exclude_replies: self.exclude_replies,
                                     pinned: self.pinned,
                                     max_id: self.max_id.clone(),
                                     since_id: self.since_id.clone(),
                                     limit: self.limit.clone(),
                                     min_id: self.min_id.clone(),})
            }
        }
        impl <'a> StatusesRequest<'a> {
            /// Construct a new `StatusesRequest` object
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let request = StatusesRequest::new();
            /// ```
            pub fn new() -> Self { Self::default() }
            /// Set the `?only_media=1` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(&request.only_media().to_querystring().expect("Couldn't serialize qs"), "?only_media=1");
            pub fn only_media(&mut self) -> &mut Self {
                self.only_media = true;
                self
            }
            /// Set the `?exclude_replies=1` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .exclude_replies()
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?exclude_replies=1"
            /// );
            /// ```
            pub fn exclude_replies(&mut self) -> &mut Self {
                self.exclude_replies = true;
                self
            }
            /// Set the `?pinned=1` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .pinned()
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?pinned=1"
            /// );
            /// ```
            pub fn pinned(&mut self) -> &mut Self { self.pinned = true; self }
            /// Set the `?max_id=:max_id` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .max_id("foo")
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?max_id=foo"
            /// );
            /// ```
            pub fn max_id<S: Into<Cow<'a, str>>>(&mut self, max_id: S)
             -> &mut Self {
                self.max_id = Some(max_id.into());
                self
            }
            /// Set the `?since_id=:since_id` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .since_id("foo")
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?since_id=foo"
            /// );
            /// ```
            pub fn since_id<S: Into<Cow<'a, str>>>(&mut self, since_id: S)
             -> &mut Self {
                self.since_id = Some(since_id.into());
                self
            }
            /// Set the `?limit=:limit` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .limit(10)
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?limit=10"
            /// );
            /// ```
            pub fn limit(&mut self, limit: usize) -> &mut Self {
                self.limit = Some(limit);
                self
            }
            /// Set the `?min_id=:min_id` flag for the .statuses() request
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .min_id("foobar")
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?min_id=foobar"
            /// );
            /// ```
            pub fn min_id<S: Into<Cow<'a, str>>>(&mut self, min_id: S)
             -> &mut Self {
                self.min_id = Some(min_id.into());
                self
            }
            /// Turns this builder into a querystring
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// # use elefren::StatusesRequest;
            /// let mut request = StatusesRequest::new();
            /// assert_eq!(
            ///     &request
            ///         .limit(10)
            ///         .pinned()
            ///         .to_querystring()
            ///         .expect("Couldn't serialize qs"),
            ///     "?pinned=1&limit=10"
            /// );
            /// ```
            pub fn to_querystring(&self) -> Result<String, Error> {
                Ok({
                       let res =
                           ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["?"],
                                                                               &match (&serde_qs::to_string(&self)?,)
                                                                                    {
                                                                                    (arg0,)
                                                                                    =>
                                                                                    [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                  ::core::fmt::Display::fmt)],
                                                                                }));
                       res
                   })
            }
        }
    }
    mod update_credentials {
        use std::{fmt::Display, path::{Path, PathBuf}};
        use crate::entities::account::{Credentials, MetadataField,
                                       UpdateSource};
        use crate::errors::Result;
        use crate::status_builder;
        /// Builder to pass to the Mastodon::update_credentials method
        ///
        /// # Example
        ///
        /// ```no_run
        /// # extern crate elefren;
        /// # use elefren::Data;
        /// # fn main() -> Result<(), elefren::Error> {
        /// # let data = Data {
        /// #   base: "".into(),
        /// #   client_id: "".into(),
        /// #   client_secret: "".into(),
        /// #   redirect: "".into(),
        /// #   token: "".into(),
        /// # };
        /// use elefren::{prelude::*, status_builder::Visibility, UpdateCredsRequest};
        ///
        /// let client = Mastodon::from(data);
        /// let mut builder = UpdateCredsRequest::new();
        ///
        /// builder.privacy(Visibility::Unlisted);
        ///
        /// let result = client.update_credentials(&mut builder)?;
        /// #   Ok(())
        /// # }
        /// ```
        pub struct UpdateCredsRequest {
            display_name: Option<String>,
            note: Option<String>,
            avatar: Option<PathBuf>,
            header: Option<PathBuf>,
            field_attributes: Vec<MetadataField>,
            privacy: Option<status_builder::Visibility>,
            sensitive: Option<bool>,
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::fmt::Debug for UpdateCredsRequest {
            fn fmt(&self, f: &mut ::core::fmt::Formatter)
             -> ::core::fmt::Result {
                match *self {
                    UpdateCredsRequest {
                    display_name: ref __self_0_0,
                    note: ref __self_0_1,
                    avatar: ref __self_0_2,
                    header: ref __self_0_3,
                    field_attributes: ref __self_0_4,
                    privacy: ref __self_0_5,
                    sensitive: ref __self_0_6 } => {
                        let mut debug_trait_builder =
                            f.debug_struct("UpdateCredsRequest");
                        let _ =
                            debug_trait_builder.field("display_name",
                                                      &&(*__self_0_0));
                        let _ =
                            debug_trait_builder.field("note",
                                                      &&(*__self_0_1));
                        let _ =
                            debug_trait_builder.field("avatar",
                                                      &&(*__self_0_2));
                        let _ =
                            debug_trait_builder.field("header",
                                                      &&(*__self_0_3));
                        let _ =
                            debug_trait_builder.field("field_attributes",
                                                      &&(*__self_0_4));
                        let _ =
                            debug_trait_builder.field("privacy",
                                                      &&(*__self_0_5));
                        let _ =
                            debug_trait_builder.field("sensitive",
                                                      &&(*__self_0_6));
                        debug_trait_builder.finish()
                    }
                }
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::default::Default for UpdateCredsRequest {
            #[inline]
            fn default() -> UpdateCredsRequest {
                UpdateCredsRequest{display_name:
                                       ::core::default::Default::default(),
                                   note: ::core::default::Default::default(),
                                   avatar:
                                       ::core::default::Default::default(),
                                   header:
                                       ::core::default::Default::default(),
                                   field_attributes:
                                       ::core::default::Default::default(),
                                   privacy:
                                       ::core::default::Default::default(),
                                   sensitive:
                                       ::core::default::Default::default(),}
            }
        }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::clone::Clone for UpdateCredsRequest {
            #[inline]
            fn clone(&self) -> UpdateCredsRequest {
                match *self {
                    UpdateCredsRequest {
                    display_name: ref __self_0_0,
                    note: ref __self_0_1,
                    avatar: ref __self_0_2,
                    header: ref __self_0_3,
                    field_attributes: ref __self_0_4,
                    privacy: ref __self_0_5,
                    sensitive: ref __self_0_6 } =>
                    UpdateCredsRequest{display_name:
                                           ::core::clone::Clone::clone(&(*__self_0_0)),
                                       note:
                                           ::core::clone::Clone::clone(&(*__self_0_1)),
                                       avatar:
                                           ::core::clone::Clone::clone(&(*__self_0_2)),
                                       header:
                                           ::core::clone::Clone::clone(&(*__self_0_3)),
                                       field_attributes:
                                           ::core::clone::Clone::clone(&(*__self_0_4)),
                                       privacy:
                                           ::core::clone::Clone::clone(&(*__self_0_5)),
                                       sensitive:
                                           ::core::clone::Clone::clone(&(*__self_0_6)),},
                }
            }
        }
        impl ::core::marker::StructuralPartialEq for UpdateCredsRequest { }
        #[automatically_derived]
        #[allow(unused_qualifications)]
        impl ::core::cmp::PartialEq for UpdateCredsRequest {
            #[inline]
            fn eq(&self, other: &UpdateCredsRequest) -> bool {
                match *other {
                    UpdateCredsRequest {
                    display_name: ref __self_1_0,
                    note: ref __self_1_1,
                    avatar: ref __self_1_2,
                    header: ref __self_1_3,
                    field_attributes: ref __self_1_4,
                    privacy: ref __self_1_5,
                    sensitive: ref __self_1_6 } =>
                    match *self {
                        UpdateCredsRequest {
                        display_name: ref __self_0_0,
                        note: ref __self_0_1,
                        avatar: ref __self_0_2,
                        header: ref __self_0_3,
                        field_attributes: ref __self_0_4,
                        privacy: ref __self_0_5,
                        sensitive: ref __self_0_6 } =>
                        (*__self_0_0) == (*__self_1_0) &&
                            (*__self_0_1) == (*__self_1_1) &&
                            (*__self_0_2) == (*__self_1_2) &&
                            (*__self_0_3) == (*__self_1_3) &&
                            (*__self_0_4) == (*__self_1_4) &&
                            (*__self_0_5) == (*__self_1_5) &&
                            (*__self_0_6) == (*__self_1_6),
                    },
                }
            }
            #[inline]
            fn ne(&self, other: &UpdateCredsRequest) -> bool {
                match *other {
                    UpdateCredsRequest {
                    display_name: ref __self_1_0,
                    note: ref __self_1_1,
                    avatar: ref __self_1_2,
                    header: ref __self_1_3,
                    field_attributes: ref __self_1_4,
                    privacy: ref __self_1_5,
                    sensitive: ref __self_1_6 } =>
                    match *self {
                        UpdateCredsRequest {
                        display_name: ref __self_0_0,
                        note: ref __self_0_1,
                        avatar: ref __self_0_2,
                        header: ref __self_0_3,
                        field_attributes: ref __self_0_4,
                        privacy: ref __self_0_5,
                        sensitive: ref __self_0_6 } =>
                        (*__self_0_0) != (*__self_1_0) ||
                            (*__self_0_1) != (*__self_1_1) ||
                            (*__self_0_2) != (*__self_1_2) ||
                            (*__self_0_3) != (*__self_1_3) ||
                            (*__self_0_4) != (*__self_1_4) ||
                            (*__self_0_5) != (*__self_1_5) ||
                            (*__self_0_6) != (*__self_1_6),
                    },
                }
            }
        }
        impl UpdateCredsRequest {
            /// Create a new UpdateCredsRequest
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            /// ```
            pub fn new() -> UpdateCredsRequest { Default::default() }
            /// Set the new display_name value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.display_name("my new display name");
            /// ```
            pub fn display_name<D: Display>(&mut self, name: D) -> &mut Self {
                self.display_name = Some(name.to_string());
                self
            }
            /// Set the new note value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.note("my new note");
            /// ```
            pub fn note<D: Display>(&mut self, note: D) -> &mut Self {
                self.note = Some(note.to_string());
                self
            }
            /// Set the new avatar value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.avatar("/path/to/my/new/avatar");
            /// ```
            pub fn avatar<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
                let path = path.as_ref();
                let path = path.to_path_buf();
                self.avatar = Some(path);
                self
            }
            /// Set the new header value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.header("/path/to/my/new/header");
            /// ```
            pub fn header<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
                let path = path.as_ref();
                let path = path.to_path_buf();
                self.header = Some(path);
                self
            }
            /// Set the new privacy value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::{status_builder::Visibility, UpdateCredsRequest};
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.privacy(Visibility::Public);
            /// ```
            pub fn privacy(&mut self, privacy: status_builder::Visibility)
             -> &mut Self {
                self.privacy = Some(privacy);
                self
            }
            /// Set the new sensitive value
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.sensitive(true);
            /// ```
            pub fn sensitive(&mut self, sensitive: bool) -> &mut Self {
                self.sensitive = Some(sensitive);
                self
            }
            /// Add a metadata field
            ///
            /// # Example
            ///
            /// ```
            /// # extern crate elefren;
            /// use elefren::UpdateCredsRequest;
            ///
            /// let mut builder = UpdateCredsRequest::new();
            ///
            /// builder.field_attribute("some key", "some value");
            /// ```
            pub fn field_attribute(&mut self, name: &str, value: &str)
             -> &mut Self {
                self.field_attributes.push(MetadataField::new(name, value));
                self
            }
            pub(crate) fn build(&mut self) -> Result<Credentials> {
                Ok(Credentials{display_name: self.display_name.clone(),
                               note: self.note.clone(),
                               avatar: self.avatar.clone(),
                               header: self.avatar.clone(),
                               source:
                                   Some(UpdateSource{privacy:
                                                         self.privacy.clone(),
                                                     sensitive:
                                                         self.sensitive.clone(),}),
                               fields_attributes:
                                   self.field_attributes.clone(),})
            }
        }
    }
}
/// OAuth Scopes
pub mod scopes {
    use std::{cmp::{Ordering, PartialEq, PartialOrd}, collections::HashSet,
              fmt, ops::BitOr, str::FromStr};
    use serde::ser::{Serialize, Serializer};
    use crate::errors::Error;
    use serde::{Deserialize, Deserializer};
    use serde::de::{self, Visitor};
    /// Represents a set of OAuth scopes
    ///
    /// # Example
    ///
    /// ```rust
    /// use elefren::prelude::*;
    ///
    /// let read = Scopes::read_all();
    /// let write = Scopes::write_all();
    /// let follow = Scopes::follow();
    /// let all = read | write | follow;
    /// ```
    pub struct Scopes {
        scopes: HashSet<Scope>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Scopes {
        #[inline]
        fn clone(&self) -> Scopes {
            match *self {
                Scopes { scopes: ref __self_0_0 } =>
                Scopes{scopes: ::core::clone::Clone::clone(&(*__self_0_0)),},
            }
        }
    }
    impl FromStr for Scopes {
        type Err = Error;
        fn from_str(s: &str) -> Result<Scopes, Self::Err> {
            let mut set = HashSet::new();
            for scope in s.split_whitespace() {
                let scope = Scope::from_str(&scope)?;
                set.insert(scope);
            }
            Ok(Scopes{scopes: set,})
        }
    }
    impl Serialize for Scopes {
        fn serialize<S>(&self, serializer: S)
         -> ::std::result::Result<S::Ok, S::Error> where S: Serializer {
            let repr =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&self,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                };
            serializer.serialize_str(&repr)
        }
    }
    struct DeserializeScopesVisitor;
    impl <'de> Visitor<'de> for DeserializeScopesVisitor {
        type Value = Scopes;
        fn expecting(&self, formatter: &mut fmt::Formatter)
         -> Result<(), fmt::Error> {
            formatter.write_fmt(::core::fmt::Arguments::new_v1(&["space separated scopes"],
                                                               &match () {
                                                                    () => [],
                                                                }))
        }
        fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> where
         E: de::Error {
            Scopes::from_str(v).map_err(de::Error::custom)
        }
    }
    impl <'de> Deserialize<'de> for Scopes {
        fn deserialize<D>(deserializer: D)
         -> Result<Self, <D as Deserializer<'de>>::Error> where
         D: Deserializer<'de> {
            deserializer.deserialize_str(DeserializeScopesVisitor)
        }
    }
    impl Scopes {
        /// Represents all available oauth scopes: "read write follow push"
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::Scopes;
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::all();
        /// assert_eq!(&format!("{}", scope), "read write follow push");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn all() -> Scopes {
            Scopes::read_all() | Scopes::write_all() | Scopes::follow() |
                Scopes::push()
        }
        /// Represents the full "read" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::Scopes;
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::read_all();
        /// assert_eq!(&format!("{}", scope), "read");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn read_all() -> Scopes { Scopes::_read(None) }
        /// Represents a specific "read:___" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::{Read, Scopes};
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::read(Read::Accounts);
        /// assert_eq!(&format!("{}", scope), "read:accounts");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn read(subscope: Read) -> Scopes {
            Scopes::_read(Some(subscope))
        }
        /// Represents the full "write" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::Scopes;
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::write_all();
        /// assert_eq!(&format!("{}", scope), "write");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn write_all() -> Scopes { Scopes::_write(None) }
        /// Represents a specific "write:___" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::{Scopes, Write};
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::write(Write::Accounts);
        /// assert_eq!(&format!("{}", scope), "write:accounts");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn write(subscope: Write) -> Scopes {
            Scopes::_write(Some(subscope))
        }
        /// Represents the "follow" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::Scopes;
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::follow();
        /// assert_eq!(&format!("{}", scope), "follow");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn follow() -> Scopes { Scopes::new(Scope::Follow) }
        /// Represents the full "push" scope
        ///
        /// ```
        /// # extern crate elefren;
        /// # use std::error::Error;
        /// use elefren::scopes::Scopes;
        ///
        /// # fn main() -> Result<(), Box<Error>> {
        /// let scope = Scopes::push();
        /// assert_eq!(&format!("{}", scope), "push");
        /// #   Ok(())
        /// # }
        /// ```
        pub fn push() -> Scopes { Scopes::new(Scope::Push) }
        /// Combines 2 scopes together
        ///
        /// # Example
        ///
        /// ```rust
        /// use elefren::prelude::*;
        ///
        /// let read = Scopes::read_all();
        /// let write = Scopes::write_all();
        /// let read_write = read.and(write);
        /// ```
        pub fn and(self, other: Scopes) -> Scopes {
            let newset: HashSet<_> =
                self.scopes.union(&other.scopes).into_iter().map(|s|
                                                                     *s).collect();
            Scopes{scopes: newset,}
        }
        fn _write(subscope: Option<Write>) -> Scopes {
            Scopes::new(Scope::Write(subscope))
        }
        fn _read(subscope: Option<Read>) -> Scopes {
            Scopes::new(Scope::Read(subscope))
        }
        fn new(scope: Scope) -> Scopes {
            let mut set = HashSet::new();
            set.insert(scope);
            Scopes{scopes: set,}
        }
    }
    impl BitOr for Scopes {
        type Output = Scopes;
        fn bitor(self, other: Scopes) -> Self::Output { self.and(other) }
    }
    impl PartialEq for Scopes {
        fn eq(&self, other: &Scopes) -> bool {
            self.scopes.symmetric_difference(&other.scopes).next().is_none()
        }
    }
    impl Default for Scopes {
        fn default() -> Scopes { Scopes::read_all() }
    }
    impl fmt::Debug for Scopes {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            f.write_fmt(::core::fmt::Arguments::new_v1(&["["],
                                                       &match () {
                                                            () => [],
                                                        }))?;
            for scope in &self.scopes {
                f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
                                                           &match (&&scope,) {
                                                                (arg0,) =>
                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                              ::core::fmt::Debug::fmt)],
                                                            }))?;
            }
            Ok(f.write_fmt(::core::fmt::Arguments::new_v1(&["]"],
                                                          &match () {
                                                               () => [],
                                                           }))?)
        }
    }
    impl fmt::Display for Scopes {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            let mut start = true;
            let scopes =
                {
                    let mut scopes = self.scopes.iter().collect::<Vec<_>>();
                    scopes.sort();
                    scopes
                };
            for scope in &scopes {
                if !start {
                    f.write_fmt(::core::fmt::Arguments::new_v1(&[" "],
                                                               &match () {
                                                                    () => [],
                                                                }))?;
                } else { start = false; }
                f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
                                                           &match (&&scope,) {
                                                                (arg0,) =>
                                                                [::core::fmt::ArgumentV1::new(arg0,
                                                                                              ::core::fmt::Display::fmt)],
                                                            }))?;
            }
            Ok(())
        }
    }
    /// Permission scope of the application.
    /// [Details on what each permission provides][1]
    /// [1]: https://github.com/tootsuite/documentation/blob/master/Using-the-API/OAuth-details.md)
    enum Scope {

        /// Read only permissions.
        #[serde(rename = "read")]
        Read(Option<Read>),

        /// Write only permissions.
        #[serde(rename = "write")]
        Write(Option<Write>),

        /// Only permission to add and remove followers.
        #[serde(rename = "follow")]
        Follow,

        /// Push permissions
        #[serde(rename = "push")]
        Push,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Scope {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match (&*self,) {
                (&Scope::Read(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Read");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Scope::Write(ref __self_0),) => {
                    let mut debug_trait_builder = f.debug_tuple("Write");
                    let _ = debug_trait_builder.field(&&(*__self_0));
                    debug_trait_builder.finish()
                }
                (&Scope::Follow,) => {
                    let mut debug_trait_builder = f.debug_tuple("Follow");
                    debug_trait_builder.finish()
                }
                (&Scope::Push,) => {
                    let mut debug_trait_builder = f.debug_tuple("Push");
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Scope {
        #[inline]
        fn clone(&self) -> Scope {
            {
                let _: ::core::clone::AssertParamIsClone<Option<Read>>;
                let _: ::core::clone::AssertParamIsClone<Option<Write>>;
                *self
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::marker::Copy for Scope { }
    impl ::core::marker::StructuralPartialEq for Scope { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Scope {
        #[inline]
        fn eq(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        (*__self_0) == (*__arg_1_0),
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        (*__self_0) == (*__arg_1_0),
                        _ => true,
                    }
                } else { false }
            }
        }
        #[inline]
        fn ne(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        (*__self_0) != (*__arg_1_0),
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        (*__self_0) != (*__arg_1_0),
                        _ => false,
                    }
                } else { true }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialOrd for Scope {
        #[inline]
        fn partial_cmp(&self, other: &Scope)
         -> ::core::option::Option<::core::cmp::Ordering> {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        match ::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                   &(*__arg_1_0))
                            {
                            ::core::option::Option::Some(::core::cmp::Ordering::Equal)
                            =>
                            ::core::option::Option::Some(::core::cmp::Ordering::Equal),
                            cmp => cmp,
                        },
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        match ::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                   &(*__arg_1_0))
                            {
                            ::core::option::Option::Some(::core::cmp::Ordering::Equal)
                            =>
                            ::core::option::Option::Some(::core::cmp::Ordering::Equal),
                            cmp => cmp,
                        },
                        _ =>
                        ::core::option::Option::Some(::core::cmp::Ordering::Equal),
                    }
                } else { __self_vi.partial_cmp(&__arg_1_vi) }
            }
        }
        #[inline]
        fn lt(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Greater)
                            == ::core::cmp::Ordering::Less,
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Greater)
                            == ::core::cmp::Ordering::Less,
                        _ => false,
                    }
                } else { __self_vi.lt(&__arg_1_vi) }
            }
        }
        #[inline]
        fn le(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Greater)
                            != ::core::cmp::Ordering::Greater,
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Greater)
                            != ::core::cmp::Ordering::Greater,
                        _ => true,
                    }
                } else { __self_vi.le(&__arg_1_vi) }
            }
        }
        #[inline]
        fn gt(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Less)
                            == ::core::cmp::Ordering::Greater,
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Less)
                            == ::core::cmp::Ordering::Greater,
                        _ => false,
                    }
                } else { __self_vi.gt(&__arg_1_vi) }
            }
        }
        #[inline]
        fn ge(&self, other: &Scope) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) {
                        (&Scope::Read(ref __self_0),
                         &Scope::Read(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Less)
                            != ::core::cmp::Ordering::Less,
                        (&Scope::Write(ref __self_0),
                         &Scope::Write(ref __arg_1_0)) =>
                        ::core::option::Option::unwrap_or(::core::cmp::PartialOrd::partial_cmp(&(*__self_0),
                                                                                               &(*__arg_1_0)),
                                                          ::core::cmp::Ordering::Less)
                            != ::core::cmp::Ordering::Less,
                        _ => true,
                    }
                } else { __self_vi.ge(&__arg_1_vi) }
            }
        }
    }
    impl ::core::marker::StructuralEq for Scope { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::Eq for Scope {
        #[inline]
        #[doc(hidden)]
        fn assert_receiver_is_total_eq(&self) -> () {
            {
                let _: ::core::cmp::AssertParamIsEq<Option<Read>>;
                let _: ::core::cmp::AssertParamIsEq<Option<Write>>;
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::hash::Hash for Scope {
        fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
            match (&*self,) {
                (&Scope::Read(ref __self_0),) => {
                    ::core::hash::Hash::hash(&unsafe {
                                                  ::core::intrinsics::discriminant_value(self)
                                              }, state);
                    ::core::hash::Hash::hash(&(*__self_0), state)
                }
                (&Scope::Write(ref __self_0),) => {
                    ::core::hash::Hash::hash(&unsafe {
                                                  ::core::intrinsics::discriminant_value(self)
                                              }, state);
                    ::core::hash::Hash::hash(&(*__self_0), state)
                }
                _ => {
                    ::core::hash::Hash::hash(&unsafe {
                                                  ::core::intrinsics::discriminant_value(self)
                                              }, state)
                }
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_Scope: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for Scope {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    match *self {
                        Scope::Read(ref __field0) =>
                        _serde::Serializer::serialize_newtype_variant(__serializer,
                                                                      "Scope",
                                                                      0u32,
                                                                      "read",
                                                                      __field0),
                        Scope::Write(ref __field0) =>
                        _serde::Serializer::serialize_newtype_variant(__serializer,
                                                                      "Scope",
                                                                      1u32,
                                                                      "write",
                                                                      __field0),
                        Scope::Follow =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Scope",
                                                                   2u32,
                                                                   "follow"),
                        Scope::Push =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Scope",
                                                                   3u32,
                                                                   "push"),
                    }
                }
            }
        };
    impl FromStr for Scope {
        type Err = Error;
        fn from_str(s: &str) -> Result<Scope, Self::Err> {
            Ok(match s {
                   "read" => Scope::Read(None),
                   "write" => Scope::Write(None),
                   "follow" => Scope::Follow,
                   "push" => Scope::Push,
                   read if read.starts_with("read:") => {
                       let r: Read = Read::from_str(&read[5..])?;
                       Scope::Read(Some(r))
                   }
                   write if write.starts_with("write:") => {
                       let w: Write = Write::from_str(&write[6..])?;
                       Scope::Write(Some(w))
                   }
                   _ => return Err(Error::Other("Unknown scope".to_string())),
               })
        }
    }
    impl Ord for Scope {
        fn cmp(&self, other: &Scope) -> Ordering {
            match (*self, *other) {
                (Scope::Read(None), Scope::Read(None)) => Ordering::Equal,
                (Scope::Read(None), Scope::Read(Some(..))) => Ordering::Less,
                (Scope::Read(Some(..)), Scope::Read(None)) =>
                Ordering::Greater,
                (Scope::Read(Some(ref a)), Scope::Read(Some(ref b))) =>
                a.cmp(b),
                (Scope::Write(None), Scope::Write(None)) => Ordering::Equal,
                (Scope::Write(None), Scope::Write(Some(..))) =>
                Ordering::Less,
                (Scope::Write(Some(..)), Scope::Write(None)) =>
                Ordering::Greater,
                (Scope::Write(Some(ref a)), Scope::Write(Some(ref b))) =>
                a.cmp(b),
                (Scope::Read(..), Scope::Write(..)) => Ordering::Less,
                (Scope::Read(..), Scope::Follow) => Ordering::Less,
                (Scope::Read(..), Scope::Push) => Ordering::Less,
                (Scope::Write(..), Scope::Read(..)) => Ordering::Greater,
                (Scope::Write(..), Scope::Follow) => Ordering::Less,
                (Scope::Write(..), Scope::Push) => Ordering::Less,
                (Scope::Follow, Scope::Read(..)) => Ordering::Greater,
                (Scope::Follow, Scope::Write(..)) => Ordering::Greater,
                (Scope::Follow, Scope::Follow) => Ordering::Equal,
                (Scope::Follow, Scope::Push) => Ordering::Less,
                (Scope::Push, Scope::Push) => Ordering::Equal,
                (Scope::Push, _) => Ordering::Greater,
            }
        }
    }
    impl fmt::Display for Scope {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            use self::Scope::*;
            let s =
                match *self {
                    Read(Some(ref r)) => return fmt::Display::fmt(r, f),
                    Read(None) => "read",
                    Write(Some(ref w)) => return fmt::Display::fmt(w, f),
                    Write(None) => "write",
                    Follow => "follow",
                    Push => "push",
                };
            f.write_fmt(::core::fmt::Arguments::new_v1(&[""],
                                                       &match (&s,) {
                                                            (arg0,) =>
                                                            [::core::fmt::ArgumentV1::new(arg0,
                                                                                          ::core::fmt::Display::fmt)],
                                                        }))
        }
    }
    impl Default for Scope {
        fn default() -> Self { Scope::Read(None) }
    }
    /// Represents the granular "read:___" oauth scopes
    pub enum Read {

        /// Accounts
        #[serde(rename = "accounts")]
        Accounts,

        /// Blocks
        #[serde(rename = "blocks")]
        Blocks,

        /// Favourites
        #[serde(rename = "favourites")]
        Favourites,

        /// Filters
        #[serde(rename = "filters")]
        Filters,

        /// Follows
        #[serde(rename = "follows")]
        Follows,

        /// Lists
        #[serde(rename = "lists")]
        Lists,

        /// Mutes
        #[serde(rename = "mutes")]
        Mutes,

        /// Notifications
        #[serde(rename = "notifications")]
        Notifications,

        /// Reports
        #[serde(rename = "reports")]
        Reports,

        /// Search
        #[serde(rename = "search")]
        Search,

        /// Statuses
        #[serde(rename = "statuses")]
        Statuses,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Read {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match (&*self,) {
                (&Read::Accounts,) => {
                    let mut debug_trait_builder = f.debug_tuple("Accounts");
                    debug_trait_builder.finish()
                }
                (&Read::Blocks,) => {
                    let mut debug_trait_builder = f.debug_tuple("Blocks");
                    debug_trait_builder.finish()
                }
                (&Read::Favourites,) => {
                    let mut debug_trait_builder = f.debug_tuple("Favourites");
                    debug_trait_builder.finish()
                }
                (&Read::Filters,) => {
                    let mut debug_trait_builder = f.debug_tuple("Filters");
                    debug_trait_builder.finish()
                }
                (&Read::Follows,) => {
                    let mut debug_trait_builder = f.debug_tuple("Follows");
                    debug_trait_builder.finish()
                }
                (&Read::Lists,) => {
                    let mut debug_trait_builder = f.debug_tuple("Lists");
                    debug_trait_builder.finish()
                }
                (&Read::Mutes,) => {
                    let mut debug_trait_builder = f.debug_tuple("Mutes");
                    debug_trait_builder.finish()
                }
                (&Read::Notifications,) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("Notifications");
                    debug_trait_builder.finish()
                }
                (&Read::Reports,) => {
                    let mut debug_trait_builder = f.debug_tuple("Reports");
                    debug_trait_builder.finish()
                }
                (&Read::Search,) => {
                    let mut debug_trait_builder = f.debug_tuple("Search");
                    debug_trait_builder.finish()
                }
                (&Read::Statuses,) => {
                    let mut debug_trait_builder = f.debug_tuple("Statuses");
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Read {
        #[inline]
        fn clone(&self) -> Read { { *self } }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::marker::Copy for Read { }
    impl ::core::marker::StructuralPartialEq for Read { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Read {
        #[inline]
        fn eq(&self, other: &Read) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) { _ => true, }
                } else { false }
            }
        }
    }
    impl ::core::marker::StructuralEq for Read { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::Eq for Read {
        #[inline]
        #[doc(hidden)]
        fn assert_receiver_is_total_eq(&self) -> () { { } }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::hash::Hash for Read {
        fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
            match (&*self,) {
                _ => {
                    ::core::hash::Hash::hash(&unsafe {
                                                  ::core::intrinsics::discriminant_value(self)
                                              }, state)
                }
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_Read: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for Read {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    match *self {
                        Read::Accounts =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   0u32,
                                                                   "accounts"),
                        Read::Blocks =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   1u32,
                                                                   "blocks"),
                        Read::Favourites =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   2u32,
                                                                   "favourites"),
                        Read::Filters =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   3u32,
                                                                   "filters"),
                        Read::Follows =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   4u32,
                                                                   "follows"),
                        Read::Lists =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   5u32,
                                                                   "lists"),
                        Read::Mutes =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   6u32,
                                                                   "mutes"),
                        Read::Notifications =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   7u32,
                                                                   "notifications"),
                        Read::Reports =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   8u32,
                                                                   "reports"),
                        Read::Search =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   9u32,
                                                                   "search"),
                        Read::Statuses =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Read",
                                                                   10u32,
                                                                   "statuses"),
                    }
                }
            }
        };
    impl FromStr for Read {
        type Err = Error;
        fn from_str(s: &str) -> Result<Read, Self::Err> {
            Ok(match s {
                   "accounts" => Read::Accounts,
                   "blocks" => Read::Blocks,
                   "favourites" => Read::Favourites,
                   "filters" => Read::Filters,
                   "follows" => Read::Follows,
                   "lists" => Read::Lists,
                   "mutes" => Read::Mutes,
                   "notifications" => Read::Notifications,
                   "reports" => Read::Reports,
                   "search" => Read::Search,
                   "statuses" => Read::Statuses,
                   _ =>
                   return Err(Error::Other("Unknown 'read' subcategory".to_string())),
               })
        }
    }
    impl PartialOrd for Read {
        fn partial_cmp(&self, other: &Read) -> Option<Ordering> {
            Some(self.cmp(other))
        }
    }
    impl Ord for Read {
        fn cmp(&self, other: &Read) -> Ordering {
            let a =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&self,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Debug::fmt)],
                                                                             }));
                    res
                };
            let b =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&other,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Debug::fmt)],
                                                                             }));
                    res
                };
            a.cmp(&b)
        }
    }
    impl fmt::Display for Read {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            f.write_fmt(::core::fmt::Arguments::new_v1(&["read:"],
                                                       &match (&match *self {
                                                                    Read::Accounts
                                                                    =>
                                                                    "accounts",
                                                                    Read::Blocks
                                                                    =>
                                                                    "blocks",
                                                                    Read::Favourites
                                                                    =>
                                                                    "favourites",
                                                                    Read::Filters
                                                                    =>
                                                                    "filters",
                                                                    Read::Follows
                                                                    =>
                                                                    "follows",
                                                                    Read::Lists
                                                                    =>
                                                                    "lists",
                                                                    Read::Mutes
                                                                    =>
                                                                    "mutes",
                                                                    Read::Notifications
                                                                    =>
                                                                    "notifications",
                                                                    Read::Reports
                                                                    =>
                                                                    "reports",
                                                                    Read::Search
                                                                    =>
                                                                    "search",
                                                                    Read::Statuses
                                                                    =>
                                                                    "statuses",
                                                                },) {
                                                            (arg0,) =>
                                                            [::core::fmt::ArgumentV1::new(arg0,
                                                                                          ::core::fmt::Display::fmt)],
                                                        }))
        }
    }
    /// Represents the granular "write:___" oauth scopes
    pub enum Write {

        /// Accounts
        #[serde(rename = "accounts")]
        Accounts,

        /// Blocks
        #[serde(rename = "blocks")]
        Blocks,

        /// Favourites
        #[serde(rename = "favourites")]
        Favourites,

        /// Filters
        #[serde(rename = "filters")]
        Filters,

        /// Follows
        #[serde(rename = "follows")]
        Follows,

        /// Lists
        #[serde(rename = "lists")]
        Lists,

        /// Media
        #[serde(rename = "media")]
        Media,

        /// Mutes
        #[serde(rename = "mutes")]
        Mutes,

        /// Notifications
        #[serde(rename = "notifications")]
        Notifications,

        /// Reports
        #[serde(rename = "reports")]
        Reports,

        /// Statuses
        #[serde(rename = "statuses")]
        Statuses,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Write {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match (&*self,) {
                (&Write::Accounts,) => {
                    let mut debug_trait_builder = f.debug_tuple("Accounts");
                    debug_trait_builder.finish()
                }
                (&Write::Blocks,) => {
                    let mut debug_trait_builder = f.debug_tuple("Blocks");
                    debug_trait_builder.finish()
                }
                (&Write::Favourites,) => {
                    let mut debug_trait_builder = f.debug_tuple("Favourites");
                    debug_trait_builder.finish()
                }
                (&Write::Filters,) => {
                    let mut debug_trait_builder = f.debug_tuple("Filters");
                    debug_trait_builder.finish()
                }
                (&Write::Follows,) => {
                    let mut debug_trait_builder = f.debug_tuple("Follows");
                    debug_trait_builder.finish()
                }
                (&Write::Lists,) => {
                    let mut debug_trait_builder = f.debug_tuple("Lists");
                    debug_trait_builder.finish()
                }
                (&Write::Media,) => {
                    let mut debug_trait_builder = f.debug_tuple("Media");
                    debug_trait_builder.finish()
                }
                (&Write::Mutes,) => {
                    let mut debug_trait_builder = f.debug_tuple("Mutes");
                    debug_trait_builder.finish()
                }
                (&Write::Notifications,) => {
                    let mut debug_trait_builder =
                        f.debug_tuple("Notifications");
                    debug_trait_builder.finish()
                }
                (&Write::Reports,) => {
                    let mut debug_trait_builder = f.debug_tuple("Reports");
                    debug_trait_builder.finish()
                }
                (&Write::Statuses,) => {
                    let mut debug_trait_builder = f.debug_tuple("Statuses");
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Write {
        #[inline]
        fn clone(&self) -> Write { { *self } }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::marker::Copy for Write { }
    impl ::core::marker::StructuralPartialEq for Write { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Write {
        #[inline]
        fn eq(&self, other: &Write) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) { _ => true, }
                } else { false }
            }
        }
    }
    impl ::core::marker::StructuralEq for Write { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::Eq for Write {
        #[inline]
        #[doc(hidden)]
        fn assert_receiver_is_total_eq(&self) -> () { { } }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::hash::Hash for Write {
        fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
            match (&*self,) {
                _ => {
                    ::core::hash::Hash::hash(&unsafe {
                                                  ::core::intrinsics::discriminant_value(self)
                                              }, state)
                }
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_Write: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for Write {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    match *self {
                        Write::Accounts =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   0u32,
                                                                   "accounts"),
                        Write::Blocks =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   1u32,
                                                                   "blocks"),
                        Write::Favourites =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   2u32,
                                                                   "favourites"),
                        Write::Filters =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   3u32,
                                                                   "filters"),
                        Write::Follows =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   4u32,
                                                                   "follows"),
                        Write::Lists =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   5u32,
                                                                   "lists"),
                        Write::Media =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   6u32,
                                                                   "media"),
                        Write::Mutes =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   7u32,
                                                                   "mutes"),
                        Write::Notifications =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   8u32,
                                                                   "notifications"),
                        Write::Reports =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   9u32,
                                                                   "reports"),
                        Write::Statuses =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Write",
                                                                   10u32,
                                                                   "statuses"),
                    }
                }
            }
        };
    impl FromStr for Write {
        type Err = Error;
        fn from_str(s: &str) -> Result<Write, Self::Err> {
            Ok(match s {
                   "accounts" => Write::Accounts,
                   "blocks" => Write::Blocks,
                   "favourites" => Write::Favourites,
                   "filters" => Write::Filters,
                   "follows" => Write::Follows,
                   "lists" => Write::Lists,
                   "media" => Write::Media,
                   "mutes" => Write::Mutes,
                   "notifications" => Write::Notifications,
                   "reports" => Write::Reports,
                   "statuses" => Write::Statuses,
                   _ =>
                   return Err(Error::Other("Unknown 'write' subcategory".to_string())),
               })
        }
    }
    impl PartialOrd for Write {
        fn partial_cmp(&self, other: &Write) -> Option<Ordering> {
            Some(self.cmp(other))
        }
    }
    impl Ord for Write {
        fn cmp(&self, other: &Write) -> Ordering {
            let a =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&self,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Debug::fmt)],
                                                                             }));
                    res
                };
            let b =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&other,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Debug::fmt)],
                                                                             }));
                    res
                };
            a.cmp(&b)
        }
    }
    impl fmt::Display for Write {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            f.write_fmt(::core::fmt::Arguments::new_v1(&["write:"],
                                                       &match (&match *self {
                                                                    Write::Accounts
                                                                    =>
                                                                    "accounts",
                                                                    Write::Blocks
                                                                    =>
                                                                    "blocks",
                                                                    Write::Favourites
                                                                    =>
                                                                    "favourites",
                                                                    Write::Filters
                                                                    =>
                                                                    "filters",
                                                                    Write::Follows
                                                                    =>
                                                                    "follows",
                                                                    Write::Lists
                                                                    =>
                                                                    "lists",
                                                                    Write::Media
                                                                    =>
                                                                    "media",
                                                                    Write::Mutes
                                                                    =>
                                                                    "mutes",
                                                                    Write::Notifications
                                                                    =>
                                                                    "notifications",
                                                                    Write::Reports
                                                                    =>
                                                                    "reports",
                                                                    Write::Statuses
                                                                    =>
                                                                    "statuses",
                                                                },) {
                                                            (arg0,) =>
                                                            [::core::fmt::ArgumentV1::new(arg0,
                                                                                          ::core::fmt::Display::fmt)],
                                                        }))
        }
    }
}
/// Constructing a status
pub mod status_builder {
    use isolang::Language;
    /// A builder pattern struct for constructing a status.
    ///
    /// # Example
    ///
    /// ```
    /// # extern crate elefren;
    /// # use elefren::{Language, StatusBuilder};
    ///
    /// # fn main() -> Result<(), elefren::Error> {
    /// let status = StatusBuilder::new()
    ///     .status("a status")
    ///     .sensitive(true)
    ///     .spoiler_text("a CW")
    ///     .language(Language::Eng)
    ///     .build()?;
    /// # Ok(())
    /// # }
    /// ```
    pub struct StatusBuilder {
        status: Option<String>,
        in_reply_to_id: Option<String>,
        media_ids: Option<Vec<String>>,
        sensitive: Option<bool>,
        spoiler_text: Option<String>,
        content_type: Option<String>,
        visibility: Option<Visibility>,
        language: Option<Language>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for StatusBuilder {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                StatusBuilder {
                status: ref __self_0_0,
                in_reply_to_id: ref __self_0_1,
                media_ids: ref __self_0_2,
                sensitive: ref __self_0_3,
                spoiler_text: ref __self_0_4,
                content_type: ref __self_0_5,
                visibility: ref __self_0_6,
                language: ref __self_0_7 } => {
                    let mut debug_trait_builder =
                        f.debug_struct("StatusBuilder");
                    let _ =
                        debug_trait_builder.field("status", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("in_reply_to_id",
                                                  &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("media_ids",
                                                  &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("sensitive",
                                                  &&(*__self_0_3));
                    let _ =
                        debug_trait_builder.field("spoiler_text",
                                                  &&(*__self_0_4));
                    let _ =
                        debug_trait_builder.field("content_type",
                                                  &&(*__self_0_5));
                    let _ =
                        debug_trait_builder.field("visibility",
                                                  &&(*__self_0_6));
                    let _ =
                        debug_trait_builder.field("language",
                                                  &&(*__self_0_7));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::default::Default for StatusBuilder {
        #[inline]
        fn default() -> StatusBuilder {
            StatusBuilder{status: ::core::default::Default::default(),
                          in_reply_to_id: ::core::default::Default::default(),
                          media_ids: ::core::default::Default::default(),
                          sensitive: ::core::default::Default::default(),
                          spoiler_text: ::core::default::Default::default(),
                          content_type: ::core::default::Default::default(),
                          visibility: ::core::default::Default::default(),
                          language: ::core::default::Default::default(),}
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for StatusBuilder {
        #[inline]
        fn clone(&self) -> StatusBuilder {
            match *self {
                StatusBuilder {
                status: ref __self_0_0,
                in_reply_to_id: ref __self_0_1,
                media_ids: ref __self_0_2,
                sensitive: ref __self_0_3,
                spoiler_text: ref __self_0_4,
                content_type: ref __self_0_5,
                visibility: ref __self_0_6,
                language: ref __self_0_7 } =>
                StatusBuilder{status:
                                  ::core::clone::Clone::clone(&(*__self_0_0)),
                              in_reply_to_id:
                                  ::core::clone::Clone::clone(&(*__self_0_1)),
                              media_ids:
                                  ::core::clone::Clone::clone(&(*__self_0_2)),
                              sensitive:
                                  ::core::clone::Clone::clone(&(*__self_0_3)),
                              spoiler_text:
                                  ::core::clone::Clone::clone(&(*__self_0_4)),
                              content_type:
                                  ::core::clone::Clone::clone(&(*__self_0_5)),
                              visibility:
                                  ::core::clone::Clone::clone(&(*__self_0_6)),
                              language:
                                  ::core::clone::Clone::clone(&(*__self_0_7)),},
            }
        }
    }
    impl ::core::marker::StructuralPartialEq for StatusBuilder { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for StatusBuilder {
        #[inline]
        fn eq(&self, other: &StatusBuilder) -> bool {
            match *other {
                StatusBuilder {
                status: ref __self_1_0,
                in_reply_to_id: ref __self_1_1,
                media_ids: ref __self_1_2,
                sensitive: ref __self_1_3,
                spoiler_text: ref __self_1_4,
                content_type: ref __self_1_5,
                visibility: ref __self_1_6,
                language: ref __self_1_7 } =>
                match *self {
                    StatusBuilder {
                    status: ref __self_0_0,
                    in_reply_to_id: ref __self_0_1,
                    media_ids: ref __self_0_2,
                    sensitive: ref __self_0_3,
                    spoiler_text: ref __self_0_4,
                    content_type: ref __self_0_5,
                    visibility: ref __self_0_6,
                    language: ref __self_0_7 } =>
                    (*__self_0_0) == (*__self_1_0) &&
                        (*__self_0_1) == (*__self_1_1) &&
                        (*__self_0_2) == (*__self_1_2) &&
                        (*__self_0_3) == (*__self_1_3) &&
                        (*__self_0_4) == (*__self_1_4) &&
                        (*__self_0_5) == (*__self_1_5) &&
                        (*__self_0_6) == (*__self_1_6) &&
                        (*__self_0_7) == (*__self_1_7),
                },
            }
        }
        #[inline]
        fn ne(&self, other: &StatusBuilder) -> bool {
            match *other {
                StatusBuilder {
                status: ref __self_1_0,
                in_reply_to_id: ref __self_1_1,
                media_ids: ref __self_1_2,
                sensitive: ref __self_1_3,
                spoiler_text: ref __self_1_4,
                content_type: ref __self_1_5,
                visibility: ref __self_1_6,
                language: ref __self_1_7 } =>
                match *self {
                    StatusBuilder {
                    status: ref __self_0_0,
                    in_reply_to_id: ref __self_0_1,
                    media_ids: ref __self_0_2,
                    sensitive: ref __self_0_3,
                    spoiler_text: ref __self_0_4,
                    content_type: ref __self_0_5,
                    visibility: ref __self_0_6,
                    language: ref __self_0_7 } =>
                    (*__self_0_0) != (*__self_1_0) ||
                        (*__self_0_1) != (*__self_1_1) ||
                        (*__self_0_2) != (*__self_1_2) ||
                        (*__self_0_3) != (*__self_1_3) ||
                        (*__self_0_4) != (*__self_1_4) ||
                        (*__self_0_5) != (*__self_1_5) ||
                        (*__self_0_6) != (*__self_1_6) ||
                        (*__self_0_7) != (*__self_1_7),
                },
            }
        }
    }
    impl StatusBuilder {
        /// Create a StatusBuilder object
        ///
        /// # Example
        ///
        /// ```rust,no_run
        /// # use elefren::prelude::*;
        /// # use elefren::status_builder::Visibility;
        /// # fn main() -> Result<(), elefren::Error> {
        /// # let data = Data {
        /// #     base: "".into(),
        /// #     client_id: "".into(),
        /// #     client_secret: "".into(),
        /// #     redirect: "".into(),
        /// #     token: "".into(),
        /// # };
        /// # let client = Mastodon::from(data);
        /// let status = StatusBuilder::new()
        ///     .status("a status")
        ///     .visibility(Visibility::Public)
        ///     .build()?;
        /// client.new_status(status)?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn new() -> StatusBuilder { StatusBuilder::default() }
        /// Set the text for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new().status("awoooooo").build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn status<I: Into<String>>(&mut self, status: I) -> &mut Self {
            self.status = Some(status.into());
            self
        }
        /// Set the in_reply_to_id for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .status("awooooo")
        ///     .in_reply_to("12345")
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn in_reply_to<I: Into<String>>(&mut self, id: I) -> &mut Self {
            self.in_reply_to_id = Some(id.into());
            self
        }
        /// Set the media_ids for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new().media_ids(&["foo", "bar"]).build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn media_ids<S: std::fmt::Display,
                         I: IntoIterator<Item = S>>(&mut self, ids: I)
         -> &mut Self {
            self.media_ids =
                Some(ids.into_iter().map(|s|
                                             s.to_string()).collect::<Vec<_>>());
            self
        }
        /// Set the sensitive attribute for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .media_ids(&["foo", "bar"])
        ///     .sensitive(true)
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn sensitive(&mut self, sensitive: bool) -> &mut Self {
            self.sensitive = Some(sensitive);
            self
        }
        /// Set the spoiler text/CW for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .status("awoooo!!")
        ///     .spoiler_text("awoo inside")
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn spoiler_text<I: Into<String>>(&mut self, spoiler_text: I)
         -> &mut Self {
            self.spoiler_text = Some(spoiler_text.into());
            self
        }
        /// Set the content type of the post
        ///
        /// This is a Pleroma and Glitch-soc extension of the API.
        ///
        /// # Possible values
        /// - `text/plain`
        /// - `text/html`
        /// - `text/markdown`
        /// - `text/bbcode` (Pleroma only)
        ///
        /// The set of supported content types may vary by server.
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .status("<b>thicc</b>")
        ///     .content_type("text/html")
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn content_type<I: Into<String>>(&mut self, content_type: I)
         -> &mut Self {
            self.content_type = Some(content_type.into());
            self
        }
        /// Set the visibility for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # use elefren::status_builder::Visibility;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .status("awooooooo")
        ///     .visibility(Visibility::Public)
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn visibility(&mut self, visibility: Visibility) -> &mut Self {
            self.visibility = Some(visibility);
            self
        }
        /// Set the language for the post
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # use elefren::Language;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new()
        ///     .status("awoo!!!!")
        ///     .language(Language::Eng)
        ///     .build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn language(&mut self, language: Language) -> &mut Self {
            self.language = Some(language);
            self
        }
        /// Constructs a NewStatus
        ///
        /// # Example
        ///
        /// ```rust
        /// # use elefren::prelude::*;
        /// # fn main() -> Result<(), elefren::Error> {
        /// let status = StatusBuilder::new().status("awoo!").build()?;
        /// #   Ok(())
        /// # }
        /// ```
        pub fn build(&self) -> Result<NewStatus, crate::Error> {
            if self.status.is_none() && self.media_ids.is_none() {
                return Err(crate::Error::Other("status text or media ids are required in order to post a status".to_string()));
            }
            Ok(NewStatus{status: self.status.clone(),
                         in_reply_to_id: self.in_reply_to_id.clone(),
                         media_ids: self.media_ids.clone(),
                         sensitive: self.sensitive.clone(),
                         spoiler_text: self.spoiler_text.clone(),
                         visibility: self.visibility.clone(),
                         language: self.language.clone(),
                         content_type: self.content_type.clone(),})
        }
    }
    /// Represents a post that can be sent to the POST /api/v1/status endpoint
    pub struct NewStatus {
        #[serde(skip_serializing_if = "Option::is_none")]
        status: Option<String>,
        #[serde(skip_serializing_if = "Option::is_none")]
        in_reply_to_id: Option<String>,
        #[serde(skip_serializing_if = "Option::is_none")]
        media_ids: Option<Vec<String>>,
        #[serde(skip_serializing_if = "Option::is_none")]
        sensitive: Option<bool>,
        #[serde(skip_serializing_if = "Option::is_none")]
        spoiler_text: Option<String>,
        #[serde(skip_serializing_if = "Option::is_none")]
        visibility: Option<Visibility>,
        #[serde(skip_serializing_if = "Option::is_none")]
        language: Option<Language>,
        #[serde(skip_serializing_if = "Option::is_none")]
        content_type: Option<String>,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for NewStatus {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match *self {
                NewStatus {
                status: ref __self_0_0,
                in_reply_to_id: ref __self_0_1,
                media_ids: ref __self_0_2,
                sensitive: ref __self_0_3,
                spoiler_text: ref __self_0_4,
                visibility: ref __self_0_5,
                language: ref __self_0_6,
                content_type: ref __self_0_7 } => {
                    let mut debug_trait_builder = f.debug_struct("NewStatus");
                    let _ =
                        debug_trait_builder.field("status", &&(*__self_0_0));
                    let _ =
                        debug_trait_builder.field("in_reply_to_id",
                                                  &&(*__self_0_1));
                    let _ =
                        debug_trait_builder.field("media_ids",
                                                  &&(*__self_0_2));
                    let _ =
                        debug_trait_builder.field("sensitive",
                                                  &&(*__self_0_3));
                    let _ =
                        debug_trait_builder.field("spoiler_text",
                                                  &&(*__self_0_4));
                    let _ =
                        debug_trait_builder.field("visibility",
                                                  &&(*__self_0_5));
                    let _ =
                        debug_trait_builder.field("language",
                                                  &&(*__self_0_6));
                    let _ =
                        debug_trait_builder.field("content_type",
                                                  &&(*__self_0_7));
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::default::Default for NewStatus {
        #[inline]
        fn default() -> NewStatus {
            NewStatus{status: ::core::default::Default::default(),
                      in_reply_to_id: ::core::default::Default::default(),
                      media_ids: ::core::default::Default::default(),
                      sensitive: ::core::default::Default::default(),
                      spoiler_text: ::core::default::Default::default(),
                      visibility: ::core::default::Default::default(),
                      language: ::core::default::Default::default(),
                      content_type: ::core::default::Default::default(),}
        }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for NewStatus {
        #[inline]
        fn clone(&self) -> NewStatus {
            match *self {
                NewStatus {
                status: ref __self_0_0,
                in_reply_to_id: ref __self_0_1,
                media_ids: ref __self_0_2,
                sensitive: ref __self_0_3,
                spoiler_text: ref __self_0_4,
                visibility: ref __self_0_5,
                language: ref __self_0_6,
                content_type: ref __self_0_7 } =>
                NewStatus{status: ::core::clone::Clone::clone(&(*__self_0_0)),
                          in_reply_to_id:
                              ::core::clone::Clone::clone(&(*__self_0_1)),
                          media_ids:
                              ::core::clone::Clone::clone(&(*__self_0_2)),
                          sensitive:
                              ::core::clone::Clone::clone(&(*__self_0_3)),
                          spoiler_text:
                              ::core::clone::Clone::clone(&(*__self_0_4)),
                          visibility:
                              ::core::clone::Clone::clone(&(*__self_0_5)),
                          language:
                              ::core::clone::Clone::clone(&(*__self_0_6)),
                          content_type:
                              ::core::clone::Clone::clone(&(*__self_0_7)),},
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_NewStatus: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for NewStatus {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    let mut __serde_state =
                        match _serde::Serializer::serialize_struct(__serializer,
                                                                   "NewStatus",
                                                                   false as
                                                                       usize +
                                                                       if Option::is_none(&self.status)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.in_reply_to_id)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.media_ids)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.sensitive)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.spoiler_text)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.visibility)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.language)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       } +
                                                                       if Option::is_none(&self.content_type)
                                                                          {
                                                                           0
                                                                       } else {
                                                                           1
                                                                       }) {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    if !Option::is_none(&self.status) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "status",
                                                                            &self.status)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "status")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.in_reply_to_id) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "in_reply_to_id",
                                                                            &self.in_reply_to_id)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "in_reply_to_id")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.media_ids) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "media_ids",
                                                                            &self.media_ids)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "media_ids")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.sensitive) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "sensitive",
                                                                            &self.sensitive)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "sensitive")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.spoiler_text) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "spoiler_text",
                                                                            &self.spoiler_text)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "spoiler_text")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.visibility) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "visibility",
                                                                            &self.visibility)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "visibility")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.language) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "language",
                                                                            &self.language)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "language")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    if !Option::is_none(&self.content_type) {
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "content_type",
                                                                            &self.content_type)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    } else {
                        match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                       "content_type")
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                    }
                    _serde::ser::SerializeStruct::end(__serde_state)
                }
            }
        };
    impl ::core::marker::StructuralPartialEq for NewStatus { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for NewStatus {
        #[inline]
        fn eq(&self, other: &NewStatus) -> bool {
            match *other {
                NewStatus {
                status: ref __self_1_0,
                in_reply_to_id: ref __self_1_1,
                media_ids: ref __self_1_2,
                sensitive: ref __self_1_3,
                spoiler_text: ref __self_1_4,
                visibility: ref __self_1_5,
                language: ref __self_1_6,
                content_type: ref __self_1_7 } =>
                match *self {
                    NewStatus {
                    status: ref __self_0_0,
                    in_reply_to_id: ref __self_0_1,
                    media_ids: ref __self_0_2,
                    sensitive: ref __self_0_3,
                    spoiler_text: ref __self_0_4,
                    visibility: ref __self_0_5,
                    language: ref __self_0_6,
                    content_type: ref __self_0_7 } =>
                    (*__self_0_0) == (*__self_1_0) &&
                        (*__self_0_1) == (*__self_1_1) &&
                        (*__self_0_2) == (*__self_1_2) &&
                        (*__self_0_3) == (*__self_1_3) &&
                        (*__self_0_4) == (*__self_1_4) &&
                        (*__self_0_5) == (*__self_1_5) &&
                        (*__self_0_6) == (*__self_1_6) &&
                        (*__self_0_7) == (*__self_1_7),
                },
            }
        }
        #[inline]
        fn ne(&self, other: &NewStatus) -> bool {
            match *other {
                NewStatus {
                status: ref __self_1_0,
                in_reply_to_id: ref __self_1_1,
                media_ids: ref __self_1_2,
                sensitive: ref __self_1_3,
                spoiler_text: ref __self_1_4,
                visibility: ref __self_1_5,
                language: ref __self_1_6,
                content_type: ref __self_1_7 } =>
                match *self {
                    NewStatus {
                    status: ref __self_0_0,
                    in_reply_to_id: ref __self_0_1,
                    media_ids: ref __self_0_2,
                    sensitive: ref __self_0_3,
                    spoiler_text: ref __self_0_4,
                    visibility: ref __self_0_5,
                    language: ref __self_0_6,
                    content_type: ref __self_0_7 } =>
                    (*__self_0_0) != (*__self_1_0) ||
                        (*__self_0_1) != (*__self_1_1) ||
                        (*__self_0_2) != (*__self_1_2) ||
                        (*__self_0_3) != (*__self_1_3) ||
                        (*__self_0_4) != (*__self_1_4) ||
                        (*__self_0_5) != (*__self_1_5) ||
                        (*__self_0_6) != (*__self_1_6) ||
                        (*__self_0_7) != (*__self_1_7),
                },
            }
        }
    }
    /// The visibility of a status.
    #[serde(rename_all = "lowercase")]
    pub enum Visibility {

        /// A Direct message to a user
        Direct,

        /// Only available to followers
        Private,

        /// Not shown in public timelines
        Unlisted,

        /// Posted to public timelines
        Public,
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::clone::Clone for Visibility {
        #[inline]
        fn clone(&self) -> Visibility { { *self } }
    }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::marker::Copy for Visibility { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::fmt::Debug for Visibility {
        fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
            match (&*self,) {
                (&Visibility::Direct,) => {
                    let mut debug_trait_builder = f.debug_tuple("Direct");
                    debug_trait_builder.finish()
                }
                (&Visibility::Private,) => {
                    let mut debug_trait_builder = f.debug_tuple("Private");
                    debug_trait_builder.finish()
                }
                (&Visibility::Unlisted,) => {
                    let mut debug_trait_builder = f.debug_tuple("Unlisted");
                    debug_trait_builder.finish()
                }
                (&Visibility::Public,) => {
                    let mut debug_trait_builder = f.debug_tuple("Public");
                    debug_trait_builder.finish()
                }
            }
        }
    }
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_DESERIALIZE_FOR_Visibility: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl <'de> _serde::Deserialize<'de> for Visibility {
                fn deserialize<__D>(__deserializer: __D)
                 -> _serde::export::Result<Self, __D::Error> where
                 __D: _serde::Deserializer<'de> {
                    #[allow(non_camel_case_types)]
                    enum __Field { __field0, __field1, __field2, __field3, }
                    struct __FieldVisitor;
                    impl <'de> _serde::de::Visitor<'de> for __FieldVisitor {
                        type Value = __Field;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "variant identifier")
                        }
                        fn visit_u64<__E>(self, __value: u64)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                0u64 => _serde::export::Ok(__Field::__field0),
                                1u64 => _serde::export::Ok(__Field::__field1),
                                2u64 => _serde::export::Ok(__Field::__field2),
                                3u64 => _serde::export::Ok(__Field::__field3),
                                _ =>
                                _serde::export::Err(_serde::de::Error::invalid_value(_serde::de::Unexpected::Unsigned(__value),
                                                                                     &"variant index 0 <= i < 4")),
                            }
                        }
                        fn visit_str<__E>(self, __value: &str)
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                "direct" =>
                                _serde::export::Ok(__Field::__field0),
                                "private" =>
                                _serde::export::Ok(__Field::__field1),
                                "unlisted" =>
                                _serde::export::Ok(__Field::__field2),
                                "public" =>
                                _serde::export::Ok(__Field::__field3),
                                _ => {
                                    _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                           VARIANTS))
                                }
                            }
                        }
                        fn visit_bytes<__E>(self, __value: &[u8])
                         -> _serde::export::Result<Self::Value, __E> where
                         __E: _serde::de::Error {
                            match __value {
                                b"direct" =>
                                _serde::export::Ok(__Field::__field0),
                                b"private" =>
                                _serde::export::Ok(__Field::__field1),
                                b"unlisted" =>
                                _serde::export::Ok(__Field::__field2),
                                b"public" =>
                                _serde::export::Ok(__Field::__field3),
                                _ => {
                                    let __value =
                                        &_serde::export::from_utf8_lossy(__value);
                                    _serde::export::Err(_serde::de::Error::unknown_variant(__value,
                                                                                           VARIANTS))
                                }
                            }
                        }
                    }
                    impl <'de> _serde::Deserialize<'de> for __Field {
                        #[inline]
                        fn deserialize<__D>(__deserializer: __D)
                         -> _serde::export::Result<Self, __D::Error> where
                         __D: _serde::Deserializer<'de> {
                            _serde::Deserializer::deserialize_identifier(__deserializer,
                                                                         __FieldVisitor)
                        }
                    }
                    struct __Visitor<'de> {
                        marker: _serde::export::PhantomData<Visibility>,
                        lifetime: _serde::export::PhantomData<&'de ()>,
                    }
                    impl <'de> _serde::de::Visitor<'de> for __Visitor<'de> {
                        type Value = Visibility;
                        fn expecting(&self,
                                     __formatter:
                                         &mut _serde::export::Formatter)
                         -> _serde::export::fmt::Result {
                            _serde::export::Formatter::write_str(__formatter,
                                                                 "enum Visibility")
                        }
                        fn visit_enum<__A>(self, __data: __A)
                         -> _serde::export::Result<Self::Value, __A::Error>
                         where __A: _serde::de::EnumAccess<'de> {
                            match match _serde::de::EnumAccess::variant(__data)
                                      {
                                      _serde::export::Ok(__val) => __val,
                                      _serde::export::Err(__err) => {
                                          return _serde::export::Err(__err);
                                      }
                                  } {
                                (__Field::__field0, __variant) => {
                                    match _serde::de::VariantAccess::unit_variant(__variant)
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    };
                                    _serde::export::Ok(Visibility::Direct)
                                }
                                (__Field::__field1, __variant) => {
                                    match _serde::de::VariantAccess::unit_variant(__variant)
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    };
                                    _serde::export::Ok(Visibility::Private)
                                }
                                (__Field::__field2, __variant) => {
                                    match _serde::de::VariantAccess::unit_variant(__variant)
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    };
                                    _serde::export::Ok(Visibility::Unlisted)
                                }
                                (__Field::__field3, __variant) => {
                                    match _serde::de::VariantAccess::unit_variant(__variant)
                                        {
                                        _serde::export::Ok(__val) => __val,
                                        _serde::export::Err(__err) => {
                                            return _serde::export::Err(__err);
                                        }
                                    };
                                    _serde::export::Ok(Visibility::Public)
                                }
                            }
                        }
                    }
                    const VARIANTS: &'static [&'static str] =
                        &["direct", "private", "unlisted", "public"];
                    _serde::Deserializer::deserialize_enum(__deserializer,
                                                           "Visibility",
                                                           VARIANTS,
                                                           __Visitor{marker:
                                                                         _serde::export::PhantomData::<Visibility>,
                                                                     lifetime:
                                                                         _serde::export::PhantomData,})
                }
            }
        };
    #[doc(hidden)]
    #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
    const _IMPL_SERIALIZE_FOR_Visibility: () =
        {
            #[allow(rust_2018_idioms, clippy :: useless_attribute)]
            extern crate serde as _serde;
            #[allow(unused_macros)]
            macro_rules! try {
                ($ __expr : expr) =>
                {
                    match $ __expr
                    {
                        _serde :: export :: Ok(__val) => __val, _serde ::
                        export :: Err(__err) =>
                        { return _serde :: export :: Err(__err) ; }
                    }
                }
            }
            #[automatically_derived]
            impl _serde::Serialize for Visibility {
                fn serialize<__S>(&self, __serializer: __S)
                 -> _serde::export::Result<__S::Ok, __S::Error> where
                 __S: _serde::Serializer {
                    match *self {
                        Visibility::Direct =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Visibility",
                                                                   0u32,
                                                                   "direct"),
                        Visibility::Private =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Visibility",
                                                                   1u32,
                                                                   "private"),
                        Visibility::Unlisted =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Visibility",
                                                                   2u32,
                                                                   "unlisted"),
                        Visibility::Public =>
                        _serde::Serializer::serialize_unit_variant(__serializer,
                                                                   "Visibility",
                                                                   3u32,
                                                                   "public"),
                    }
                }
            }
        };
    impl ::core::marker::StructuralPartialEq for Visibility { }
    #[automatically_derived]
    #[allow(unused_qualifications)]
    impl ::core::cmp::PartialEq for Visibility {
        #[inline]
        fn eq(&self, other: &Visibility) -> bool {
            {
                let __self_vi =
                    unsafe { ::core::intrinsics::discriminant_value(&*self) };
                let __arg_1_vi =
                    unsafe {
                        ::core::intrinsics::discriminant_value(&*other)
                    };
                if true && __self_vi == __arg_1_vi {
                    match (&*self, &*other) { _ => true, }
                } else { false }
            }
        }
    }
    impl Default for Visibility {
        fn default() -> Self { Visibility::Public }
    }
}
#[macro_use]
mod macros {
    macro_rules! methods {
        ($ ($ method : ident,) +) =>
        {
            $
            (fn $ method < T : for < 'de > serde :: Deserialize < 'de >>
             (& self, url : String) -> Result < T >
             {
                 let response = self . send(self . client . $ method(& url)) ?
                 ; deserialise(response)
             }) +
        } ;
    }
    macro_rules! paged_routes {
        (($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
         ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `", stringify ! ($ method), " /api/v1/", $
                 url, "`\n# Errors\nIf `access_token` is not set.", "\n",
                 "```no_run", "# extern crate elefren;\n",
                 "# use elefren::prelude::*;\n",
                 "# fn main() -> Result<(), Box<::std::error::Error>> {\n",
                 "# let data = Data {\n",
                 "#     base: \"https://example.com\".into(),\n",
                 "#     client_id: \"taosuah\".into(),\n",
                 "#     client_secret: \"htnjdiuae\".into(),\n",
                 "#     redirect: \"https://example.com\".into(),\n",
                 "#     token: \"tsaohueaheis\".into(),\n", "# };\n",
                 "let client = Mastodon::from(data);\n", "client.", stringify
                 ! ($ name), "();\n", "#   Ok(())\n", "# }\n", "```"), async
                fn $ name(& self) -> Result < Page < '_, $ ret >>
                {
                    let url = self . route(concat ! ("/api/v1/", $ url)) ; let
                    response = self . send(self . client . $ method(& url)) ?
                    ; Page :: new(self, response)
                }
            } paged_routes ! { $ ($ rest) * }
        } ;
        ((get($ ($ (# [$ m : meta]) * $ param : ident : $ typ : ty,) *)) $
         name : ident : $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `get /api/v1/", $ url,
                 "`\n# Errors\nIf `access_token` is not set."), async fn $
                name < 'a > (& self, $ ($ param : $ typ,) *) -> Result < Page
                < '_, $ ret >>
                {
                    use serde_urlencoded ; # [derive(Serialize)] struct Data <
                    'a >
                    {
                        $ ($ (# [$ m]) * $ param : $ typ,) * # [serde(skip)]
                        _marker : :: std :: marker :: PhantomData < & 'a () >,
                    } let qs_data = Data
                    {
                        $ ($ param : $ param,) * _marker : :: std :: marker ::
                        PhantomData,
                    } ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
                    let url = format !
                    (concat ! ("/api/v1/", $ url, "?{}"), & qs) ; let response
                    = self . send(self . client . get(& url)) ? ; Page ::
                    new(self, response)
                }
            } paged_routes ! { $ ($ rest) * }
        } ; () => { }
    }
    macro_rules! route_v2 {
        ((get($ ($ param : ident : $ typ : ty,) *)) $ name : ident : $ url :
         expr => $ ret : ty, $ ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `get /api/v2/", $ url,
                 "`\n# Errors\nIf `access_token` is not set."), fn $ name < 'a
                > (& self, $ ($ param : $ typ,) *) -> Result < $ ret >
                {
                    use serde_urlencoded ; # [derive(Serialize)] struct Data <
                    'a >
                    {
                        $ ($ param : $ typ,) * # [serde(skip)] _marker : ::
                        std :: marker :: PhantomData < & 'a () >,
                    } let qs_data = Data
                    {
                        $ ($ param : $ param,) * _marker : :: std :: marker ::
                        PhantomData,
                    } ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
                    let url = format !
                    (concat ! ("/api/v2/", $ url, "?{}"), & qs) ;
                    Ok(self . get(self . route(& url)) ?)
                }
            } route_v2 ! { $ ($ rest) * }
        } ; () => { }
    }
    macro_rules! route {
        ((post multipart($ ($ param : ident : $ typ : ty,) *)) $ name : ident
         : $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `post /api/v1/", $ url,
                 "`\n# Errors\nIf `access_token` is not set."), fn $
                name(& self, $ ($ param : $ typ,) *) -> Result < $ ret >
                {
                    use reqwest :: multipart :: Form ; let form_data = Form ::
                    new() $
                    (. file(stringify ! ($ param), $ param . as_ref()) ?) * ;
                    let response = self .
                    send(self . client .
                         post(& self . route(concat ! ("/api/v1/", $ url))) .
                         multipart(form_data)) ? ; let status = response .
                    status() . clone() ; if status . is_client_error()
                    { return Err(Error :: Client(status)) ; } else if status .
                    is_server_error()
                    { return Err(Error :: Server(status)) ; }
                    deserialise(response)
                }
            } route ! { $ ($ rest) * }
        } ;
        ((get($ ($ param : ident : $ typ : ty,) *)) $ name : ident : $ url :
         expr => $ ret : ty, $ ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `get /api/v1/", $ url,
                 "`\n# Errors\nIf `access_token` is not set."), fn $ name < 'a
                > (& self, $ ($ param : $ typ,) *) -> Result < $ ret >
                {
                    use serde_urlencoded ; # [derive(Serialize)] struct Data <
                    'a >
                    {
                        $ ($ param : $ typ,) * # [serde(skip)] _marker : ::
                        std :: marker :: PhantomData < & 'a () >,
                    } let qs_data = Data
                    {
                        $ ($ param : $ param,) * _marker : :: std :: marker ::
                        PhantomData,
                    } ; let qs = serde_urlencoded :: to_string(& qs_data) ? ;
                    let url = format !
                    (concat ! ("/api/v1/", $ url, "?{}"), & qs) ;
                    Ok(self . get(self . route(& url)) ?)
                }
            } route ! { $ ($ rest) * }
        } ;
        (($ method : ident($ ($ param : ident : $ typ : ty,) *)) $ name :
         ident : $ url : expr => $ ret : ty, $ ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `", stringify ! ($ method), " /api/v1/", $
                 url, "`\n# Errors\nIf `access_token` is not set.",), fn $
                name(& self, $ ($ param : $ typ,) *) -> Result < $ ret >
                {
                    let form_data = json !
                    ({ $ (stringify ! ($ param) : $ param,) * }) ; let
                    response = self .
                    send(self . client . $
                         method(& self . route(concat ! ("/api/v1/", $ url)))
                         . json(& form_data)) ? ; let status = response .
                    status() . clone() ; if status . is_client_error()
                    { return Err(Error :: Client(status)) ; } else if status .
                    is_server_error()
                    { return Err(Error :: Server(status)) ; }
                    deserialise(response)
                }
            } route ! { $ ($ rest) * }
        } ;
        (($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
         ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `", stringify ! ($ method), " /api/v1/", $
                 url, "`\n# Errors\nIf `access_token` is not set.", "\n",
                 "```no_run", "# extern crate elefren;\n",
                 "# use elefren::prelude::*;\n",
                 "# fn main() -> Result<(), Box<::std::error::Error>> {\n",
                 "# let data = Data {\n",
                 "#     base: \"https://example.com\".into(),\n",
                 "#     client_id: \"taosuah\".into(),\n",
                 "#     client_secret: \"htnjdiuae\".into(),\n",
                 "#     redirect: \"https://example.com\".into(),\n",
                 "#     token: \"tsaohueaheis\".into(),\n", "# };\n",
                 "let client = Mastodon::from(data);\n", "client.", stringify
                 ! ($ name), "();\n", "#   Ok(())\n", "# }\n", "```"), fn $
                name(& self) -> Result < $ ret >
                {
                    self . $
                    method(self . route(concat ! ("/api/v1/", $ url)))
                }
            } route ! { $ ($ rest) * }
        } ; () => { }
    }
    macro_rules! route_id {
        ($ (($ method : ident) $ name : ident : $ url : expr => $ ret : ty,)
         *) =>
        {
            $
            (doc_comment !
             {
                 concat !
                 ("Equivalent to `", stringify ! ($ method), " /api/v1/", $
                  url, "`\n# Errors\nIf `access_token` is not set.", "\n",
                  "```no_run", "# extern crate elefren;\n",
                  "# use elefren::prelude::*;\n",
                  "# fn main() -> Result<(), Box<::std::error::Error>> {\n",
                  "# let data = Data {\n",
                  "#     base: \"https://example.com\".into(),\n",
                  "#     client_id: \"taosuah\".into(),\n",
                  "#     client_secret: \"htnjdiuae\".into(),\n",
                  "#     redirect: \"https://example.com\".into(),\n",
                  "#     token: \"tsaohueaheis\".into(),\n", "# };\n",
                  "let client = Mastodon::from(data);\n", "client.", stringify
                  ! ($ name), "(\"42\");\n", "#   Ok(())\n", "# }\n", "```"),
                 fn $ name(& self, id : & str) -> Result < $ ret >
                 {
                     self . $
                     method(self .
                            route(& format !
                                  (concat ! ("/api/v1/", $ url), id)))
                 }
             }) *
        }
    }
    macro_rules! paged_routes_with_id {
        (($ method : ident) $ name : ident : $ url : expr => $ ret : ty, $
         ($ rest : tt) *) =>
        {
            doc_comment !
            {
                concat !
                ("Equivalent to `", stringify ! ($ method), " /api/v1/", $
                 url, "`\n# Errors\nIf `access_token` is not set.", "\n",
                 "```no_run", "# extern crate elefren;\n",
                 "# use elefren::prelude::*;\n",
                 "# fn main() -> Result<(), Box<::std::error::Error>> {\n",
                 "# let data = Data {\n",
                 "#     base: \"https://example.com\".into(),\n",
                 "#     client_id: \"taosuah\".into(),\n",
                 "#     client_secret: \"htnjdiuae\".into(),\n",
                 "#     redirect: \"https://example.com\".into(),\n",
                 "#     token: \"tsaohueaheis\".into(),\n", "# };\n",
                 "let client = Mastodon::from(data);\n", "client.", stringify
                 ! ($ name), "(\"some-id\");\n", "#   Ok(())\n", "# }\n",
                 "```"), fn $ name(& self, id : & str) -> Result < Page < $
                ret >>
                {
                    let url = self .
                    route(& format ! (concat ! ("/api/v1/", $ url), id)) ; let
                    response = self . send(self . client . $ method(& url)) ?
                    ; Page :: new(self, response)
                }
            } paged_routes_with_id ! { $ ($ rest) * }
        } ; () => { }
    }
}
/// Automatically import the things you need
pub mod prelude {
    pub use crate::scopes::Scopes;
    pub use crate::Data;
    pub use crate::Mastodon;
    pub use crate::MastodonClient;
    pub use crate::NewStatus;
    pub use crate::Registration;
    pub use crate::StatusBuilder;
    pub use crate::StatusesRequest;
}
/// Your mastodon application client, handles all requests to and from Mastodon.
pub struct Mastodon {
    client: Client,
    /// Raw data about your mastodon instance.
    pub data: Data,
}
#[automatically_derived]
#[allow(unused_qualifications)]
impl ::core::clone::Clone for Mastodon {
    #[inline]
    fn clone(&self) -> Mastodon {
        match *self {
            Mastodon { client: ref __self_0_0, data: ref __self_0_1 } =>
            Mastodon{client: ::core::clone::Clone::clone(&(*__self_0_0)),
                     data: ::core::clone::Clone::clone(&(*__self_0_1)),},
        }
    }
}
#[automatically_derived]
#[allow(unused_qualifications)]
impl ::core::fmt::Debug for Mastodon {
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        match *self {
            Mastodon { client: ref __self_0_0, data: ref __self_0_1 } => {
                let mut debug_trait_builder = f.debug_struct("Mastodon");
                let _ = debug_trait_builder.field("client", &&(*__self_0_0));
                let _ = debug_trait_builder.field("data", &&(*__self_0_1));
                debug_trait_builder.finish()
            }
        }
    }
}
impl Mastodon {
    fn get<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
     -> Result<T> {
        let response = self.send(self.client.get(&url))?;
        deserialise(response)
    }
    fn post<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
     -> Result<T> {
        let response = self.send(self.client.post(&url))?;
        deserialise(response)
    }
    fn delete<T: for<'de> serde::Deserialize<'de>>(&self, url: String)
     -> Result<T> {
        let response = self.send(self.client.delete(&url))?;
        deserialise(response)
    }
    fn route(&self, url: &str) -> String {
        {
            let res =
                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["", ""],
                                                                    &match (&self.base,
                                                                            &url)
                                                                         {
                                                                         (arg0,
                                                                          arg1)
                                                                         =>
                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                       ::core::fmt::Display::fmt),
                                                                          ::core::fmt::ArgumentV1::new(arg1,
                                                                                                       ::core::fmt::Display::fmt)],
                                                                     }));
            res
        }
    }
    pub(crate) fn send(&self, req: RequestBuilder) -> Result<Response> {
        let req = req.bearer_auth(&self.token).build()?;
        Ok(self.client.execute(req)?)
    }
}
impl From<Data> for Mastodon {
    /// Creates a mastodon instance from the data struct.
    fn from(data: Data) -> Mastodon {
        let mut builder = MastodonBuilder::new();
        builder.data(data);
        builder.build().expect("We know `data` is present, so this should be fine")
    }
}
impl MastodonClient for Mastodon {
    #[doc =
      "Equivalent to `get /api/v1/favourites`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourites();\n#   Ok(())\n# }\n```"]
    async fn favourites(&self) -> Result<Page<'_, Status>> {
        let url = self.route("/api/v1/favourites");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/blocks`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.blocks();\n#   Ok(())\n# }\n```"]
    async fn blocks(&self) -> Result<Page<'_, Account>> {
        let url = self.route("/api/v1/blocks");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.domain_blocks();\n#   Ok(())\n# }\n```"]
    async fn domain_blocks(&self) -> Result<Page<'_, String>> {
        let url = self.route("/api/v1/domain_blocks");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/follow_requests`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.follow_requests();\n#   Ok(())\n# }\n```"]
    async fn follow_requests(&self) -> Result<Page<'_, Account>> {
        let url = self.route("/api/v1/follow_requests");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/timelines/home`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_home_timeline();\n#   Ok(())\n# }\n```"]
    async fn get_home_timeline(&self) -> Result<Page<'_, Status>> {
        let url = self.route("/api/v1/timelines/home");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/custom_emojis`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_emojis();\n#   Ok(())\n# }\n```"]
    async fn get_emojis(&self) -> Result<Page<'_, Emoji>> {
        let url = self.route("/api/v1/custom_emojis");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/mutes`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.mutes();\n#   Ok(())\n# }\n```"]
    async fn mutes(&self) -> Result<Page<'_, Account>> {
        let url = self.route("/api/v1/mutes");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/notifications`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.notifications();\n#   Ok(())\n# }\n```"]
    async fn notifications(&self) -> Result<Page<'_, Notification>> {
        let url = self.route("/api/v1/notifications");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/reports`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reports();\n#   Ok(())\n# }\n```"]
    async fn reports(&self) -> Result<Page<'_, Report>> {
        let url = self.route("/api/v1/reports");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/search`\n# Errors\nIf `access_token` is not set."]
    async fn search_accounts<'a>(&self, q: &'a str, limit: Option<u64>,
                                 following: bool)
     -> Result<Page<'_, Account>> {
        use serde_urlencoded;
        struct Data<'a> {
            q: &'a str,
            #[serde(skip_serializing_if = "Option::is_none")]
            limit: Option<u64>,
            following: bool,
            #[serde(skip)]
            _marker: ::std::marker::PhantomData<&'a ()>,
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Data: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'a> _serde::Serialize for Data<'a> {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Data",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           +
                                                                           if Option::is_none(&self.limit)
                                                                              {
                                                                               0
                                                                           } else {
                                                                               1
                                                                           } +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "q",
                                                                            &self.q)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        if !Option::is_none(&self.limit) {
                            match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                                "limit",
                                                                                &self.limit)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        } else {
                            match _serde::ser::SerializeStruct::skip_field(&mut __serde_state,
                                                                           "limit")
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        }
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "following",
                                                                            &self.following)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        let qs_data =
            Data{q: q,
                 limit: limit,
                 following: following,
                 _marker: ::std::marker::PhantomData,};
        let qs = serde_urlencoded::to_string(&qs_data)?;
        let url =
            {
                let res =
                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/search?"],
                                                                        &match (&&qs,)
                                                                             {
                                                                             (arg0,)
                                                                             =>
                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                           ::core::fmt::Display::fmt)],
                                                                         }));
                res
            };
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/endorsements`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_endorsements();\n#   Ok(())\n# }\n```"]
    async fn get_endorsements(&self) -> Result<Page<'_, Account>> {
        let url = self.route("/api/v1/endorsements");
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/{}/followers`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.followers(\"some-id\");\n#   Ok(())\n# }\n```"]
    fn followers(&self, id: &str) -> Result<Page<Account>> {
        let url =
            self.route(&{
                            let res =
                                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                      "/followers"],
                                                                                    &match (&id,)
                                                                                         {
                                                                                         (arg0,)
                                                                                         =>
                                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                       ::core::fmt::Display::fmt)],
                                                                                     }));
                            res
                        });
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/{}/following`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.following(\"some-id\");\n#   Ok(())\n# }\n```"]
    fn following(&self, id: &str) -> Result<Page<Account>> {
        let url =
            self.route(&{
                            let res =
                                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                      "/following"],
                                                                                    &match (&id,)
                                                                                         {
                                                                                         (arg0,)
                                                                                         =>
                                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                       ::core::fmt::Display::fmt)],
                                                                                     }));
                            res
                        });
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/statuses/{}/reblogged_by`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reblogged_by(\"some-id\");\n#   Ok(())\n# }\n```"]
    fn reblogged_by(&self, id: &str) -> Result<Page<Account>> {
        let url =
            self.route(&{
                            let res =
                                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                      "/reblogged_by"],
                                                                                    &match (&id,)
                                                                                         {
                                                                                         (arg0,)
                                                                                         =>
                                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                       ::core::fmt::Display::fmt)],
                                                                                     }));
                            res
                        });
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `get /api/v1/statuses/{}/favourited_by`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourited_by(\"some-id\");\n#   Ok(())\n# }\n```"]
    fn favourited_by(&self, id: &str) -> Result<Page<Account>> {
        let url =
            self.route(&{
                            let res =
                                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                      "/favourited_by"],
                                                                                    &match (&id,)
                                                                                         {
                                                                                         (arg0,)
                                                                                         =>
                                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                       ::core::fmt::Display::fmt)],
                                                                                     }));
                            res
                        });
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      "Equivalent to `delete /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set."]
    fn unblock_domain(&self, domain: String) -> Result<Empty> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("domain").into(),
                                                              ::serde_json::to_value(&domain).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.delete(&self.route("/api/v1/domain_blocks")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `get /api/v1/instance`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.instance();\n#   Ok(())\n# }\n```"]
    fn instance(&self) -> Result<Instance> {
        self.get(self.route("/api/v1/instance"))
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/verify_credentials`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.verify_credentials();\n#   Ok(())\n# }\n```"]
    fn verify_credentials(&self) -> Result<Account> {
        self.get(self.route("/api/v1/accounts/verify_credentials"))
    }
    #[doc =
      "Equivalent to `post /api/v1/reports`\n# Errors\nIf `access_token` is not set."]
    fn report(&self, account_id: &str, status_ids: Vec<&str>, comment: String)
     -> Result<Report> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("account_id").into(),
                                                              ::serde_json::to_value(&account_id).unwrap());
                                            let _ =
                                                object.insert(("status_ids").into(),
                                                              ::serde_json::to_value(&status_ids).unwrap());
                                            let _ =
                                                object.insert(("comment").into(),
                                                              ::serde_json::to_value(&comment).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/reports")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `post /api/v1/domain_blocks`\n# Errors\nIf `access_token` is not set."]
    fn block_domain(&self, domain: String) -> Result<Empty> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("domain").into(),
                                                              ::serde_json::to_value(&domain).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/domain_blocks")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/follow_requests/authorize`\n# Errors\nIf `access_token` is not set."]
    fn authorize_follow_request(&self, id: &str) -> Result<Empty> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("id").into(),
                                                              ::serde_json::to_value(&id).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/accounts/follow_requests/authorize")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/follow_requests/reject`\n# Errors\nIf `access_token` is not set."]
    fn reject_follow_request(&self, id: &str) -> Result<Empty> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("id").into(),
                                                              ::serde_json::to_value(&id).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/accounts/follow_requests/reject")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `get /api/v1/search`\n# Errors\nIf `access_token` is not set."]
    fn search<'a>(&self, q: &'a str, resolve: bool) -> Result<SearchResult> {
        use serde_urlencoded;
        struct Data<'a> {
            q: &'a str,
            resolve: bool,
            #[serde(skip)]
            _marker: ::std::marker::PhantomData<&'a ()>,
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Data: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'a> _serde::Serialize for Data<'a> {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Data",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "q",
                                                                            &self.q)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "resolve",
                                                                            &self.resolve)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        let qs_data =
            Data{q: q,
                 resolve: resolve,
                 _marker: ::std::marker::PhantomData,};
        let qs = serde_urlencoded::to_string(&qs_data)?;
        let url =
            {
                let res =
                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/search?"],
                                                                        &match (&&qs,)
                                                                             {
                                                                             (arg0,)
                                                                             =>
                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                           ::core::fmt::Display::fmt)],
                                                                         }));
                res
            };
        Ok(self.get(self.route(&url))?)
    }
    #[doc =
      "Equivalent to `get /api/v1/timelines/public`\n# Errors\nIf `access_token` is not set."]
    fn get_public_timeline<'a>(&self, local: bool) -> Result<Vec<Status>> {
        use serde_urlencoded;
        struct Data<'a> {
            local: bool,
            #[serde(skip)]
            _marker: ::std::marker::PhantomData<&'a ()>,
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Data: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'a> _serde::Serialize for Data<'a> {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Data",
                                                                       false
                                                                           as
                                                                           usize
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "local",
                                                                            &self.local)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        let qs_data =
            Data{local: local, _marker: ::std::marker::PhantomData,};
        let qs = serde_urlencoded::to_string(&qs_data)?;
        let url =
            {
                let res =
                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/timelines/public?"],
                                                                        &match (&&qs,)
                                                                             {
                                                                             (arg0,)
                                                                             =>
                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                           ::core::fmt::Display::fmt)],
                                                                         }));
                res
            };
        Ok(self.get(self.route(&url))?)
    }
    #[doc =
      "Equivalent to `post /api/v1/follows`\n# Errors\nIf `access_token` is not set."]
    fn follows(&self, uri: Cow<'static, str>) -> Result<Account> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("uri").into(),
                                                              ::serde_json::to_value(&uri).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/follows")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `post /api/v1/media`\n# Errors\nIf `access_token` is not set."]
    fn media(&self, file: Cow<'static, str>) -> Result<Attachment> {
        use reqwest::multipart::Form;
        let form_data = Form::new().file("file", file.as_ref())?;
        let response =
            self.send(self.client.post(&self.route("/api/v1/media")).multipart(form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `post /api/v1/notifications/clear`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.clear_notifications();\n#   Ok(())\n# }\n```"]
    fn clear_notifications(&self) -> Result<Empty> {
        self.post(self.route("/api/v1/notifications/clear"))
    }
    #[doc =
      "Equivalent to `post /api/v1/notifications/dismiss`\n# Errors\nIf `access_token` is not set."]
    fn dismiss_notification(&self, id: &str) -> Result<Empty> {
        let form_data =
            ::serde_json::Value::Object({
                                            let mut object =
                                                ::serde_json::Map::new();
                                            let _ =
                                                object.insert(("id").into(),
                                                              ::serde_json::to_value(&id).unwrap());
                                            object
                                        });
        let response =
            self.send(self.client.post(&self.route("/api/v1/notifications/dismiss")).json(&form_data))?;
        let status = response.status().clone();
        if status.is_client_error() {
            return Err(Error::Client(status));
        } else if status.is_server_error() {
            return Err(Error::Server(status));
        }
        deserialise(response)
    }
    #[doc =
      "Equivalent to `get /api/v1/push/subscription`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_push_subscription();\n#   Ok(())\n# }\n```"]
    fn get_push_subscription(&self) -> Result<Subscription> {
        self.get(self.route("/api/v1/push/subscription"))
    }
    #[doc =
      "Equivalent to `delete /api/v1/push/subscription`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_push_subscription();\n#   Ok(())\n# }\n```"]
    fn delete_push_subscription(&self) -> Result<Empty> {
        self.delete(self.route("/api/v1/push/subscription"))
    }
    #[doc =
      "Equivalent to `get /api/v1/filters`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_filters();\n#   Ok(())\n# }\n```"]
    fn get_filters(&self) -> Result<Vec<Filter>> {
        self.get(self.route("/api/v1/filters"))
    }
    #[doc =
      "Equivalent to `get /api/v1/suggestions`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_follow_suggestions();\n#   Ok(())\n# }\n```"]
    fn get_follow_suggestions(&self) -> Result<Vec<Account>> {
        self.get(self.route("/api/v1/suggestions"))
    }
    #[doc =
      "Equivalent to `get /api/v2/search`\n# Errors\nIf `access_token` is not set."]
    fn search_v2<'a>(&self, q: &'a str, resolve: bool)
     -> Result<SearchResultV2> {
        use serde_urlencoded;
        struct Data<'a> {
            q: &'a str,
            resolve: bool,
            #[serde(skip)]
            _marker: ::std::marker::PhantomData<&'a ()>,
        }
        #[doc(hidden)]
        #[allow(non_upper_case_globals, unused_attributes,
                unused_qualifications)]
        const _IMPL_SERIALIZE_FOR_Data: () =
            {
                #[allow(rust_2018_idioms, clippy :: useless_attribute)]
                extern crate serde as _serde;
                #[allow(unused_macros)]
                macro_rules! try {
                    ($ __expr : expr) =>
                    {
                        match $ __expr
                        {
                            _serde :: export :: Ok(__val) => __val, _serde ::
                            export :: Err(__err) =>
                            { return _serde :: export :: Err(__err) ; }
                        }
                    }
                }
                #[automatically_derived]
                impl <'a> _serde::Serialize for Data<'a> {
                    fn serialize<__S>(&self, __serializer: __S)
                     -> _serde::export::Result<__S::Ok, __S::Error> where
                     __S: _serde::Serializer {
                        let mut __serde_state =
                            match _serde::Serializer::serialize_struct(__serializer,
                                                                       "Data",
                                                                       false
                                                                           as
                                                                           usize
                                                                           + 1
                                                                           +
                                                                           1)
                                {
                                _serde::export::Ok(__val) => __val,
                                _serde::export::Err(__err) => {
                                    return _serde::export::Err(__err);
                                }
                            };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "q",
                                                                            &self.q)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        match _serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
                                                                            "resolve",
                                                                            &self.resolve)
                            {
                            _serde::export::Ok(__val) => __val,
                            _serde::export::Err(__err) => {
                                return _serde::export::Err(__err);
                            }
                        };
                        _serde::ser::SerializeStruct::end(__serde_state)
                    }
                }
            };
        let qs_data =
            Data{q: q,
                 resolve: resolve,
                 _marker: ::std::marker::PhantomData,};
        let qs = serde_urlencoded::to_string(&qs_data)?;
        let url =
            {
                let res =
                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v2/search?"],
                                                                        &match (&&qs,)
                                                                             {
                                                                             (arg0,)
                                                                             =>
                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                           ::core::fmt::Display::fmt)],
                                                                         }));
                res
            };
        Ok(self.get(self.route(&url))?)
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_account(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_account(&self, id: &str) -> Result<Account> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/follow`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.follow(\"42\");\n#   Ok(())\n# }\n```"]
    fn follow(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/follow"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/unfollow`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unfollow(\"42\");\n#   Ok(())\n# }\n```"]
    fn unfollow(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/unfollow"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/block`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.block(\"42\");\n#   Ok(())\n# }\n```"]
    fn block(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/block"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/unblock`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unblock(\"42\");\n#   Ok(())\n# }\n```"]
    fn unblock(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/unblock"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/{}/mute`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.mute(\"42\");\n#   Ok(())\n# }\n```"]
    fn mute(&self, id: &str) -> Result<Relationship> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                           "/mute"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `get /api/v1/accounts/{}/unmute`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unmute(\"42\");\n#   Ok(())\n# }\n```"]
    fn unmute(&self, id: &str) -> Result<Relationship> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                           "/unmute"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `get /api/v1/notifications/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_notification(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_notification(&self, id: &str) -> Result<Notification> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/notifications/"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `get /api/v1/statuses/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_status(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_status(&self, id: &str) -> Result<Status> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `get /api/v1/statuses/{}/context`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_context(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_context(&self, id: &str) -> Result<Context> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                           "/context"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `get /api/v1/statuses/{}/card`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_card(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_card(&self, id: &str) -> Result<Card> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                           "/card"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `post /api/v1/statuses/{}/reblog`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.reblog(\"42\");\n#   Ok(())\n# }\n```"]
    fn reblog(&self, id: &str) -> Result<Status> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                            "/reblog"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/statuses/{}/unreblog`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unreblog(\"42\");\n#   Ok(())\n# }\n```"]
    fn unreblog(&self, id: &str) -> Result<Status> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                            "/unreblog"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/statuses/{}/favourite`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.favourite(\"42\");\n#   Ok(())\n# }\n```"]
    fn favourite(&self, id: &str) -> Result<Status> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                            "/favourite"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/statuses/{}/unfavourite`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unfavourite(\"42\");\n#   Ok(())\n# }\n```"]
    fn unfavourite(&self, id: &str) -> Result<Status> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/",
                                                                                            "/unfavourite"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `delete /api/v1/statuses/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_status(\"42\");\n#   Ok(())\n# }\n```"]
    fn delete_status(&self, id: &str) -> Result<Empty> {
        self.delete(self.route(&{
                                    let res =
                                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/statuses/"],
                                                                                            &match (&id,)
                                                                                                 {
                                                                                                 (arg0,)
                                                                                                 =>
                                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                               ::core::fmt::Display::fmt)],
                                                                                             }));
                                    res
                                }))
    }
    #[doc =
      "Equivalent to `get /api/v1/filters/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.get_filter(\"42\");\n#   Ok(())\n# }\n```"]
    fn get_filter(&self, id: &str) -> Result<Filter> {
        self.get(self.route(&{
                                 let res =
                                     ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
                                                                                         &match (&id,)
                                                                                              {
                                                                                              (arg0,)
                                                                                              =>
                                                                                              [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                            ::core::fmt::Display::fmt)],
                                                                                          }));
                                 res
                             }))
    }
    #[doc =
      "Equivalent to `delete /api/v1/filters/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_filter(\"42\");\n#   Ok(())\n# }\n```"]
    fn delete_filter(&self, id: &str) -> Result<Empty> {
        self.delete(self.route(&{
                                    let res =
                                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
                                                                                            &match (&id,)
                                                                                                 {
                                                                                                 (arg0,)
                                                                                                 =>
                                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                               ::core::fmt::Display::fmt)],
                                                                                             }));
                                    res
                                }))
    }
    #[doc =
      "Equivalent to `delete /api/v1/suggestions/{}`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.delete_from_suggestions(\"42\");\n#   Ok(())\n# }\n```"]
    fn delete_from_suggestions(&self, id: &str) -> Result<Empty> {
        self.delete(self.route(&{
                                    let res =
                                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/suggestions/"],
                                                                                            &match (&id,)
                                                                                                 {
                                                                                                 (arg0,)
                                                                                                 =>
                                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                               ::core::fmt::Display::fmt)],
                                                                                             }));
                                    res
                                }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/pin`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.endorse_user(\"42\");\n#   Ok(())\n# }\n```"]
    fn endorse_user(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/pin"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    #[doc =
      "Equivalent to `post /api/v1/accounts/{}/unpin`\n# Errors\nIf `access_token` is not set.\n```no_run# extern crate elefren;\n# use elefren::prelude::*;\n# fn main() -> Result<(), Box<::std::error::Error>> {\n# let data = Data {\n#     base: \"https://example.com\".into(),\n#     client_id: \"taosuah\".into(),\n#     client_secret: \"htnjdiuae\".into(),\n#     redirect: \"https://example.com\".into(),\n#     token: \"tsaohueaheis\".into(),\n# };\nlet client = Mastodon::from(data);\nclient.unendorse_user(\"42\");\n#   Ok(())\n# }\n```"]
    fn unendorse_user(&self, id: &str) -> Result<Relationship> {
        self.post(self.route(&{
                                  let res =
                                      ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/accounts/",
                                                                                            "/unpin"],
                                                                                          &match (&id,)
                                                                                               {
                                                                                               (arg0,)
                                                                                               =>
                                                                                               [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                             ::core::fmt::Display::fmt)],
                                                                                           }));
                                  res
                              }))
    }
    fn add_filter(&self, request: &mut AddFilterRequest) -> Result<Filter> {
        let url = self.route("/api/v1/filters");
        let response = self.send(self.client.post(&url).json(&request))?;
        let status = response.status();
        if status.is_client_error() {
            return Err(Error::Client(status.clone()));
        } else if status.is_server_error() {
            return Err(Error::Server(status.clone()));
        }
        deserialise(response)
    }
    #[doc = " PUT /api/v1/filters/:id"]
    fn update_filter(&self, id: &str, request: &mut AddFilterRequest)
     -> Result<Filter> {
        let url =
            self.route(&{
                            let res =
                                ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["/api/v1/filters/"],
                                                                                    &match (&id,)
                                                                                         {
                                                                                         (arg0,)
                                                                                         =>
                                                                                         [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                       ::core::fmt::Display::fmt)],
                                                                                     }));
                            res
                        });
        let response = self.send(self.client.put(&url).json(&request))?;
        let status = response.status();
        if status.is_client_error() {
            return Err(Error::Client(status.clone()));
        } else if status.is_server_error() {
            return Err(Error::Server(status.clone()));
        }
        deserialise(response)
    }
    fn update_credentials(&self, builder: &mut UpdateCredsRequest)
     -> Result<Account> {
        let changes = builder.build()?;
        let url = self.route("/api/v1/accounts/update_credentials");
        let response = self.send(self.client.patch(&url).json(&changes))?;
        let status = response.status();
        if status.is_client_error() {
            return Err(Error::Client(status.clone()));
        } else if status.is_server_error() {
            return Err(Error::Server(status.clone()));
        }
        deserialise(response)
    }
    #[doc = " Post a new status to the account."]
    fn new_status(&self, status: NewStatus) -> Result<Status> {
        let response =
            self.send(self.client.post(&self.route("/api/v1/statuses")).json(&status))?;
        deserialise(response)
    }
    #[doc =
      " Get timeline filtered by a hashtag(eg. `#coffee`) either locally or"]
    #[doc = " federated."]
    fn get_tagged_timeline(&self, hashtag: String, local: bool)
     -> Result<Vec<Status>> {
        let base = "/api/v1/timelines/tag/";
        let url =
            if local {
                self.route(&{
                                let res =
                                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                                          "",
                                                                                          "?local=1"],
                                                                                        &match (&base,
                                                                                                &hashtag)
                                                                                             {
                                                                                             (arg0,
                                                                                              arg1)
                                                                                             =>
                                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                           ::core::fmt::Display::fmt),
                                                                                              ::core::fmt::ArgumentV1::new(arg1,
                                                                                                                           ::core::fmt::Display::fmt)],
                                                                                         }));
                                res
                            })
            } else {
                self.route(&{
                                let res =
                                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                                          ""],
                                                                                        &match (&base,
                                                                                                &hashtag)
                                                                                             {
                                                                                             (arg0,
                                                                                              arg1)
                                                                                             =>
                                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                                           ::core::fmt::Display::fmt),
                                                                                              ::core::fmt::ArgumentV1::new(arg1,
                                                                                                                           ::core::fmt::Display::fmt)],
                                                                                         }));
                                res
                            })
            };
        self.get(url)
    }
    #[doc =
      " Get statuses of a single account by id. Optionally only with pictures"]
    #[doc = " and or excluding replies."]
    #[doc = ""]
    #[doc = " # Example"]
    #[doc = ""]
    #[doc = " ```no_run"]
    #[doc = " # extern crate elefren;"]
    #[doc = " # use elefren::prelude::*;"]
    #[doc = " # use std::error::Error;"]
    #[doc = " # fn main() -> Result<(), Box<Error>> {"]
    #[doc = " # let data = Data {"]
    #[doc = " #   base: \"\".into(),"]
    #[doc = " #   client_id: \"\".into(),"]
    #[doc = " #   client_secret: \"\".into(),"]
    #[doc = " #   redirect: \"\".into(),"]
    #[doc = " #   token: \"\".into(),"]
    #[doc = " # };"]
    #[doc = " let client = Mastodon::from(data);"]
    #[doc = " let statuses = client.statuses(\"user-id\", None)?;"]
    #[doc = " # Ok(())"]
    #[doc = " # }"]
    #[doc = " ```"]
    #[doc = ""]
    #[doc = " ```no_run"]
    #[doc = " # extern crate elefren;"]
    #[doc = " # use elefren::prelude::*;"]
    #[doc = " # use std::error::Error;"]
    #[doc = " # fn main() -> Result<(), Box<Error>> {"]
    #[doc = " # let data = Data {"]
    #[doc = " #   base: \"\".into(),"]
    #[doc = " #   client_id: \"\".into(),"]
    #[doc = " #   client_secret: \"\".into(),"]
    #[doc = " #   redirect: \"\".into(),"]
    #[doc = " #   token: \"\".into(),"]
    #[doc = " # };"]
    #[doc = " let client = Mastodon::from(data);"]
    #[doc = " let mut request = StatusesRequest::new();"]
    #[doc = " request.only_media();"]
    #[doc = " let statuses = client.statuses(\"user-id\", request)?;"]
    #[doc = " # Ok(())"]
    #[doc = " # }"]
    #[doc = " ```"]
    fn statuses<'a, 'b: 'a, S>(&'b self, id: &'b str, request: S)
     -> Result<Page<Status>> where S: Into<Option<StatusesRequest<'a>>> {
        let mut url =
            {
                let res =
                    ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                          "/api/v1/accounts/",
                                                                          "/statuses"],
                                                                        &match (&self.base,
                                                                                &id)
                                                                             {
                                                                             (arg0,
                                                                              arg1)
                                                                             =>
                                                                             [::core::fmt::ArgumentV1::new(arg0,
                                                                                                           ::core::fmt::Display::fmt),
                                                                              ::core::fmt::ArgumentV1::new(arg1,
                                                                                                           ::core::fmt::Display::fmt)],
                                                                         }));
                res
            };
        if let Some(request) = request.into() {
            url =
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["",
                                                                              ""],
                                                                            &match (&url,
                                                                                    &request.to_querystring()?)
                                                                                 {
                                                                                 (arg0,
                                                                                  arg1)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt),
                                                                                  ::core::fmt::ArgumentV1::new(arg1,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                };
        }
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc =
      " Returns the client account\'s relationship to a list of other accounts."]
    #[doc = " Such as whether they follow them or vice versa."]
    fn relationships(&self, ids: &[&str]) -> Result<Page<Relationship>> {
        let mut url = self.route("/api/v1/accounts/relationships?");
        if ids.len() == 1 {
            url += "id=";
            url += &ids[0];
        } else {
            for id in ids { url += "id[]="; url += &id; url += "&"; }
            url.pop();
        }
        let response = self.send(self.client.get(&url))?;
        Page::new(self, response)
    }
    #[doc = " Add a push notifications subscription"]
    fn add_push_subscription(&self, request: &AddPushRequest)
     -> Result<Subscription> {
        let request = request.build()?;
        let response =
            self.send(self.client.post(&self.route("/api/v1/push/subscription")).json(&request))?;
        deserialise(response)
    }
    #[doc =
      " Update the `data` portion of the push subscription associated with this"]
    #[doc = " access token"]
    fn update_push_data(&self, request: &UpdatePushRequest)
     -> Result<Subscription> {
        let request = request.build();
        let response =
            self.send(self.client.put(&self.route("/api/v1/push/subscription")).json(&request))?;
        deserialise(response)
    }
    #[doc = " Get all accounts that follow the authenticated user"]
    fn follows_me(&self) -> Result<Page<Account>> {
        let me = self.verify_credentials()?;
        Ok(self.followers(&me.id)?)
    }
    #[doc = " Get all accounts that the authenticated user follows"]
    fn followed_by_me(&self) -> Result<Page<Account>> {
        let me = self.verify_credentials()?;
        Ok(self.following(&me.id)?)
    }
}
impl ops::Deref for Mastodon {
    type Target = Data;
    fn deref(&self) -> &Self::Target { &self.data }
}
struct MastodonBuilder {
    client: Option<Client>,
    data: Option<Data>,
}
impl MastodonBuilder {
    pub fn new() -> Self { MastodonBuilder{client: None, data: None,} }
    pub fn client(&mut self, client: Client) -> &mut Self {
        self.client = Some(client);
        self
    }
    pub fn data(&mut self, data: Data) -> &mut Self {
        self.data = Some(data);
        self
    }
    pub fn build(self) -> Result<Mastodon> {
        Ok(if let Some(data) = self.data {
               Mastodon{client: self.client.unwrap_or_else(|| Client::new()),
                        data,}
           } else {
               return Err(Error::MissingField("missing field 'data'"));
           })
    }
}
/// Client that can make unauthenticated calls to a mastodon instance
pub struct MastodonUnauth {
    client: Client,
    base: url::Url,
}
#[automatically_derived]
#[allow(unused_qualifications)]
impl ::core::clone::Clone for MastodonUnauth {
    #[inline]
    fn clone(&self) -> MastodonUnauth {
        match *self {
            MastodonUnauth { client: ref __self_0_0, base: ref __self_0_1 } =>
            MastodonUnauth{client:
                               ::core::clone::Clone::clone(&(*__self_0_0)),
                           base:
                               ::core::clone::Clone::clone(&(*__self_0_1)),},
        }
    }
}
#[automatically_derived]
#[allow(unused_qualifications)]
impl ::core::fmt::Debug for MastodonUnauth {
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        match *self {
            MastodonUnauth { client: ref __self_0_0, base: ref __self_0_1 } =>
            {
                let mut debug_trait_builder =
                    f.debug_struct("MastodonUnauth");
                let _ = debug_trait_builder.field("client", &&(*__self_0_0));
                let _ = debug_trait_builder.field("base", &&(*__self_0_1));
                debug_trait_builder.finish()
            }
        }
    }
}
impl MastodonUnauth {
    /// Create a new unauthenticated client
    pub fn new(base: &str) -> Result<MastodonUnauth> {
        let base =
            if base.starts_with("https://") {
                base.to_string()
            } else {
                {
                    let res =
                        ::alloc::fmt::format(::core::fmt::Arguments::new_v1(&["https://"],
                                                                            &match (&base,)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }));
                    res
                }
            };
        Ok(MastodonUnauth{client: Client::new(),
                          base: url::Url::parse(&base)?,})
    }
}
impl MastodonUnauth {
    fn route(&self, url: &str) -> Result<url::Url> {
        Ok(self.base.join(url)?)
    }
    fn send(&self, req: RequestBuilder) -> Result<Response> {
        let req = req.build()?;
        Ok(self.client.execute(req)?)
    }
}
impl MastodonUnauthenticated for MastodonUnauth {
    /// GET /api/v1/statuses/:id
    fn get_status(&self, id: &str) -> Result<Status> {
        let route = self.route("/api/v1/statuses")?;
        let route = route.join(id)?;
        let response = self.send(self.client.get(route))?;
        deserialise(response)
    }
    /// GET /api/v1/statuses/:id/context
    fn get_context(&self, id: &str) -> Result<Context> {
        let route = self.route("/api/v1/statuses")?;
        let route = route.join(id)?;
        let route = route.join("context")?;
        let response = self.send(self.client.get(route))?;
        deserialise(response)
    }
    /// GET /api/v1/statuses/:id/card
    fn get_card(&self, id: &str) -> Result<Card> {
        let route = self.route("/api/v1/statuses")?;
        let route = route.join(id)?;
        let route = route.join("card")?;
        let response = self.send(self.client.get(route))?;
        deserialise(response)
    }
}
fn deserialise<T: for<'de> serde::Deserialize<'de>>(response: Response)
 -> Result<T> {
    let mut reader = Tap::new(response);
    match serde_json::from_reader(&mut reader) {
        Ok(t) => {
            {
                let lvl = ::log::Level::Debug;
                if lvl <= ::log::STATIC_MAX_LEVEL && lvl <= ::log::max_level()
                   {
                    ::log::__private_api_log(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&String::from_utf8_lossy(&reader.bytes),)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }),
                                             lvl,
                                             &("elefren", "elefren",
                                               "src/lib.rs", 845u32));
                }
            };
            Ok(t)
        }
        Err(e) => {
            {
                let lvl = ::log::Level::Error;
                if lvl <= ::log::STATIC_MAX_LEVEL && lvl <= ::log::max_level()
                   {
                    ::log::__private_api_log(::core::fmt::Arguments::new_v1(&[""],
                                                                            &match (&String::from_utf8_lossy(&reader.bytes),)
                                                                                 {
                                                                                 (arg0,)
                                                                                 =>
                                                                                 [::core::fmt::ArgumentV1::new(arg0,
                                                                                                               ::core::fmt::Display::fmt)],
                                                                             }),
                                             lvl,
                                             &("elefren", "elefren",
                                               "src/lib.rs", 851u32));
                }
            };
            if let Ok(error) = serde_json::from_slice(&reader.bytes) {
                return Err(Error::Api(error));
            }
            Err(e.into())
        }
    }
}