public IDictionary <string, object> ToArguments()
        {
            var result = new JsonObject();

            if (TmdbDiscoverShowsSortType.Default != SortBy)
            {
                var sfx  = (byte)SortBy > 0x7F ? ".asc" : ".desc";
                var sort = (TmdbDiscoverShowsSortType)(((byte)SortBy) & 0x7F);
                switch (sort)
                {
                case TmdbDiscoverShowsSortType.Popularity:
                    result.Add("sort_by", "popularity" + sfx);
                    break;

                case TmdbDiscoverShowsSortType.VoteAverage:
                    result.Add("sort_by", "vote_average" + sfx);
                    break;

                case TmdbDiscoverShowsSortType.VoteCount:
                    result.Add("sort_by", "vote_count" + sfx);
                    break;

                case TmdbDiscoverShowsSortType.FirstAirDate:
                    result.Add("sort_by", "first_air_date" + sfx);
                    break;
                }
            }

            if (default(DateTime) != AirDateMaximum)
            {
                result.Add("air_date.lte", AirDateMaximum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != AirDateMinimum)
            {
                result.Add("air_date.gte", AirDateMinimum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != FirstAirDateMaximum)
            {
                result.Add("first_air_date.lte", FirstAirDateMaximum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != FirstAirDateMinimum)
            {
                result.Add("first_air_date.gte", FirstAirDateMinimum.ToString("yyyy-MM-dd"));
            }

            if (!string.IsNullOrEmpty(TimeZone))
            {
                result.Add("timezone", TimeZone);
            }

            if (0 != FirstAirDateYear)
            {
                result.Add("first_air_date_year=", FirstAirDateYear);
            }

            if (0d < VoteAverageMinimum)
            {
                result.Add("vote_average.gte", VoteAverageMinimum);
            }

            var sb = new StringBuilder();

            if (null != CompaniesAllOf || null != CompaniesAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CompaniesAllOf, CompaniesAllOfIds, true);
                result.Add("with_companies", sb.ToString());
            }
            else if (null != CompaniesAnyOf || null != CompaniesAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CompaniesAnyOf, CompaniesAnyOfIds, false);
                result.Add("with_companies", sb.ToString());
            }

            if (null != NetworksAllOf || null != NetworksAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, NetworksAllOf, NetworksAllOfIds, true);
                result.Add("with_networks", sb.ToString());
            }
            else if (null != NetworksAnyOf || null != NetworksAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, NetworksAnyOf, NetworksAnyOfIds, false);
                result.Add("with_networks", sb.ToString());
            }

            if (null != GenresAllOf || null != GenresAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, GenresAllOf, GenresAllOfIds, true);
                result.Add("with_genres", sb.ToString());
            }
            else if (null != GenresAnyOf || null != GenresAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, GenresAnyOf, GenresAnyOfIds, false);
                result.Add("with_genres", sb.ToString());
            }

            if (null != WithoutGenresAllOf || null != WithoutGenresAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAllOf, WithoutGenresAllOfIds, true);
                result.Add("without_genres", sb.ToString());
            }
            else if (null != WithoutGenresAnyOf || null != WithoutGenresAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAnyOf, WithoutGenresAnyOfIds, false);
                result.Add("without_genres", sb.ToString());
            }

            if (null != WithoutGenresAllOf || null != WithoutGenresAllOfIds)
            {
                sb.Append("&without_genres=");
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAllOf, WithoutGenresAllOfIds, true);
            }
            else if (null != WithoutGenresAnyOf || null != WithoutGenresAnyOfIds)
            {
                sb.Append("&without_genres=");
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAnyOf, WithoutGenresAnyOfIds, true);
            }
            if (null != KeywordsAllOf || null != KeywordsAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, KeywordsAllOf, KeywordsAllOfIds, true);
                result.Add("with_keywords", sb.ToString());
            }
            else if (null != KeywordsAnyOf || null != KeywordsAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, KeywordsAnyOf, KeywordsAnyOfIds, false);
                result.Add("with_keywords", sb.ToString());
            }

            if (null != WithoutKeywordsAllOf || null != WithoutKeywordsAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutKeywordsAllOf, WithoutKeywordsAllOfIds, true);
                result.Add("without_keywords", sb.ToString());
            }
            else if (null != WithoutKeywordsAnyOf || null != WithoutKeywordsAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutKeywordsAnyOf, WithoutKeywordsAnyOfIds, false);
                result.Add("without_keywords", sb.ToString());
            }

            if (default(TimeSpan) != RunTimeMaximum)
            {
                result.Add("runtime.lte", RunTimeMaximum.TotalMinutes);
            }

            if (default(TimeSpan) != RunTimeMinimum)
            {
                result.Add("runtime.gte", RunTimeMinimum.TotalMinutes);
            }

            if (!string.IsNullOrEmpty(OriginalLanguage))
            {
                result.Add("original_language", OriginalLanguage);
            }

            return(result);
        }
        public IDictionary <string, object> ToArguments()
        {
            var result = new JsonObject();

            if (TmdbDiscoverMoviesSortType.Default != SortBy)
            {
                var sfx  = (byte)SortBy > 0x7F ? ".asc" : ".desc";
                var sort = (TmdbDiscoverMoviesSortType)(((byte)SortBy) & 0x7F);
                switch (sort)
                {
                case TmdbDiscoverMoviesSortType.Popularity:
                    result.Add("sort_by", "popularity" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.VoteAverage:
                    result.Add("sort_by", "vote_average" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.VoteCount:
                    result.Add("sort_by", "vote_count" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.OriginalTitle:
                    result.Add("sort_by", "original_title" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.PrimaryReleaseDate:
                    result.Add("sort_by", "primary_release_date" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.ReleaseDate:
                    result.Add("sort_by", "release_date" + sfx);
                    break;

                case TmdbDiscoverMoviesSortType.Revenue:
                    result.Add("sort_by", "revenue" + sfx);
                    break;
                }
            }

            if (0d < VoteAverageMinimum)
            {
                result.Add("vote_average.gte", VoteAverageMinimum);
            }
            if (0d < VoteAverageMaximum)
            {
                result.Add("vote_average.lte", VoteAverageMaximum);
            }
            if (0d < VoteCountMinimum)
            {
                result.Add("vote_count.gte", VoteCountMinimum);
            }
            if (0d < VoteCountMaximum)
            {
                result.Add("vote_count.lte", VoteCountMaximum);
            }

            if (!string.IsNullOrEmpty(CertifiedRatingCountry))
            {
                result.Add("certification_country", CertifiedRatingCountry);
            }

            if (!string.IsNullOrEmpty(CertifiedRating))
            {
                result.Add("certification", CertifiedRating);
            }

            if (!string.IsNullOrEmpty(CertifiedRatingMaximum))
            {
                result.Add("certification.lte", CertifiedRatingMaximum);
            }

            if (!string.IsNullOrEmpty(CertifiedRatingMinimum))
            {
                result.Add("certification.gte", CertifiedRatingMinimum);
            }

            if (false != IncludeAdult)
            {
                result.Add("include_adult", true);
            }

            if (false != IncludeVideo)
            {
                result.Add("include_video", true);
            }

            if (0 < PrimaryReleaseYear)
            {
                result.Add("primary_release_year", PrimaryReleaseYear);
            }

            if (default(DateTime) != PrimaryReleaseDateMaximum)
            {
                result.Add("primary_release_date.lte", PrimaryReleaseDateMaximum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != PrimaryReleaseDateMinimum)
            {
                result.Add("primary_release_date.gte", PrimaryReleaseDateMinimum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != ReleaseDateMaximum)
            {
                result.Add("release_date.lte", ReleaseDateMaximum.ToString("yyyy-MM-dd"));
            }

            if (default(DateTime) != ReleaseDateMinimum)
            {
                result.Add("release_date.gte", ReleaseDateMinimum.ToString("yyyy-MM-dd"));
            }

            if (-1 != ReleaseType)
            {
                result.Add("with_release_type", ReleaseType);
            }

            if (0 != Year)
            {
                result.Add("year", Year);
            }
            var sb = new StringBuilder();

            if (null != CastAllOf || null != CastAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CastAllOf, CastAllOfIds, true);
                result.Add("with_cast", sb.ToString());
            }
            else if (null != CastAnyOf || null != CastAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CastAnyOf, CastAnyOfIds, false);
                result.Add("with_cast", sb.ToString());
            }
            if (null != CrewAllOf || null != CrewAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CrewAllOf, CrewAllOfIds, true);
                result.Add("with_crew", sb.ToString());
            }
            else if (null != CrewAnyOf || null != CrewAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CrewAnyOf, CrewAnyOfIds, false);
                result.Add("with_crew", sb.ToString());
            }
            if (null != PeopleAllOf || null != PeopleAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, PeopleAllOf, PeopleAllOfIds, true);
                result.Add("with_people", sb.ToString());
            }
            else if (null != PeopleAnyOf || null != PeopleAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, PeopleAnyOf, PeopleAnyOfIds, false);
                result.Add("with_people", sb.ToString());
            }
            if (null != CompaniesAllOf || null != CompaniesAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CompaniesAllOf, CompaniesAllOfIds, true);
                result.Add("with_companies", sb.ToString());
            }
            else if (null != CompaniesAnyOf || null != CompaniesAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, CompaniesAnyOf, CompaniesAnyOfIds, false);
                result.Add("with_companies", sb.ToString());
            }

            if (null != GenresAllOf || null != GenresAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, GenresAllOf, GenresAllOfIds, true);
                result.Add("with_genres", sb.ToString());
            }
            else if (null != GenresAnyOf || null != GenresAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, GenresAnyOf, GenresAnyOfIds, false);
                result.Add("with_genres", sb.ToString());
            }

            if (null != WithoutGenresAllOf || null != WithoutGenresAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAllOf, WithoutGenresAllOfIds, true);
                result.Add("without_genres", sb.ToString());
            }
            else if (null != WithoutGenresAnyOf || null != WithoutGenresAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAnyOf, WithoutGenresAnyOfIds, false);
                result.Add("without_genres", sb.ToString());
            }

            if (null != WithoutGenresAllOf || null != WithoutGenresAllOfIds)
            {
                sb.Append("&without_genres=");
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAllOf, WithoutGenresAllOfIds, true);
            }
            else if (null != WithoutGenresAnyOf || null != WithoutGenresAnyOfIds)
            {
                sb.Append("&without_genres=");
                TmdbDiscoverUtility.AppendWith(sb, WithoutGenresAnyOf, WithoutGenresAnyOfIds, true);
            }
            if (null != KeywordsAllOf || null != KeywordsAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, KeywordsAllOf, KeywordsAllOfIds, true);
                result.Add("with_keywords", sb.ToString());
            }
            else if (null != KeywordsAnyOf || null != KeywordsAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, KeywordsAnyOf, KeywordsAnyOfIds, false);
                result.Add("with_keywords", sb.ToString());
            }

            if (null != WithoutKeywordsAllOf || null != WithoutKeywordsAllOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutKeywordsAllOf, WithoutKeywordsAllOfIds, true);
                result.Add("without_keywords", sb.ToString());
            }
            else if (null != WithoutKeywordsAnyOf || null != WithoutKeywordsAnyOfIds)
            {
                sb.Clear();
                TmdbDiscoverUtility.AppendWith(sb, WithoutKeywordsAnyOf, WithoutKeywordsAnyOfIds, false);
                result.Add("without_keywords", sb.ToString());
            }

            if (default(TimeSpan) != RunTimeMaximum)
            {
                result.Add("runtime.lte", RunTimeMaximum.TotalMinutes);
            }

            if (default(TimeSpan) != RunTimeMinimum)
            {
                result.Add("runtime.gte", RunTimeMinimum.TotalMinutes);
            }

            if (!string.IsNullOrEmpty(OriginalLanguage))
            {
                result.Add("original_language", OriginalLanguage);
            }

            return(result);
        }