// ignore_for_file: non_constant_identifier_names
// ignore_for_file: camel_case_types
// ignore_for_file: prefer_single_quotes

// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
import 'package:flutter/material.dart' show debugPrint;
import 'package:domain/entity/auth_login_entity.dart';
import 'package:domain/entity/captcha_img_entity.dart';
import 'package:domain/entity/facility_book_entity.dart';
import 'package:domain/entity/facility_index_entity.dart';
import 'package:domain/entity/facility_page_entity.dart';
import 'package:domain/entity/feedback_detail_entity.dart';
import 'package:domain/entity/feedback_list_entity.dart';
import 'package:domain/entity/form_content_entity.dart';
import 'package:domain/entity/form_detail_entity.dart';
import 'package:domain/entity/form_list_entity.dart';
import 'package:domain/entity/form_option_entity.dart';
import 'package:domain/entity/form_submitted_entity.dart';
import 'package:domain/entity/form_submitted_page_entity.dart';
import 'package:domain/entity/garage_sale_rent_detail_entity.dart';
import 'package:domain/entity/garage_sale_rent_entity.dart';
import 'package:domain/entity/home_list_entity.dart';
import 'package:domain/entity/id_name_entity.dart';
import 'package:domain/entity/latest_news_detail_entity.dart';
import 'package:domain/entity/latest_news_page_entity.dart';
import 'package:domain/entity/myfollowing_list_entity.dart';
import 'package:domain/entity/myposts_newsfeed_entity.dart';
import 'package:domain/entity/myposts_sale_rent_entity.dart';
import 'package:domain/entity/newsfeed_comment_publish_entity.dart';
import 'package:domain/entity/newsfeed_detail_entity.dart';
import 'package:domain/entity/newsfeed_following_entity.dart';
import 'package:domain/entity/newsfeed_foryou_entity.dart';
import 'package:domain/entity/newsfeed_news_entity.dart';
import 'package:domain/entity/notice_board_announ_detail_entity.dart';
import 'package:domain/entity/notice_board_announ_entity.dart';
import 'package:domain/entity/notice_board_documents_entity.dart';
import 'package:domain/entity/notice_board_event_detail_entity.dart';
import 'package:domain/entity/notice_board_event_entity.dart';
import 'package:domain/entity/payment_page_entity.dart';
import 'package:domain/entity/property_news_detail_entity.dart';
import 'package:domain/entity/property_news_entity.dart';
import 'package:domain/entity/property_sale_rent_entity.dart';
import 'package:domain/entity/rewards_active_detail_entity.dart';
import 'package:domain/entity/rewards_buy_entity.dart';
import 'package:domain/entity/rewards_category_entity.dart';
import 'package:domain/entity/rewards_detail_entity.dart';
import 'package:domain/entity/rewards_history_earned_entity.dart';
import 'package:domain/entity/rewards_home_entity.dart';
import 'package:domain/entity/rewards_home_tes_entity.dart';
import 'package:domain/entity/rewards_home_test_entity.dart';
import 'package:domain/entity/rewards_home_tx_entity.dart';
import 'package:domain/entity/rewards_index_entity.dart';
import 'package:domain/entity/rewards_list_entity.dart';
import 'package:domain/entity/rewards_my_detail_entity.dart';
import 'package:domain/entity/rewards_my_entity.dart';
import 'package:domain/entity/rewards_search_entity.dart';
import 'package:domain/entity/server_time.dart';
import 'package:domain/entity/text_kon_entity.dart';
import 'package:domain/entity/user_me_entity.dart';
import 'package:domain/entity/visitor_page_entity.dart';

JsonConvert jsonConvert = JsonConvert();

typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json);
typedef EnumConvertFunction<T> = T Function(String value);
typedef ConvertExceptionHandler = void Function(Object error, StackTrace stackTrace);
extension MapSafeExt<K, V> on Map<K, V> {
  T? getOrNull<T>(K? key) {
    if (!containsKey(key) || key == null) {
      return null;
    } else {
      return this[key] as T?;
    }
  }
}

class JsonConvert {
  static ConvertExceptionHandler? onError;
  JsonConvertClassCollection convertFuncMap = JsonConvertClassCollection();

  /// When you are in the development, to generate a new model class, hot-reload doesn't find new generation model class, you can build on MaterialApp method called jsonConvert. ReassembleConvertFuncMap (); This method only works in a development environment
  /// https://flutter.cn/docs/development/tools/hot-reload
  /// class MyApp extends StatelessWidget {
  ///    const MyApp({Key? key})
  ///        : super(key: key);
  ///
  ///    @override
  ///    Widget build(BuildContext context) {
  ///      jsonConvert.reassembleConvertFuncMap();
  ///      return MaterialApp();
  ///    }
  /// }
  void reassembleConvertFuncMap() {
    bool isReleaseMode = const bool.fromEnvironment('dart.vm.product');
    if (!isReleaseMode) {
      convertFuncMap = JsonConvertClassCollection();
    }
  }

  T? convert<T>(dynamic value, {EnumConvertFunction? enumConvert}) {
    if (value == null) {
      return null;
    }
    if (value is T) {
      return value;
    }
    try {
      return _asT<T>(value, enumConvert: enumConvert);
    } catch (e, stackTrace) {
      debugPrint('asT<$T> $e $stackTrace');
      if (onError != null) {
        onError!(e, stackTrace);
      }
      return null;
    }
  }

  List<T?>? convertList<T>(List<dynamic>? value, {EnumConvertFunction? enumConvert}) {
    if (value == null) {
      return null;
    }
    try {
      return value.map((dynamic e) => _asT<T>(e, enumConvert: enumConvert)).toList();
    } catch (e, stackTrace) {
      debugPrint('asT<$T> $e $stackTrace');
      if (onError != null) {
        onError!(e, stackTrace);
      }
      return <T>[];
    }
  }

  List<T>? convertListNotNull<T>(dynamic value, {EnumConvertFunction? enumConvert}) {
    if (value == null) {
      return null;
    }
    try {
      return (value as List<dynamic>).map((dynamic e) => _asT<T>(e, enumConvert: enumConvert)!).toList();
    } catch (e, stackTrace) {
      debugPrint('asT<$T> $e $stackTrace');
      if (onError != null) {
        onError!(e, stackTrace);
      }
      return <T>[];
    }
  }

  T? _asT<T extends Object?>(dynamic value,
      {EnumConvertFunction? enumConvert}) {
    final String type = T.toString();
    final String valueS = value.toString();
    if (enumConvert != null) {
      return enumConvert(valueS) as T;
    } else if (type == "String") {
      return valueS as T;
    } else if (type == "int") {
      final int? intValue = int.tryParse(valueS);
      if (intValue == null) {
        return double.tryParse(valueS)?.toInt() as T?;
      } else {
        return intValue as T;
      }
    } else if (type == "double") {
      return double.parse(valueS) as T;
    } else if (type == "DateTime") {
      return DateTime.parse(valueS) as T;
    } else if (type == "bool") {
      if (valueS == '0' || valueS == '1') {
        return (valueS == '1') as T;
      }
      return (valueS == 'true') as T;
    } else if (type == "Map" || type.startsWith("Map<")) {
      return value as T;
    } else {
      if (convertFuncMap.containsKey(type)) {
        if (value == null) {
          return null;
        }
        var covertFunc = convertFuncMap[type]!;
        if (covertFunc is Map<String, dynamic>) {
          return covertFunc(value as Map<String, dynamic>) as T;
        } else {
          return covertFunc(Map<String, dynamic>.from(value)) as T;
        }
      } else {
        throw UnimplementedError('$type unimplemented,you can try running the app again');
      }
    }
  }

  //list is returned by type
  static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
    if (<AuthLoginEntity>[] is M) {
      return data.map<AuthLoginEntity>((Map<String, dynamic> e) => AuthLoginEntity.fromJson(e)).toList() as M;
    }
    if (<CaptchaImgEntity>[] is M) {
      return data.map<CaptchaImgEntity>((Map<String, dynamic> e) => CaptchaImgEntity.fromJson(e)).toList() as M;
    }
    if (<FacilityBookEntity>[] is M) {
      return data.map<FacilityBookEntity>((Map<String, dynamic> e) => FacilityBookEntity.fromJson(e)).toList() as M;
    }
    if (<FacilityBookFacilityType>[] is M) {
      return data.map<FacilityBookFacilityType>((Map<String, dynamic> e) => FacilityBookFacilityType.fromJson(e)).toList() as M;
    }
    if (<FacilityBookFacilities>[] is M) {
      return data.map<FacilityBookFacilities>((Map<String, dynamic> e) => FacilityBookFacilities.fromJson(e)).toList() as M;
    }
    if (<FacilityBookFacilitiesPeriods>[] is M) {
      return data.map<FacilityBookFacilitiesPeriods>((Map<String, dynamic> e) => FacilityBookFacilitiesPeriods.fromJson(e)).toList() as M;
    }
    if (<FacilityIndexEntity>[] is M) {
      return data.map<FacilityIndexEntity>((Map<String, dynamic> e) => FacilityIndexEntity.fromJson(e)).toList() as M;
    }
    if (<FacilityPageEntity>[] is M) {
      return data.map<FacilityPageEntity>((Map<String, dynamic> e) => FacilityPageEntity.fromJson(e)).toList() as M;
    }
    if (<FacilityDetail>[] is M) {
      return data.map<FacilityDetail>((Map<String, dynamic> e) => FacilityDetail.fromJson(e)).toList() as M;
    }
    if (<FacilityPageListBooking>[] is M) {
      return data.map<FacilityPageListBooking>((Map<String, dynamic> e) => FacilityPageListBooking.fromJson(e)).toList() as M;
    }
    if (<FacilityPageListFacility>[] is M) {
      return data.map<FacilityPageListFacility>((Map<String, dynamic> e) => FacilityPageListFacility.fromJson(e)).toList() as M;
    }
    if (<FacilityPageListFacilityType>[] is M) {
      return data.map<FacilityPageListFacilityType>((Map<String, dynamic> e) => FacilityPageListFacilityType.fromJson(e)).toList() as M;
    }
    if (<FacilityPageListTimePeriod>[] is M) {
      return data.map<FacilityPageListTimePeriod>((Map<String, dynamic> e) => FacilityPageListTimePeriod.fromJson(e)).toList() as M;
    }
    if (<FacilityPageListAccount>[] is M) {
      return data.map<FacilityPageListAccount>((Map<String, dynamic> e) => FacilityPageListAccount.fromJson(e)).toList() as M;
    }
    if (<FeedbackDetailEntity>[] is M) {
      return data.map<FeedbackDetailEntity>((Map<String, dynamic> e) => FeedbackDetailEntity.fromJson(e)).toList() as M;
    }
    if (<FeedbackDetailReplies>[] is M) {
      return data.map<FeedbackDetailReplies>((Map<String, dynamic> e) => FeedbackDetailReplies.fromJson(e)).toList() as M;
    }
    if (<FeedbackListEntity>[] is M) {
      return data.map<FeedbackListEntity>((Map<String, dynamic> e) => FeedbackListEntity.fromJson(e)).toList() as M;
    }
    if (<FeedbackItemEntity>[] is M) {
      return data.map<FeedbackItemEntity>((Map<String, dynamic> e) => FeedbackItemEntity.fromJson(e)).toList() as M;
    }
    if (<FormContentEntity>[] is M) {
      return data.map<FormContentEntity>((Map<String, dynamic> e) => FormContentEntity.fromJson(e)).toList() as M;
    }
    if (<FormDetailEntity>[] is M) {
      return data.map<FormDetailEntity>((Map<String, dynamic> e) => FormDetailEntity.fromJson(e)).toList() as M;
    }
    if (<FormListEntity>[] is M) {
      return data.map<FormListEntity>((Map<String, dynamic> e) => FormListEntity.fromJson(e)).toList() as M;
    }
    if (<FormOptionEntity>[] is M) {
      return data.map<FormOptionEntity>((Map<String, dynamic> e) => FormOptionEntity.fromJson(e)).toList() as M;
    }
    if (<FormSubmittedEntity>[] is M) {
      return data.map<FormSubmittedEntity>((Map<String, dynamic> e) => FormSubmittedEntity.fromJson(e)).toList() as M;
    }
    if (<FormSubmittedEstateOnlineForm>[] is M) {
      return data.map<FormSubmittedEstateOnlineForm>((Map<String, dynamic> e) => FormSubmittedEstateOnlineForm.fromJson(e)).toList() as M;
    }
    if (<FormSubmittedPageEntity>[] is M) {
      return data.map<FormSubmittedPageEntity>((Map<String, dynamic> e) => FormSubmittedPageEntity.fromJson(e)).toList() as M;
    }
    if (<GarageSaleRentDetailEntity>[] is M) {
      return data.map<GarageSaleRentDetailEntity>((Map<String, dynamic> e) => GarageSaleRentDetailEntity.fromJson(e)).toList() as M;
    }
    if (<GarageSaleRentDetailAccount>[] is M) {
      return data.map<GarageSaleRentDetailAccount>((Map<String, dynamic> e) => GarageSaleRentDetailAccount.fromJson(e)).toList() as M;
    }
    if (<GarageSaleRentEntity>[] is M) {
      return data.map<GarageSaleRentEntity>((Map<String, dynamic> e) => GarageSaleRentEntity.fromJson(e)).toList() as M;
    }
    if (<GarageSaleRentList>[] is M) {
      return data.map<GarageSaleRentList>((Map<String, dynamic> e) => GarageSaleRentList.fromJson(e)).toList() as M;
    }
    if (<GarageSaleRentListAccount>[] is M) {
      return data.map<GarageSaleRentListAccount>((Map<String, dynamic> e) => GarageSaleRentListAccount.fromJson(e)).toList() as M;
    }
    if (<HomeListEntity>[] is M) {
      return data.map<HomeListEntity>((Map<String, dynamic> e) => HomeListEntity.fromJson(e)).toList() as M;
    }
    if (<HomeListBanners>[] is M) {
      return data.map<HomeListBanners>((Map<String, dynamic> e) => HomeListBanners.fromJson(e)).toList() as M;
    }
    if (<HomeListLatestTransactions>[] is M) {
      return data.map<HomeListLatestTransactions>((Map<String, dynamic> e) => HomeListLatestTransactions.fromJson(e)).toList() as M;
    }
    if (<HomeListPropertyNews>[] is M) {
      return data.map<HomeListPropertyNews>((Map<String, dynamic> e) => HomeListPropertyNews.fromJson(e)).toList() as M;
    }
    if (<IdNameEntity>[] is M) {
      return data.map<IdNameEntity>((Map<String, dynamic> e) => IdNameEntity.fromJson(e)).toList() as M;
    }
    if (<LatestNewsDetailEntity>[] is M) {
      return data.map<LatestNewsDetailEntity>((Map<String, dynamic> e) => LatestNewsDetailEntity.fromJson(e)).toList() as M;
    }
    if (<LatestNewsPageEntity>[] is M) {
      return data.map<LatestNewsPageEntity>((Map<String, dynamic> e) => LatestNewsPageEntity.fromJson(e)).toList() as M;
    }
    if (<LatestNewsList>[] is M) {
      return data.map<LatestNewsList>((Map<String, dynamic> e) => LatestNewsList.fromJson(e)).toList() as M;
    }
    if (<MyfollowingListEntity>[] is M) {
      return data.map<MyfollowingListEntity>((Map<String, dynamic> e) => MyfollowingListEntity.fromJson(e)).toList() as M;
    }
    if (<MypostsNewsfeedEntity>[] is M) {
      return data.map<MypostsNewsfeedEntity>((Map<String, dynamic> e) => MypostsNewsfeedEntity.fromJson(e)).toList() as M;
    }
    if (<MypostsNewsfeedList>[] is M) {
      return data.map<MypostsNewsfeedList>((Map<String, dynamic> e) => MypostsNewsfeedList.fromJson(e)).toList() as M;
    }
    if (<MypostsNewsfeedListAccount>[] is M) {
      return data.map<MypostsNewsfeedListAccount>((Map<String, dynamic> e) => MypostsNewsfeedListAccount.fromJson(e)).toList() as M;
    }
    if (<MypostsSaleRentEntity>[] is M) {
      return data.map<MypostsSaleRentEntity>((Map<String, dynamic> e) => MypostsSaleRentEntity.fromJson(e)).toList() as M;
    }
    if (<MypostsSaleRentList>[] is M) {
      return data.map<MypostsSaleRentList>((Map<String, dynamic> e) => MypostsSaleRentList.fromJson(e)).toList() as M;
    }
    if (<NewsfeedCommentPublishEntity>[] is M) {
      return data.map<NewsfeedCommentPublishEntity>((Map<String, dynamic> e) => NewsfeedCommentPublishEntity.fromJson(e)).toList() as M;
    }
    if (<NewsfeedDetailEntity>[] is M) {
      return data.map<NewsfeedDetailEntity>((Map<String, dynamic> e) => NewsfeedDetailEntity.fromJson(e)).toList() as M;
    }
    if (<NewsfeedDetailAccount>[] is M) {
      return data.map<NewsfeedDetailAccount>((Map<String, dynamic> e) => NewsfeedDetailAccount.fromJson(e)).toList() as M;
    }
    if (<NewsfeedDetailComments>[] is M) {
      return data.map<NewsfeedDetailComments>((Map<String, dynamic> e) => NewsfeedDetailComments.fromJson(e)).toList() as M;
    }
    if (<NewsfeedDetailCommentsAccount>[] is M) {
      return data.map<NewsfeedDetailCommentsAccount>((Map<String, dynamic> e) => NewsfeedDetailCommentsAccount.fromJson(e)).toList() as M;
    }
    if (<NewsfeedDetailCommentsToAccount>[] is M) {
      return data.map<NewsfeedDetailCommentsToAccount>((Map<String, dynamic> e) => NewsfeedDetailCommentsToAccount.fromJson(e)).toList() as M;
    }
    if (<NewsfeedFollowingEntity>[] is M) {
      return data.map<NewsfeedFollowingEntity>((Map<String, dynamic> e) => NewsfeedFollowingEntity.fromJson(e)).toList() as M;
    }
    if (<NewsfeedFollowingList>[] is M) {
      return data.map<NewsfeedFollowingList>((Map<String, dynamic> e) => NewsfeedFollowingList.fromJson(e)).toList() as M;
    }
    if (<NewsfeedFollowingListAccount>[] is M) {
      return data.map<NewsfeedFollowingListAccount>((Map<String, dynamic> e) => NewsfeedFollowingListAccount.fromJson(e)).toList() as M;
    }
    if (<NewsfeedForyouEntity>[] is M) {
      return data.map<NewsfeedForyouEntity>((Map<String, dynamic> e) => NewsfeedForyouEntity.fromJson(e)).toList() as M;
    }
    if (<NewsfeedForyouList>[] is M) {
      return data.map<NewsfeedForyouList>((Map<String, dynamic> e) => NewsfeedForyouList.fromJson(e)).toList() as M;
    }
    if (<NewsfeedForyouListAccount>[] is M) {
      return data.map<NewsfeedForyouListAccount>((Map<String, dynamic> e) => NewsfeedForyouListAccount.fromJson(e)).toList() as M;
    }
    if (<NewsfeedNewsEntity>[] is M) {
      return data.map<NewsfeedNewsEntity>((Map<String, dynamic> e) => NewsfeedNewsEntity.fromJson(e)).toList() as M;
    }
    if (<NewsfeedNewsList>[] is M) {
      return data.map<NewsfeedNewsList>((Map<String, dynamic> e) => NewsfeedNewsList.fromJson(e)).toList() as M;
    }
    if (<NewsfeedNewsListAccount>[] is M) {
      return data.map<NewsfeedNewsListAccount>((Map<String, dynamic> e) => NewsfeedNewsListAccount.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardAnnounDetailEntity>[] is M) {
      return data.map<NoticeBoardAnnounDetailEntity>((Map<String, dynamic> e) => NoticeBoardAnnounDetailEntity.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardAnnounEntity>[] is M) {
      return data.map<NoticeBoardAnnounEntity>((Map<String, dynamic> e) => NoticeBoardAnnounEntity.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardAnnounList>[] is M) {
      return data.map<NoticeBoardAnnounList>((Map<String, dynamic> e) => NoticeBoardAnnounList.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardDocumentsEntity>[] is M) {
      return data.map<NoticeBoardDocumentsEntity>((Map<String, dynamic> e) => NoticeBoardDocumentsEntity.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardDocumentsList>[] is M) {
      return data.map<NoticeBoardDocumentsList>((Map<String, dynamic> e) => NoticeBoardDocumentsList.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardEventDetailEntity>[] is M) {
      return data.map<NoticeBoardEventDetailEntity>((Map<String, dynamic> e) => NoticeBoardEventDetailEntity.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardEventEntity>[] is M) {
      return data.map<NoticeBoardEventEntity>((Map<String, dynamic> e) => NoticeBoardEventEntity.fromJson(e)).toList() as M;
    }
    if (<NoticeBoardEventList>[] is M) {
      return data.map<NoticeBoardEventList>((Map<String, dynamic> e) => NoticeBoardEventList.fromJson(e)).toList() as M;
    }
    if (<PaymentPageEntity>[] is M) {
      return data.map<PaymentPageEntity>((Map<String, dynamic> e) => PaymentPageEntity.fromJson(e)).toList() as M;
    }
    if (<PaymentPageList>[] is M) {
      return data.map<PaymentPageList>((Map<String, dynamic> e) => PaymentPageList.fromJson(e)).toList() as M;
    }
    if (<PropertyNewsDetailEntity>[] is M) {
      return data.map<PropertyNewsDetailEntity>((Map<String, dynamic> e) => PropertyNewsDetailEntity.fromJson(e)).toList() as M;
    }
    if (<PropertyNewsEntity>[] is M) {
      return data.map<PropertyNewsEntity>((Map<String, dynamic> e) => PropertyNewsEntity.fromJson(e)).toList() as M;
    }
    if (<PropertyNewsList>[] is M) {
      return data.map<PropertyNewsList>((Map<String, dynamic> e) => PropertyNewsList.fromJson(e)).toList() as M;
    }
    if (<PropertySaleRentEntity>[] is M) {
      return data.map<PropertySaleRentEntity>((Map<String, dynamic> e) => PropertySaleRentEntity.fromJson(e)).toList() as M;
    }
    if (<PropertySaleRentList>[] is M) {
      return data.map<PropertySaleRentList>((Map<String, dynamic> e) => PropertySaleRentList.fromJson(e)).toList() as M;
    }
    if (<RewardsActiveDetailEntity>[] is M) {
      return data.map<RewardsActiveDetailEntity>((Map<String, dynamic> e) => RewardsActiveDetailEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsActiveDetailData>[] is M) {
      return data.map<RewardsActiveDetailData>((Map<String, dynamic> e) => RewardsActiveDetailData.fromJson(e)).toList() as M;
    }
    if (<RewardsActiveDetailDataAccount>[] is M) {
      return data.map<RewardsActiveDetailDataAccount>((Map<String, dynamic> e) => RewardsActiveDetailDataAccount.fromJson(e)).toList() as M;
    }
    if (<RewardsActiveDetailDataReward>[] is M) {
      return data.map<RewardsActiveDetailDataReward>((Map<String, dynamic> e) => RewardsActiveDetailDataReward.fromJson(e)).toList() as M;
    }
    if (<RewardsBuyEntity>[] is M) {
      return data.map<RewardsBuyEntity>((Map<String, dynamic> e) => RewardsBuyEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsBuyReward>[] is M) {
      return data.map<RewardsBuyReward>((Map<String, dynamic> e) => RewardsBuyReward.fromJson(e)).toList() as M;
    }
    if (<RewardsBuyRewardRedeemable>[] is M) {
      return data.map<RewardsBuyRewardRedeemable>((Map<String, dynamic> e) => RewardsBuyRewardRedeemable.fromJson(e)).toList() as M;
    }
    if (<RewardsCategoryEntity>[] is M) {
      return data.map<RewardsCategoryEntity>((Map<String, dynamic> e) => RewardsCategoryEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsDetailEntity>[] is M) {
      return data.map<RewardsDetailEntity>((Map<String, dynamic> e) => RewardsDetailEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsDetailRedeemable>[] is M) {
      return data.map<RewardsDetailRedeemable>((Map<String, dynamic> e) => RewardsDetailRedeemable.fromJson(e)).toList() as M;
    }
    if (<RewardsHistoryEarnedEntity>[] is M) {
      return data.map<RewardsHistoryEarnedEntity>((Map<String, dynamic> e) => RewardsHistoryEarnedEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsHistoryEarnedList>[] is M) {
      return data.map<RewardsHistoryEarnedList>((Map<String, dynamic> e) => RewardsHistoryEarnedList.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeEntity>[] is M) {
      return data.map<RewardsHomeEntity>((Map<String, dynamic> e) => RewardsHomeEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeData>[] is M) {
      return data.map<RewardsHomeData>((Map<String, dynamic> e) => RewardsHomeData.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeDataRewards>[] is M) {
      return data.map<RewardsHomeDataRewards>((Map<String, dynamic> e) => RewardsHomeDataRewards.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeTesEntity>[] is M) {
      return data.map<RewardsHomeTesEntity>((Map<String, dynamic> e) => RewardsHomeTesEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeTesRewards>[] is M) {
      return data.map<RewardsHomeTesRewards>((Map<String, dynamic> e) => RewardsHomeTesRewards.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeTestEntity>[] is M) {
      return data.map<RewardsHomeTestEntity>((Map<String, dynamic> e) => RewardsHomeTestEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsHomeTxEntity>[] is M) {
      return data.map<RewardsHomeTxEntity>((Map<String, dynamic> e) => RewardsHomeTxEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsIndexEntity>[] is M) {
      return data.map<RewardsIndexEntity>((Map<String, dynamic> e) => RewardsIndexEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsIndexContinuous>[] is M) {
      return data.map<RewardsIndexContinuous>((Map<String, dynamic> e) => RewardsIndexContinuous.fromJson(e)).toList() as M;
    }
    if (<RewardsIndexTasks>[] is M) {
      return data.map<RewardsIndexTasks>((Map<String, dynamic> e) => RewardsIndexTasks.fromJson(e)).toList() as M;
    }
    if (<RewardsListEntity>[] is M) {
      return data.map<RewardsListEntity>((Map<String, dynamic> e) => RewardsListEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsListList>[] is M) {
      return data.map<RewardsListList>((Map<String, dynamic> e) => RewardsListList.fromJson(e)).toList() as M;
    }
    if (<RewardsMyDetailEntity>[] is M) {
      return data.map<RewardsMyDetailEntity>((Map<String, dynamic> e) => RewardsMyDetailEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsMyDetailAccount>[] is M) {
      return data.map<RewardsMyDetailAccount>((Map<String, dynamic> e) => RewardsMyDetailAccount.fromJson(e)).toList() as M;
    }
    if (<RewardsMyDetailReward>[] is M) {
      return data.map<RewardsMyDetailReward>((Map<String, dynamic> e) => RewardsMyDetailReward.fromJson(e)).toList() as M;
    }
    if (<RewardsMyEntity>[] is M) {
      return data.map<RewardsMyEntity>((Map<String, dynamic> e) => RewardsMyEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsMyList>[] is M) {
      return data.map<RewardsMyList>((Map<String, dynamic> e) => RewardsMyList.fromJson(e)).toList() as M;
    }
    if (<RewardsMyListReward>[] is M) {
      return data.map<RewardsMyListReward>((Map<String, dynamic> e) => RewardsMyListReward.fromJson(e)).toList() as M;
    }
    if (<RewardsSearchEntity>[] is M) {
      return data.map<RewardsSearchEntity>((Map<String, dynamic> e) => RewardsSearchEntity.fromJson(e)).toList() as M;
    }
    if (<RewardsSearchRewards>[] is M) {
      return data.map<RewardsSearchRewards>((Map<String, dynamic> e) => RewardsSearchRewards.fromJson(e)).toList() as M;
    }
    if (<ServerTime>[] is M) {
      return data.map<ServerTime>((Map<String, dynamic> e) => ServerTime.fromJson(e)).toList() as M;
    }
    if (<TextKonEntity>[] is M) {
      return data.map<TextKonEntity>((Map<String, dynamic> e) => TextKonEntity.fromJson(e)).toList() as M;
    }
    if (<UserMeEntity>[] is M) {
      return data.map<UserMeEntity>((Map<String, dynamic> e) => UserMeEntity.fromJson(e)).toList() as M;
    }
    if (<UserMeHouseholds>[] is M) {
      return data.map<UserMeHouseholds>((Map<String, dynamic> e) => UserMeHouseholds.fromJson(e)).toList() as M;
    }
    if (<UserMeEstates>[] is M) {
      return data.map<UserMeEstates>((Map<String, dynamic> e) => UserMeEstates.fromJson(e)).toList() as M;
    }
    if (<UserMeEstatesAccounts>[] is M) {
      return data.map<UserMeEstatesAccounts>((Map<String, dynamic> e) => UserMeEstatesAccounts.fromJson(e)).toList() as M;
    }
    if (<UserMeEstatesAccountsUnit>[] is M) {
      return data.map<UserMeEstatesAccountsUnit>((Map<String, dynamic> e) => UserMeEstatesAccountsUnit.fromJson(e)).toList() as M;
    }
    if (<UserMeDefaultUnit>[] is M) {
      return data.map<UserMeDefaultUnit>((Map<String, dynamic> e) => UserMeDefaultUnit.fromJson(e)).toList() as M;
    }
    if (<UserMeInformation>[] is M) {
      return data.map<UserMeInformation>((Map<String, dynamic> e) => UserMeInformation.fromJson(e)).toList() as M;
    }
    if (<VisitorPageEntity>[] is M) {
      return data.map<VisitorPageEntity>((Map<String, dynamic> e) => VisitorPageEntity.fromJson(e)).toList() as M;
    }
    if (<VisitorPageList>[] is M) {
      return data.map<VisitorPageList>((Map<String, dynamic> e) => VisitorPageList.fromJson(e)).toList() as M;
    }

    debugPrint("$M not found");

    return null;
  }

  static M? fromJsonAsT<M>(dynamic json) {
    if (json is M) {
      return json;
    }
    if (json is List) {
      return _getListChildType<M>(json.map((dynamic e) => e as Map<String, dynamic>).toList());
    } else {
      return jsonConvert.convert<M>(json);
    }
  }
}

class JsonConvertClassCollection {
  Map<String, JsonConvertFunction> convertFuncMap = {
    (AuthLoginEntity).toString(): AuthLoginEntity.fromJson,
    (CaptchaImgEntity).toString(): CaptchaImgEntity.fromJson,
    (FacilityBookEntity).toString(): FacilityBookEntity.fromJson,
    (FacilityBookFacilityType).toString(): FacilityBookFacilityType.fromJson,
    (FacilityBookFacilities).toString(): FacilityBookFacilities.fromJson,
    (FacilityBookFacilitiesPeriods).toString(): FacilityBookFacilitiesPeriods.fromJson,
    (FacilityIndexEntity).toString(): FacilityIndexEntity.fromJson,
    (FacilityPageEntity).toString(): FacilityPageEntity.fromJson,
    (FacilityDetail).toString(): FacilityDetail.fromJson,
    (FacilityPageListBooking).toString(): FacilityPageListBooking.fromJson,
    (FacilityPageListFacility).toString(): FacilityPageListFacility.fromJson,
    (FacilityPageListFacilityType).toString(): FacilityPageListFacilityType.fromJson,
    (FacilityPageListTimePeriod).toString(): FacilityPageListTimePeriod.fromJson,
    (FacilityPageListAccount).toString(): FacilityPageListAccount.fromJson,
    (FeedbackDetailEntity).toString(): FeedbackDetailEntity.fromJson,
    (FeedbackDetailReplies).toString(): FeedbackDetailReplies.fromJson,
    (FeedbackListEntity).toString(): FeedbackListEntity.fromJson,
    (FeedbackItemEntity).toString(): FeedbackItemEntity.fromJson,
    (FormContentEntity).toString(): FormContentEntity.fromJson,
    (FormDetailEntity).toString(): FormDetailEntity.fromJson,
    (FormListEntity).toString(): FormListEntity.fromJson,
    (FormOptionEntity).toString(): FormOptionEntity.fromJson,
    (FormSubmittedEntity).toString(): FormSubmittedEntity.fromJson,
    (FormSubmittedEstateOnlineForm).toString(): FormSubmittedEstateOnlineForm.fromJson,
    (FormSubmittedPageEntity).toString(): FormSubmittedPageEntity.fromJson,
    (GarageSaleRentDetailEntity).toString(): GarageSaleRentDetailEntity.fromJson,
    (GarageSaleRentDetailAccount).toString(): GarageSaleRentDetailAccount.fromJson,
    (GarageSaleRentEntity).toString(): GarageSaleRentEntity.fromJson,
    (GarageSaleRentList).toString(): GarageSaleRentList.fromJson,
    (GarageSaleRentListAccount).toString(): GarageSaleRentListAccount.fromJson,
    (HomeListEntity).toString(): HomeListEntity.fromJson,
    (HomeListBanners).toString(): HomeListBanners.fromJson,
    (HomeListLatestTransactions).toString(): HomeListLatestTransactions.fromJson,
    (HomeListPropertyNews).toString(): HomeListPropertyNews.fromJson,
    (IdNameEntity).toString(): IdNameEntity.fromJson,
    (LatestNewsDetailEntity).toString(): LatestNewsDetailEntity.fromJson,
    (LatestNewsPageEntity).toString(): LatestNewsPageEntity.fromJson,
    (LatestNewsList).toString(): LatestNewsList.fromJson,
    (MyfollowingListEntity).toString(): MyfollowingListEntity.fromJson,
    (MypostsNewsfeedEntity).toString(): MypostsNewsfeedEntity.fromJson,
    (MypostsNewsfeedList).toString(): MypostsNewsfeedList.fromJson,
    (MypostsNewsfeedListAccount).toString(): MypostsNewsfeedListAccount.fromJson,
    (MypostsSaleRentEntity).toString(): MypostsSaleRentEntity.fromJson,
    (MypostsSaleRentList).toString(): MypostsSaleRentList.fromJson,
    (NewsfeedCommentPublishEntity).toString(): NewsfeedCommentPublishEntity.fromJson,
    (NewsfeedDetailEntity).toString(): NewsfeedDetailEntity.fromJson,
    (NewsfeedDetailAccount).toString(): NewsfeedDetailAccount.fromJson,
    (NewsfeedDetailComments).toString(): NewsfeedDetailComments.fromJson,
    (NewsfeedDetailCommentsAccount).toString(): NewsfeedDetailCommentsAccount.fromJson,
    (NewsfeedDetailCommentsToAccount).toString(): NewsfeedDetailCommentsToAccount.fromJson,
    (NewsfeedFollowingEntity).toString(): NewsfeedFollowingEntity.fromJson,
    (NewsfeedFollowingList).toString(): NewsfeedFollowingList.fromJson,
    (NewsfeedFollowingListAccount).toString(): NewsfeedFollowingListAccount.fromJson,
    (NewsfeedForyouEntity).toString(): NewsfeedForyouEntity.fromJson,
    (NewsfeedForyouList).toString(): NewsfeedForyouList.fromJson,
    (NewsfeedForyouListAccount).toString(): NewsfeedForyouListAccount.fromJson,
    (NewsfeedNewsEntity).toString(): NewsfeedNewsEntity.fromJson,
    (NewsfeedNewsList).toString(): NewsfeedNewsList.fromJson,
    (NewsfeedNewsListAccount).toString(): NewsfeedNewsListAccount.fromJson,
    (NoticeBoardAnnounDetailEntity).toString(): NoticeBoardAnnounDetailEntity.fromJson,
    (NoticeBoardAnnounEntity).toString(): NoticeBoardAnnounEntity.fromJson,
    (NoticeBoardAnnounList).toString(): NoticeBoardAnnounList.fromJson,
    (NoticeBoardDocumentsEntity).toString(): NoticeBoardDocumentsEntity.fromJson,
    (NoticeBoardDocumentsList).toString(): NoticeBoardDocumentsList.fromJson,
    (NoticeBoardEventDetailEntity).toString(): NoticeBoardEventDetailEntity.fromJson,
    (NoticeBoardEventEntity).toString(): NoticeBoardEventEntity.fromJson,
    (NoticeBoardEventList).toString(): NoticeBoardEventList.fromJson,
    (PaymentPageEntity).toString(): PaymentPageEntity.fromJson,
    (PaymentPageList).toString(): PaymentPageList.fromJson,
    (PropertyNewsDetailEntity).toString(): PropertyNewsDetailEntity.fromJson,
    (PropertyNewsEntity).toString(): PropertyNewsEntity.fromJson,
    (PropertyNewsList).toString(): PropertyNewsList.fromJson,
    (PropertySaleRentEntity).toString(): PropertySaleRentEntity.fromJson,
    (PropertySaleRentList).toString(): PropertySaleRentList.fromJson,
    (RewardsActiveDetailEntity).toString(): RewardsActiveDetailEntity.fromJson,
    (RewardsActiveDetailData).toString(): RewardsActiveDetailData.fromJson,
    (RewardsActiveDetailDataAccount).toString(): RewardsActiveDetailDataAccount.fromJson,
    (RewardsActiveDetailDataReward).toString(): RewardsActiveDetailDataReward.fromJson,
    (RewardsBuyEntity).toString(): RewardsBuyEntity.fromJson,
    (RewardsBuyReward).toString(): RewardsBuyReward.fromJson,
    (RewardsBuyRewardRedeemable).toString(): RewardsBuyRewardRedeemable.fromJson,
    (RewardsCategoryEntity).toString(): RewardsCategoryEntity.fromJson,
    (RewardsDetailEntity).toString(): RewardsDetailEntity.fromJson,
    (RewardsDetailRedeemable).toString(): RewardsDetailRedeemable.fromJson,
    (RewardsHistoryEarnedEntity).toString(): RewardsHistoryEarnedEntity.fromJson,
    (RewardsHistoryEarnedList).toString(): RewardsHistoryEarnedList.fromJson,
    (RewardsHomeEntity).toString(): RewardsHomeEntity.fromJson,
    (RewardsHomeData).toString(): RewardsHomeData.fromJson,
    (RewardsHomeDataRewards).toString(): RewardsHomeDataRewards.fromJson,
    (RewardsHomeTesEntity).toString(): RewardsHomeTesEntity.fromJson,
    (RewardsHomeTesRewards).toString(): RewardsHomeTesRewards.fromJson,
    (RewardsHomeTestEntity).toString(): RewardsHomeTestEntity.fromJson,
    (RewardsHomeTxEntity).toString(): RewardsHomeTxEntity.fromJson,
    (RewardsIndexEntity).toString(): RewardsIndexEntity.fromJson,
    (RewardsIndexContinuous).toString(): RewardsIndexContinuous.fromJson,
    (RewardsIndexTasks).toString(): RewardsIndexTasks.fromJson,
    (RewardsListEntity).toString(): RewardsListEntity.fromJson,
    (RewardsListList).toString(): RewardsListList.fromJson,
    (RewardsMyDetailEntity).toString(): RewardsMyDetailEntity.fromJson,
    (RewardsMyDetailAccount).toString(): RewardsMyDetailAccount.fromJson,
    (RewardsMyDetailReward).toString(): RewardsMyDetailReward.fromJson,
    (RewardsMyEntity).toString(): RewardsMyEntity.fromJson,
    (RewardsMyList).toString(): RewardsMyList.fromJson,
    (RewardsMyListReward).toString(): RewardsMyListReward.fromJson,
    (RewardsSearchEntity).toString(): RewardsSearchEntity.fromJson,
    (RewardsSearchRewards).toString(): RewardsSearchRewards.fromJson,
    (ServerTime).toString(): ServerTime.fromJson,
    (TextKonEntity).toString(): TextKonEntity.fromJson,
    (UserMeEntity).toString(): UserMeEntity.fromJson,
    (UserMeHouseholds).toString(): UserMeHouseholds.fromJson,
    (UserMeEstates).toString(): UserMeEstates.fromJson,
    (UserMeEstatesAccounts).toString(): UserMeEstatesAccounts.fromJson,
    (UserMeEstatesAccountsUnit).toString(): UserMeEstatesAccountsUnit.fromJson,
    (UserMeDefaultUnit).toString(): UserMeDefaultUnit.fromJson,
    (UserMeInformation).toString(): UserMeInformation.fromJson,
    (VisitorPageEntity).toString(): VisitorPageEntity.fromJson,
    (VisitorPageList).toString(): VisitorPageList.fromJson,
  };

  bool containsKey(String type) {
    return convertFuncMap.containsKey(type);
  }

  JsonConvertFunction? operator [](String key) {
    return convertFuncMap[key];
  }
}