// 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/response/add_edit_revise_view_s_g_entity.dart';
import 'package:domain/entity/response/agency_detail_entity.dart';
import 'package:domain/entity/response/agency_option_entity.dart';
import 'package:domain/entity/response/agency_table_entity.dart';
import 'package:domain/entity/response/attendance_entity.dart';
import 'package:domain/entity/response/attendance_review_entity.dart';
import 'package:domain/entity/response/check_success_entity.dart';
import 'package:domain/entity/response/contract_detail_entity.dart';
import 'package:domain/entity/response/contract_option_entity.dart';
import 'package:domain/entity/response/contract_position_add_option_entity.dart';
import 'package:domain/entity/response/contract_position_option_entity.dart';
import 'package:domain/entity/response/contract_position_rate_detail_entity.dart';
import 'package:domain/entity/response/contract_position_rate_specific_option_entity.dart';
import 'package:domain/entity/response/contract_position_rate_table_entity.dart';
import 'package:domain/entity/response/contract_position_table_entity.dart';
import 'package:domain/entity/response/contract_table_entity.dart';
import 'package:domain/entity/response/device_list_entity.dart';
import 'package:domain/entity/response/fiance_report_entity.dart';
import 'package:domain/entity/response/hotel_info_entity.dart';
import 'package:domain/entity/response/id_name_entity.dart';
import 'package:domain/entity/response/index_option_entity.dart';
import 'package:domain/entity/response/job_applied_edit_index_s_g_entity.dart';
import 'package:domain/entity/response/job_applied_index_s_g_entity.dart';
import 'package:domain/entity/response/job_applied_list_s_g_entity.dart';
import 'package:domain/entity/response/job_applied_remark_view_s_g_entity.dart';
import 'package:domain/entity/response/job_applied_staff_s_g_entity.dart';
import 'package:domain/entity/response/job_list_add_staff_entity.dart';
import 'package:domain/entity/response/job_list_applied_edit_entity.dart';
import 'package:domain/entity/response/job_list_applied_info_entity.dart';
import 'package:domain/entity/response/job_list_applied_staff_list_entity.dart';
import 'package:domain/entity/response/job_list_applied_staff_search_entity.dart';
import 'package:domain/entity/response/job_list_applied_work_flow_entity.dart';
import 'package:domain/entity/response/job_list_detail_entity.dart';
import 'package:domain/entity/response/job_list_e_r_detail_entity.dart';
import 'package:domain/entity/response/job_list_e_r_option_entity.dart';
import 'package:domain/entity/response/job_list_edit_index_s_g_entity.dart';
import 'package:domain/entity/response/job_list_entity.dart';
import 'package:domain/entity/response/job_list_index_entity.dart';
import 'package:domain/entity/response/job_list_index_s_g_entity.dart';
import 'package:domain/entity/response/job_list_remark_view_entity.dart';
import 'package:domain/entity/response/job_list_s_g_entity.dart';
import 'package:domain/entity/response/job_template_edit_index_entity.dart';
import 'package:domain/entity/response/job_template_s_g_entity.dart';
import 'package:domain/entity/response/job_title_edit_index_entity.dart';
import 'package:domain/entity/response/job_title_s_g_entity.dart';
import 'package:domain/entity/response/labour_list_e_r_entity.dart';
import 'package:domain/entity/response/labour_report_entity.dart';
import 'package:domain/entity/response/labour_report_v_n_entity.dart';
import 'package:domain/entity/response/labour_request_e_r_entity.dart';
import 'package:domain/entity/response/labour_request_e_r_option_entity.dart';
import 'package:domain/entity/response/labour_request_edit_index_entity.dart';
import 'package:domain/entity/response/labour_request_index_entity.dart';
import 'package:domain/entity/response/labour_request_list_entity.dart';
import 'package:domain/entity/response/labour_request_work_flow_entity.dart';
import 'package:domain/entity/response/labour_review_list_entity.dart';
import 'package:domain/entity/response/labour_review_status_entity.dart';
import 'package:domain/entity/response/position_table_entity.dart';
import 'package:domain/entity/response/revise_index_s_g_entity.dart';
import 'package:domain/entity/response/revise_list_s_g_entity.dart';
import 'package:domain/entity/response/revise_log_s_g_entity.dart';
import 'package:domain/entity/response/s_g_attendance_review_option_entity.dart';
import 'package:domain/entity/response/s_g_attendance_review_table_entity.dart';
import 'package:domain/entity/response/s_g_attendance_review_workflow_entity.dart';
import 'package:domain/entity/response/s_g_dashboard_entity.dart';
import 'package:domain/entity/response/s_g_labour_request_add_option_entity.dart';
import 'package:domain/entity/response/s_g_labour_request_detail_entity.dart';
import 'package:domain/entity/response/s_g_labour_request_option_entity.dart';
import 'package:domain/entity/response/s_g_labour_request_table_entity.dart';
import 'package:domain/entity/response/s_g_labour_request_worl_flow_entity.dart';
import 'package:domain/entity/response/s_g_labour_review_option_entity.dart';
import 'package:domain/entity/response/s_g_labour_review_table_entity.dart';
import 'package:domain/entity/response/sign_in_sign_out_entity.dart';
import 'package:domain/entity/response/staff_detail_entity.dart';
import 'package:domain/entity/response/staff_detail_s_g_entity.dart';
import 'package:domain/entity/response/staff_job_history_s_g_entity.dart';
import 'package:domain/entity/response/staff_labour_history_entity.dart';
import 'package:domain/entity/response/staff_remark_history_entity.dart';
import 'package:domain/entity/response/staff_report_v_n_entity.dart';
import 'package:domain/entity/response/staff_request_report_entity.dart';
import 'package:domain/entity/response/staff_review_history_s_g_entity.dart';
import 'package:domain/entity/response/switch_project_entity.dart';
import 'package:domain/entity/response/t_h_applied_edit_entity.dart';
import 'package:domain/entity/response/t_h_applied_employee_entity.dart';
import 'package:domain/entity/response/t_h_applied_index_entity.dart';
import 'package:domain/entity/response/t_h_applied_table_entity.dart';
import 'package:domain/entity/response/t_h_employee_detail_entity.dart';
import 'package:domain/entity/response/t_h_employee_remarks_entity.dart';
import 'package:domain/entity/response/t_h_o_a_attachment_entity.dart';
import 'package:domain/entity/response/t_h_o_a_labour_detail_entity.dart';
import 'package:domain/entity/response/t_h_o_a_labour_review_table_entity.dart';
import 'package:domain/entity/response/t_h_o_a_labour_table_entity.dart';
import 'package:domain/entity/response/t_h_pre_selected_option_entity.dart';
import 'package:domain/entity/response/t_h_pre_selected_staff_table_entity.dart';
import 'package:domain/entity/response/t_h_pre_selected_table_entity.dart';
import 'package:domain/entity/response/t_h_upload_file_entity.dart';
import 'package:domain/entity/response/u_k_attendance_entity.dart';
import 'package:domain/entity/response/u_k_report_attendance_entity.dart';
import 'package:domain/entity/response/u_k_report_labour_entity.dart';
import 'package:domain/entity/response/u_k_report_working_hours_entity.dart';
import 'package:domain/entity/response/u_k_security_attendance_entity.dart';
import 'package:domain/entity/response/u_k_security_attendance_option_entity.dart';
import 'package:domain/entity/response/u_k_template_detail_entity.dart';
import 'package:domain/entity/response/u_k_template_entity.dart';
import 'package:domain/entity/server_time.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 (<AddEditReviseViewSGEntity>[] is M) {
      return data.map<AddEditReviseViewSGEntity>((Map<String, dynamic> e) => AddEditReviseViewSGEntity.fromJson(e)).toList() as M;
    }
    if (<AgencyDetailEntity>[] is M) {
      return data.map<AgencyDetailEntity>((Map<String, dynamic> e) => AgencyDetailEntity.fromJson(e)).toList() as M;
    }
    if (<AgencyDetailPivot>[] is M) {
      return data.map<AgencyDetailPivot>((Map<String, dynamic> e) => AgencyDetailPivot.fromJson(e)).toList() as M;
    }
    if (<AgencyOptionEntity>[] is M) {
      return data.map<AgencyOptionEntity>((Map<String, dynamic> e) => AgencyOptionEntity.fromJson(e)).toList() as M;
    }
    if (<AgencyTableEntity>[] is M) {
      return data.map<AgencyTableEntity>((Map<String, dynamic> e) => AgencyTableEntity.fromJson(e)).toList() as M;
    }
    if (<AgencyTableRows>[] is M) {
      return data.map<AgencyTableRows>((Map<String, dynamic> e) => AgencyTableRows.fromJson(e)).toList() as M;
    }
    if (<AttendanceEntity>[] is M) {
      return data.map<AttendanceEntity>((Map<String, dynamic> e) => AttendanceEntity.fromJson(e)).toList() as M;
    }
    if (<AttendanceList>[] is M) {
      return data.map<AttendanceList>((Map<String, dynamic> e) => AttendanceList.fromJson(e)).toList() as M;
    }
    if (<AttendanceReviewEntity>[] is M) {
      return data.map<AttendanceReviewEntity>((Map<String, dynamic> e) => AttendanceReviewEntity.fromJson(e)).toList() as M;
    }
    if (<AttendanceReviewRows>[] is M) {
      return data.map<AttendanceReviewRows>((Map<String, dynamic> e) => AttendanceReviewRows.fromJson(e)).toList() as M;
    }
    if (<CheckSuccessEntity>[] is M) {
      return data.map<CheckSuccessEntity>((Map<String, dynamic> e) => CheckSuccessEntity.fromJson(e)).toList() as M;
    }
    if (<ContractDetailEntity>[] is M) {
      return data.map<ContractDetailEntity>((Map<String, dynamic> e) => ContractDetailEntity.fromJson(e)).toList() as M;
    }
    if (<ContractDetailRow>[] is M) {
      return data.map<ContractDetailRow>((Map<String, dynamic> e) => ContractDetailRow.fromJson(e)).toList() as M;
    }
    if (<ContractOptionEntity>[] is M) {
      return data.map<ContractOptionEntity>((Map<String, dynamic> e) => ContractOptionEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionAddOptionEntity>[] is M) {
      return data.map<ContractPositionAddOptionEntity>((Map<String, dynamic> e) => ContractPositionAddOptionEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionOptionEntity>[] is M) {
      return data.map<ContractPositionOptionEntity>((Map<String, dynamic> e) => ContractPositionOptionEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionRateDetailEntity>[] is M) {
      return data.map<ContractPositionRateDetailEntity>((Map<String, dynamic> e) => ContractPositionRateDetailEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionRateSpecificOptionEntity>[] is M) {
      return data.map<ContractPositionRateSpecificOptionEntity>((Map<String, dynamic> e) => ContractPositionRateSpecificOptionEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionRateTableEntity>[] is M) {
      return data.map<ContractPositionRateTableEntity>((Map<String, dynamic> e) => ContractPositionRateTableEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionRateTableRows>[] is M) {
      return data.map<ContractPositionRateTableRows>((Map<String, dynamic> e) => ContractPositionRateTableRows.fromJson(e)).toList() as M;
    }
    if (<ContractPositionTableEntity>[] is M) {
      return data.map<ContractPositionTableEntity>((Map<String, dynamic> e) => ContractPositionTableEntity.fromJson(e)).toList() as M;
    }
    if (<ContractPositionTableRows>[] is M) {
      return data.map<ContractPositionTableRows>((Map<String, dynamic> e) => ContractPositionTableRows.fromJson(e)).toList() as M;
    }
    if (<ContractTableEntity>[] is M) {
      return data.map<ContractTableEntity>((Map<String, dynamic> e) => ContractTableEntity.fromJson(e)).toList() as M;
    }
    if (<ContractTableRows>[] is M) {
      return data.map<ContractTableRows>((Map<String, dynamic> e) => ContractTableRows.fromJson(e)).toList() as M;
    }
    if (<DeviceListEntity>[] is M) {
      return data.map<DeviceListEntity>((Map<String, dynamic> e) => DeviceListEntity.fromJson(e)).toList() as M;
    }
    if (<DeviceListRows>[] is M) {
      return data.map<DeviceListRows>((Map<String, dynamic> e) => DeviceListRows.fromJson(e)).toList() as M;
    }
    if (<FianceReportEntity>[] is M) {
      return data.map<FianceReportEntity>((Map<String, dynamic> e) => FianceReportEntity.fromJson(e)).toList() as M;
    }
    if (<FianceReportRateList>[] is M) {
      return data.map<FianceReportRateList>((Map<String, dynamic> e) => FianceReportRateList.fromJson(e)).toList() as M;
    }
    if (<HotelInfoEntity>[] is M) {
      return data.map<HotelInfoEntity>((Map<String, dynamic> e) => HotelInfoEntity.fromJson(e)).toList() as M;
    }
    if (<HotelInfoMenus>[] is M) {
      return data.map<HotelInfoMenus>((Map<String, dynamic> e) => HotelInfoMenus.fromJson(e)).toList() as M;
    }
    if (<HotelInfoMenusChildren>[] is M) {
      return data.map<HotelInfoMenusChildren>((Map<String, dynamic> e) => HotelInfoMenusChildren.fromJson(e)).toList() as M;
    }
    if (<IdNameEntity>[] is M) {
      return data.map<IdNameEntity>((Map<String, dynamic> e) => IdNameEntity.fromJson(e)).toList() as M;
    }
    if (<IndexOptionEntity>[] is M) {
      return data.map<IndexOptionEntity>((Map<String, dynamic> e) => IndexOptionEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedEditIndexSGEntity>[] is M) {
      return data.map<JobAppliedEditIndexSGEntity>((Map<String, dynamic> e) => JobAppliedEditIndexSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedEditIndexSGStatusList>[] is M) {
      return data.map<JobAppliedEditIndexSGStatusList>((Map<String, dynamic> e) => JobAppliedEditIndexSGStatusList.fromJson(e)).toList() as M;
    }
    if (<JobAppliedIndexSGEntity>[] is M) {
      return data.map<JobAppliedIndexSGEntity>((Map<String, dynamic> e) => JobAppliedIndexSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedIndexSGStatusList>[] is M) {
      return data.map<JobAppliedIndexSGStatusList>((Map<String, dynamic> e) => JobAppliedIndexSGStatusList.fromJson(e)).toList() as M;
    }
    if (<JobAppliedListSGEntity>[] is M) {
      return data.map<JobAppliedListSGEntity>((Map<String, dynamic> e) => JobAppliedListSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedListSGRows>[] is M) {
      return data.map<JobAppliedListSGRows>((Map<String, dynamic> e) => JobAppliedListSGRows.fromJson(e)).toList() as M;
    }
    if (<JobAppliedListSGRowsCheck>[] is M) {
      return data.map<JobAppliedListSGRowsCheck>((Map<String, dynamic> e) => JobAppliedListSGRowsCheck.fromJson(e)).toList() as M;
    }
    if (<JobAppliedListSGRowsStatusList>[] is M) {
      return data.map<JobAppliedListSGRowsStatusList>((Map<String, dynamic> e) => JobAppliedListSGRowsStatusList.fromJson(e)).toList() as M;
    }
    if (<JobAppliedRemarkViewSGEntity>[] is M) {
      return data.map<JobAppliedRemarkViewSGEntity>((Map<String, dynamic> e) => JobAppliedRemarkViewSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedStaffSGEntity>[] is M) {
      return data.map<JobAppliedStaffSGEntity>((Map<String, dynamic> e) => JobAppliedStaffSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobAppliedStaffSGRows>[] is M) {
      return data.map<JobAppliedStaffSGRows>((Map<String, dynamic> e) => JobAppliedStaffSGRows.fromJson(e)).toList() as M;
    }
    if (<JobListAddStaffEntity>[] is M) {
      return data.map<JobListAddStaffEntity>((Map<String, dynamic> e) => JobListAddStaffEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAddStaffResultList>[] is M) {
      return data.map<JobListAddStaffResultList>((Map<String, dynamic> e) => JobListAddStaffResultList.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedEditEntity>[] is M) {
      return data.map<JobListAppliedEditEntity>((Map<String, dynamic> e) => JobListAppliedEditEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedEditReasonList>[] is M) {
      return data.map<JobListAppliedEditReasonList>((Map<String, dynamic> e) => JobListAppliedEditReasonList.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedInfoEntity>[] is M) {
      return data.map<JobListAppliedInfoEntity>((Map<String, dynamic> e) => JobListAppliedInfoEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListEntity>[] is M) {
      return data.map<JobListAppliedStaffListEntity>((Map<String, dynamic> e) => JobListAppliedStaffListEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListRows>[] is M) {
      return data.map<JobListAppliedStaffListRows>((Map<String, dynamic> e) => JobListAppliedStaffListRows.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListRowsSecurityIn>[] is M) {
      return data.map<JobListAppliedStaffListRowsSecurityIn>((Map<String, dynamic> e) => JobListAppliedStaffListRowsSecurityIn.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListRowsSecurityOut>[] is M) {
      return data.map<JobListAppliedStaffListRowsSecurityOut>((Map<String, dynamic> e) => JobListAppliedStaffListRowsSecurityOut.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListRowsWorkIn>[] is M) {
      return data.map<JobListAppliedStaffListRowsWorkIn>((Map<String, dynamic> e) => JobListAppliedStaffListRowsWorkIn.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffListRowsWorkOut>[] is M) {
      return data.map<JobListAppliedStaffListRowsWorkOut>((Map<String, dynamic> e) => JobListAppliedStaffListRowsWorkOut.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffSearchEntity>[] is M) {
      return data.map<JobListAppliedStaffSearchEntity>((Map<String, dynamic> e) => JobListAppliedStaffSearchEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedStaffSearchRows>[] is M) {
      return data.map<JobListAppliedStaffSearchRows>((Map<String, dynamic> e) => JobListAppliedStaffSearchRows.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedWorkFlowEntity>[] is M) {
      return data.map<JobListAppliedWorkFlowEntity>((Map<String, dynamic> e) => JobListAppliedWorkFlowEntity.fromJson(e)).toList() as M;
    }
    if (<JobListAppliedWorkFlowRecords>[] is M) {
      return data.map<JobListAppliedWorkFlowRecords>((Map<String, dynamic> e) => JobListAppliedWorkFlowRecords.fromJson(e)).toList() as M;
    }
    if (<JobListDetailEntity>[] is M) {
      return data.map<JobListDetailEntity>((Map<String, dynamic> e) => JobListDetailEntity.fromJson(e)).toList() as M;
    }
    if (<JobListDetailDepartmentList>[] is M) {
      return data.map<JobListDetailDepartmentList>((Map<String, dynamic> e) => JobListDetailDepartmentList.fromJson(e)).toList() as M;
    }
    if (<JobListERDetailEntity>[] is M) {
      return data.map<JobListERDetailEntity>((Map<String, dynamic> e) => JobListERDetailEntity.fromJson(e)).toList() as M;
    }
    if (<JobListERDetailJob>[] is M) {
      return data.map<JobListERDetailJob>((Map<String, dynamic> e) => JobListERDetailJob.fromJson(e)).toList() as M;
    }
    if (<JobListEROptionEntity>[] is M) {
      return data.map<JobListEROptionEntity>((Map<String, dynamic> e) => JobListEROptionEntity.fromJson(e)).toList() as M;
    }
    if (<JobListEROptionFilter>[] is M) {
      return data.map<JobListEROptionFilter>((Map<String, dynamic> e) => JobListEROptionFilter.fromJson(e)).toList() as M;
    }
    if (<JobListEditIndexSGEntity>[] is M) {
      return data.map<JobListEditIndexSGEntity>((Map<String, dynamic> e) => JobListEditIndexSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobListEditIndexOption>[] is M) {
      return data.map<JobListEditIndexOption>((Map<String, dynamic> e) => JobListEditIndexOption.fromJson(e)).toList() as M;
    }
    if (<JobListEntity>[] is M) {
      return data.map<JobListEntity>((Map<String, dynamic> e) => JobListEntity.fromJson(e)).toList() as M;
    }
    if (<JobListRows>[] is M) {
      return data.map<JobListRows>((Map<String, dynamic> e) => JobListRows.fromJson(e)).toList() as M;
    }
    if (<JobListIndexEntity>[] is M) {
      return data.map<JobListIndexEntity>((Map<String, dynamic> e) => JobListIndexEntity.fromJson(e)).toList() as M;
    }
    if (<JobListIndexDepartmentList>[] is M) {
      return data.map<JobListIndexDepartmentList>((Map<String, dynamic> e) => JobListIndexDepartmentList.fromJson(e)).toList() as M;
    }
    if (<JobListIndexStatusList>[] is M) {
      return data.map<JobListIndexStatusList>((Map<String, dynamic> e) => JobListIndexStatusList.fromJson(e)).toList() as M;
    }
    if (<JobListIndexSGEntity>[] is M) {
      return data.map<JobListIndexSGEntity>((Map<String, dynamic> e) => JobListIndexSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobListIndexSGOption>[] is M) {
      return data.map<JobListIndexSGOption>((Map<String, dynamic> e) => JobListIndexSGOption.fromJson(e)).toList() as M;
    }
    if (<JobListRemarkViewEntity>[] is M) {
      return data.map<JobListRemarkViewEntity>((Map<String, dynamic> e) => JobListRemarkViewEntity.fromJson(e)).toList() as M;
    }
    if (<JobListSGEntity>[] is M) {
      return data.map<JobListSGEntity>((Map<String, dynamic> e) => JobListSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobListSGRows>[] is M) {
      return data.map<JobListSGRows>((Map<String, dynamic> e) => JobListSGRows.fromJson(e)).toList() as M;
    }
    if (<JobTemplateEditIndexEntity>[] is M) {
      return data.map<JobTemplateEditIndexEntity>((Map<String, dynamic> e) => JobTemplateEditIndexEntity.fromJson(e)).toList() as M;
    }
    if (<JobTemplateEditIndexAgeList>[] is M) {
      return data.map<JobTemplateEditIndexAgeList>((Map<String, dynamic> e) => JobTemplateEditIndexAgeList.fromJson(e)).toList() as M;
    }
    if (<JobTemplateEditIndexSexList>[] is M) {
      return data.map<JobTemplateEditIndexSexList>((Map<String, dynamic> e) => JobTemplateEditIndexSexList.fromJson(e)).toList() as M;
    }
    if (<JobTemplateEditIndexLanguageList>[] is M) {
      return data.map<JobTemplateEditIndexLanguageList>((Map<String, dynamic> e) => JobTemplateEditIndexLanguageList.fromJson(e)).toList() as M;
    }
    if (<JobTemplateSGEntity>[] is M) {
      return data.map<JobTemplateSGEntity>((Map<String, dynamic> e) => JobTemplateSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobTemplateSGRows>[] is M) {
      return data.map<JobTemplateSGRows>((Map<String, dynamic> e) => JobTemplateSGRows.fromJson(e)).toList() as M;
    }
    if (<JobTitleEditIndexEntity>[] is M) {
      return data.map<JobTitleEditIndexEntity>((Map<String, dynamic> e) => JobTitleEditIndexEntity.fromJson(e)).toList() as M;
    }
    if (<JobTitleEditIndexTemplate>[] is M) {
      return data.map<JobTitleEditIndexTemplate>((Map<String, dynamic> e) => JobTitleEditIndexTemplate.fromJson(e)).toList() as M;
    }
    if (<JobTitleSGEntity>[] is M) {
      return data.map<JobTitleSGEntity>((Map<String, dynamic> e) => JobTitleSGEntity.fromJson(e)).toList() as M;
    }
    if (<JobTitleSGRows>[] is M) {
      return data.map<JobTitleSGRows>((Map<String, dynamic> e) => JobTitleSGRows.fromJson(e)).toList() as M;
    }
    if (<LabourListEREntity>[] is M) {
      return data.map<LabourListEREntity>((Map<String, dynamic> e) => LabourListEREntity.fromJson(e)).toList() as M;
    }
    if (<LabourListERRows>[] is M) {
      return data.map<LabourListERRows>((Map<String, dynamic> e) => LabourListERRows.fromJson(e)).toList() as M;
    }
    if (<LabourReportEntity>[] is M) {
      return data.map<LabourReportEntity>((Map<String, dynamic> e) => LabourReportEntity.fromJson(e)).toList() as M;
    }
    if (<LabourReportRows>[] is M) {
      return data.map<LabourReportRows>((Map<String, dynamic> e) => LabourReportRows.fromJson(e)).toList() as M;
    }
    if (<LabourReportTotal>[] is M) {
      return data.map<LabourReportTotal>((Map<String, dynamic> e) => LabourReportTotal.fromJson(e)).toList() as M;
    }
    if (<LabourReportVNEntity>[] is M) {
      return data.map<LabourReportVNEntity>((Map<String, dynamic> e) => LabourReportVNEntity.fromJson(e)).toList() as M;
    }
    if (<LabourReportVNRows>[] is M) {
      return data.map<LabourReportVNRows>((Map<String, dynamic> e) => LabourReportVNRows.fromJson(e)).toList() as M;
    }
    if (<LabourReportVNTotal>[] is M) {
      return data.map<LabourReportVNTotal>((Map<String, dynamic> e) => LabourReportVNTotal.fromJson(e)).toList() as M;
    }
    if (<LabourRequestEREntity>[] is M) {
      return data.map<LabourRequestEREntity>((Map<String, dynamic> e) => LabourRequestEREntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestERCountList>[] is M) {
      return data.map<LabourRequestERCountList>((Map<String, dynamic> e) => LabourRequestERCountList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestERSourceList>[] is M) {
      return data.map<LabourRequestERSourceList>((Map<String, dynamic> e) => LabourRequestERSourceList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestERSourceListRequestList>[] is M) {
      return data.map<LabourRequestERSourceListRequestList>((Map<String, dynamic> e) => LabourRequestERSourceListRequestList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestEROptionEntity>[] is M) {
      return data.map<LabourRequestEROptionEntity>((Map<String, dynamic> e) => LabourRequestEROptionEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestEditIndexEntity>[] is M) {
      return data.map<LabourRequestEditIndexEntity>((Map<String, dynamic> e) => LabourRequestEditIndexEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestEditIndexTemplateList>[] is M) {
      return data.map<LabourRequestEditIndexTemplateList>((Map<String, dynamic> e) => LabourRequestEditIndexTemplateList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestEditIndexDepartmentList>[] is M) {
      return data.map<LabourRequestEditIndexDepartmentList>((Map<String, dynamic> e) => LabourRequestEditIndexDepartmentList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestIndexEntity>[] is M) {
      return data.map<LabourRequestIndexEntity>((Map<String, dynamic> e) => LabourRequestIndexEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestIndexDepartmentList>[] is M) {
      return data.map<LabourRequestIndexDepartmentList>((Map<String, dynamic> e) => LabourRequestIndexDepartmentList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestIndexStatusList>[] is M) {
      return data.map<LabourRequestIndexStatusList>((Map<String, dynamic> e) => LabourRequestIndexStatusList.fromJson(e)).toList() as M;
    }
    if (<LabourRequestListEntity>[] is M) {
      return data.map<LabourRequestListEntity>((Map<String, dynamic> e) => LabourRequestListEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestListRows>[] is M) {
      return data.map<LabourRequestListRows>((Map<String, dynamic> e) => LabourRequestListRows.fromJson(e)).toList() as M;
    }
    if (<LabourRequestWorkFlowEntity>[] is M) {
      return data.map<LabourRequestWorkFlowEntity>((Map<String, dynamic> e) => LabourRequestWorkFlowEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestWorkFlowRecords>[] is M) {
      return data.map<LabourRequestWorkFlowRecords>((Map<String, dynamic> e) => LabourRequestWorkFlowRecords.fromJson(e)).toList() as M;
    }
    if (<LabourReviewListEntity>[] is M) {
      return data.map<LabourReviewListEntity>((Map<String, dynamic> e) => LabourReviewListEntity.fromJson(e)).toList() as M;
    }
    if (<LabourReviewListRows>[] is M) {
      return data.map<LabourReviewListRows>((Map<String, dynamic> e) => LabourReviewListRows.fromJson(e)).toList() as M;
    }
    if (<LabourReviewStatusEntity>[] is M) {
      return data.map<LabourReviewStatusEntity>((Map<String, dynamic> e) => LabourReviewStatusEntity.fromJson(e)).toList() as M;
    }
    if (<LabourReviewStatusRecords>[] is M) {
      return data.map<LabourReviewStatusRecords>((Map<String, dynamic> e) => LabourReviewStatusRecords.fromJson(e)).toList() as M;
    }
    if (<PositionTableEntity>[] is M) {
      return data.map<PositionTableEntity>((Map<String, dynamic> e) => PositionTableEntity.fromJson(e)).toList() as M;
    }
    if (<PositionTableRows>[] is M) {
      return data.map<PositionTableRows>((Map<String, dynamic> e) => PositionTableRows.fromJson(e)).toList() as M;
    }
    if (<ReviseIndexSGEntity>[] is M) {
      return data.map<ReviseIndexSGEntity>((Map<String, dynamic> e) => ReviseIndexSGEntity.fromJson(e)).toList() as M;
    }
    if (<ReviseIndexSGStatusList>[] is M) {
      return data.map<ReviseIndexSGStatusList>((Map<String, dynamic> e) => ReviseIndexSGStatusList.fromJson(e)).toList() as M;
    }
    if (<ReviseListSGEntity>[] is M) {
      return data.map<ReviseListSGEntity>((Map<String, dynamic> e) => ReviseListSGEntity.fromJson(e)).toList() as M;
    }
    if (<ReviseListSGRows>[] is M) {
      return data.map<ReviseListSGRows>((Map<String, dynamic> e) => ReviseListSGRows.fromJson(e)).toList() as M;
    }
    if (<ReviseLogSGEntity>[] is M) {
      return data.map<ReviseLogSGEntity>((Map<String, dynamic> e) => ReviseLogSGEntity.fromJson(e)).toList() as M;
    }
    if (<ReviseLogSGRecords>[] is M) {
      return data.map<ReviseLogSGRecords>((Map<String, dynamic> e) => ReviseLogSGRecords.fromJson(e)).toList() as M;
    }
    if (<ReviseLogSGRecordsContent>[] is M) {
      return data.map<ReviseLogSGRecordsContent>((Map<String, dynamic> e) => ReviseLogSGRecordsContent.fromJson(e)).toList() as M;
    }
    if (<ReviseLogSGRecordsOption>[] is M) {
      return data.map<ReviseLogSGRecordsOption>((Map<String, dynamic> e) => ReviseLogSGRecordsOption.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewOptionEntity>[] is M) {
      return data.map<SGAttendanceReviewOptionEntity>((Map<String, dynamic> e) => SGAttendanceReviewOptionEntity.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewTableEntity>[] is M) {
      return data.map<SGAttendanceReviewTableEntity>((Map<String, dynamic> e) => SGAttendanceReviewTableEntity.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewTableRows>[] is M) {
      return data.map<SGAttendanceReviewTableRows>((Map<String, dynamic> e) => SGAttendanceReviewTableRows.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewTableRowsCheck>[] is M) {
      return data.map<SGAttendanceReviewTableRowsCheck>((Map<String, dynamic> e) => SGAttendanceReviewTableRowsCheck.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewWorkflowEntity>[] is M) {
      return data.map<SGAttendanceReviewWorkflowEntity>((Map<String, dynamic> e) => SGAttendanceReviewWorkflowEntity.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewWorkflowRow>[] is M) {
      return data.map<SGAttendanceReviewWorkflowRow>((Map<String, dynamic> e) => SGAttendanceReviewWorkflowRow.fromJson(e)).toList() as M;
    }
    if (<SGAttendanceReviewWorkflowRecords>[] is M) {
      return data.map<SGAttendanceReviewWorkflowRecords>((Map<String, dynamic> e) => SGAttendanceReviewWorkflowRecords.fromJson(e)).toList() as M;
    }
    if (<SGDashboardEntity>[] is M) {
      return data.map<SGDashboardEntity>((Map<String, dynamic> e) => SGDashboardEntity.fromJson(e)).toList() as M;
    }
    if (<SGDashboardAgencyList>[] is M) {
      return data.map<SGDashboardAgencyList>((Map<String, dynamic> e) => SGDashboardAgencyList.fromJson(e)).toList() as M;
    }
    if (<SGDashboardAgencyListDays>[] is M) {
      return data.map<SGDashboardAgencyListDays>((Map<String, dynamic> e) => SGDashboardAgencyListDays.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestAddOptionEntity>[] is M) {
      return data.map<SGLabourRequestAddOptionEntity>((Map<String, dynamic> e) => SGLabourRequestAddOptionEntity.fromJson(e)).toList() as M;
    }
    if (<LabourRequestAgencyEntity>[] is M) {
      return data.map<LabourRequestAgencyEntity>((Map<String, dynamic> e) => LabourRequestAgencyEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestDetailEntity>[] is M) {
      return data.map<SGLabourRequestDetailEntity>((Map<String, dynamic> e) => SGLabourRequestDetailEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestDetailLabReq>[] is M) {
      return data.map<SGLabourRequestDetailLabReq>((Map<String, dynamic> e) => SGLabourRequestDetailLabReq.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestOptionEntity>[] is M) {
      return data.map<SGLabourRequestOptionEntity>((Map<String, dynamic> e) => SGLabourRequestOptionEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestTableEntity>[] is M) {
      return data.map<SGLabourRequestTableEntity>((Map<String, dynamic> e) => SGLabourRequestTableEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestTableRows>[] is M) {
      return data.map<SGLabourRequestTableRows>((Map<String, dynamic> e) => SGLabourRequestTableRows.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestWorlFlowEntity>[] is M) {
      return data.map<SGLabourRequestWorlFlowEntity>((Map<String, dynamic> e) => SGLabourRequestWorlFlowEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestWorlFlowRow>[] is M) {
      return data.map<SGLabourRequestWorlFlowRow>((Map<String, dynamic> e) => SGLabourRequestWorlFlowRow.fromJson(e)).toList() as M;
    }
    if (<SGLabourRequestWorlFlowRecords>[] is M) {
      return data.map<SGLabourRequestWorlFlowRecords>((Map<String, dynamic> e) => SGLabourRequestWorlFlowRecords.fromJson(e)).toList() as M;
    }
    if (<SGLabourReviewOptionEntity>[] is M) {
      return data.map<SGLabourReviewOptionEntity>((Map<String, dynamic> e) => SGLabourReviewOptionEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourReviewTableEntity>[] is M) {
      return data.map<SGLabourReviewTableEntity>((Map<String, dynamic> e) => SGLabourReviewTableEntity.fromJson(e)).toList() as M;
    }
    if (<SGLabourReviewTableRows>[] is M) {
      return data.map<SGLabourReviewTableRows>((Map<String, dynamic> e) => SGLabourReviewTableRows.fromJson(e)).toList() as M;
    }
    if (<SignInSignOutEntity>[] is M) {
      return data.map<SignInSignOutEntity>((Map<String, dynamic> e) => SignInSignOutEntity.fromJson(e)).toList() as M;
    }
    if (<SignInSignOutRows>[] is M) {
      return data.map<SignInSignOutRows>((Map<String, dynamic> e) => SignInSignOutRows.fromJson(e)).toList() as M;
    }
    if (<StaffDetailEntity>[] is M) {
      return data.map<StaffDetailEntity>((Map<String, dynamic> e) => StaffDetailEntity.fromJson(e)).toList() as M;
    }
    if (<StaffDetailSGEntity>[] is M) {
      return data.map<StaffDetailSGEntity>((Map<String, dynamic> e) => StaffDetailSGEntity.fromJson(e)).toList() as M;
    }
    if (<StaffDetailSGReviews>[] is M) {
      return data.map<StaffDetailSGReviews>((Map<String, dynamic> e) => StaffDetailSGReviews.fromJson(e)).toList() as M;
    }
    if (<StaffDetailSGReviewsReviews>[] is M) {
      return data.map<StaffDetailSGReviewsReviews>((Map<String, dynamic> e) => StaffDetailSGReviewsReviews.fromJson(e)).toList() as M;
    }
    if (<StaffJobHistorySGEntity>[] is M) {
      return data.map<StaffJobHistorySGEntity>((Map<String, dynamic> e) => StaffJobHistorySGEntity.fromJson(e)).toList() as M;
    }
    if (<StaffJobHistorySGRows>[] is M) {
      return data.map<StaffJobHistorySGRows>((Map<String, dynamic> e) => StaffJobHistorySGRows.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryEntity>[] is M) {
      return data.map<StaffLabourHistoryEntity>((Map<String, dynamic> e) => StaffLabourHistoryEntity.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryRows>[] is M) {
      return data.map<StaffLabourHistoryRows>((Map<String, dynamic> e) => StaffLabourHistoryRows.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryRowsSecurityIn>[] is M) {
      return data.map<StaffLabourHistoryRowsSecurityIn>((Map<String, dynamic> e) => StaffLabourHistoryRowsSecurityIn.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryRowsSecurityOut>[] is M) {
      return data.map<StaffLabourHistoryRowsSecurityOut>((Map<String, dynamic> e) => StaffLabourHistoryRowsSecurityOut.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryRowsWorkIn>[] is M) {
      return data.map<StaffLabourHistoryRowsWorkIn>((Map<String, dynamic> e) => StaffLabourHistoryRowsWorkIn.fromJson(e)).toList() as M;
    }
    if (<StaffLabourHistoryRowsWorkOut>[] is M) {
      return data.map<StaffLabourHistoryRowsWorkOut>((Map<String, dynamic> e) => StaffLabourHistoryRowsWorkOut.fromJson(e)).toList() as M;
    }
    if (<StaffRemarkHistoryEntity>[] is M) {
      return data.map<StaffRemarkHistoryEntity>((Map<String, dynamic> e) => StaffRemarkHistoryEntity.fromJson(e)).toList() as M;
    }
    if (<StaffRemarkHistoryRows>[] is M) {
      return data.map<StaffRemarkHistoryRows>((Map<String, dynamic> e) => StaffRemarkHistoryRows.fromJson(e)).toList() as M;
    }
    if (<StaffReportVNEntity>[] is M) {
      return data.map<StaffReportVNEntity>((Map<String, dynamic> e) => StaffReportVNEntity.fromJson(e)).toList() as M;
    }
    if (<StaffRequestReportEntity>[] is M) {
      return data.map<StaffRequestReportEntity>((Map<String, dynamic> e) => StaffRequestReportEntity.fromJson(e)).toList() as M;
    }
    if (<StaffReviewHistorySGEntity>[] is M) {
      return data.map<StaffReviewHistorySGEntity>((Map<String, dynamic> e) => StaffReviewHistorySGEntity.fromJson(e)).toList() as M;
    }
    if (<StaffReviewHistorySGReviews>[] is M) {
      return data.map<StaffReviewHistorySGReviews>((Map<String, dynamic> e) => StaffReviewHistorySGReviews.fromJson(e)).toList() as M;
    }
    if (<SwitchProjectEntity>[] is M) {
      return data.map<SwitchProjectEntity>((Map<String, dynamic> e) => SwitchProjectEntity.fromJson(e)).toList() as M;
    }
    if (<SwitchProjectUserList>[] is M) {
      return data.map<SwitchProjectUserList>((Map<String, dynamic> e) => SwitchProjectUserList.fromJson(e)).toList() as M;
    }
    if (<THAppliedEditEntity>[] is M) {
      return data.map<THAppliedEditEntity>((Map<String, dynamic> e) => THAppliedEditEntity.fromJson(e)).toList() as M;
    }
    if (<THAppliedEditApplied>[] is M) {
      return data.map<THAppliedEditApplied>((Map<String, dynamic> e) => THAppliedEditApplied.fromJson(e)).toList() as M;
    }
    if (<THAppliedEmployeeEntity>[] is M) {
      return data.map<THAppliedEmployeeEntity>((Map<String, dynamic> e) => THAppliedEmployeeEntity.fromJson(e)).toList() as M;
    }
    if (<THAppliedEmployeeRows>[] is M) {
      return data.map<THAppliedEmployeeRows>((Map<String, dynamic> e) => THAppliedEmployeeRows.fromJson(e)).toList() as M;
    }
    if (<THAppliedIndexEntity>[] is M) {
      return data.map<THAppliedIndexEntity>((Map<String, dynamic> e) => THAppliedIndexEntity.fromJson(e)).toList() as M;
    }
    if (<THAppliedIndexJob>[] is M) {
      return data.map<THAppliedIndexJob>((Map<String, dynamic> e) => THAppliedIndexJob.fromJson(e)).toList() as M;
    }
    if (<THAppliedTableEntity>[] is M) {
      return data.map<THAppliedTableEntity>((Map<String, dynamic> e) => THAppliedTableEntity.fromJson(e)).toList() as M;
    }
    if (<THAppliedTableRows>[] is M) {
      return data.map<THAppliedTableRows>((Map<String, dynamic> e) => THAppliedTableRows.fromJson(e)).toList() as M;
    }
    if (<THAppliedTableCheckInOut>[] is M) {
      return data.map<THAppliedTableCheckInOut>((Map<String, dynamic> e) => THAppliedTableCheckInOut.fromJson(e)).toList() as M;
    }
    if (<THEmployeeDetailEntity>[] is M) {
      return data.map<THEmployeeDetailEntity>((Map<String, dynamic> e) => THEmployeeDetailEntity.fromJson(e)).toList() as M;
    }
    if (<THEmployeeDetailStaff>[] is M) {
      return data.map<THEmployeeDetailStaff>((Map<String, dynamic> e) => THEmployeeDetailStaff.fromJson(e)).toList() as M;
    }
    if (<THEmployeeDetailReviews>[] is M) {
      return data.map<THEmployeeDetailReviews>((Map<String, dynamic> e) => THEmployeeDetailReviews.fromJson(e)).toList() as M;
    }
    if (<THEmployeeRemarksEntity>[] is M) {
      return data.map<THEmployeeRemarksEntity>((Map<String, dynamic> e) => THEmployeeRemarksEntity.fromJson(e)).toList() as M;
    }
    if (<THEmployeeRemarksReviews>[] is M) {
      return data.map<THEmployeeRemarksReviews>((Map<String, dynamic> e) => THEmployeeRemarksReviews.fromJson(e)).toList() as M;
    }
    if (<THOAAttachmentEntity>[] is M) {
      return data.map<THOAAttachmentEntity>((Map<String, dynamic> e) => THOAAttachmentEntity.fromJson(e)).toList() as M;
    }
    if (<THOAAttachmentRows>[] is M) {
      return data.map<THOAAttachmentRows>((Map<String, dynamic> e) => THOAAttachmentRows.fromJson(e)).toList() as M;
    }
    if (<THOALabourDetailEntity>[] is M) {
      return data.map<THOALabourDetailEntity>((Map<String, dynamic> e) => THOALabourDetailEntity.fromJson(e)).toList() as M;
    }
    if (<THOALabourDetailLabourRequest>[] is M) {
      return data.map<THOALabourDetailLabourRequest>((Map<String, dynamic> e) => THOALabourDetailLabourRequest.fromJson(e)).toList() as M;
    }
    if (<THOALabourReviewTableEntity>[] is M) {
      return data.map<THOALabourReviewTableEntity>((Map<String, dynamic> e) => THOALabourReviewTableEntity.fromJson(e)).toList() as M;
    }
    if (<THOALabourReviewTableRows>[] is M) {
      return data.map<THOALabourReviewTableRows>((Map<String, dynamic> e) => THOALabourReviewTableRows.fromJson(e)).toList() as M;
    }
    if (<THOALabourTableEntity>[] is M) {
      return data.map<THOALabourTableEntity>((Map<String, dynamic> e) => THOALabourTableEntity.fromJson(e)).toList() as M;
    }
    if (<THOALabourTableRows>[] is M) {
      return data.map<THOALabourTableRows>((Map<String, dynamic> e) => THOALabourTableRows.fromJson(e)).toList() as M;
    }
    if (<THPreSelectedOptionEntity>[] is M) {
      return data.map<THPreSelectedOptionEntity>((Map<String, dynamic> e) => THPreSelectedOptionEntity.fromJson(e)).toList() as M;
    }
    if (<THPreSelectedStaffTableEntity>[] is M) {
      return data.map<THPreSelectedStaffTableEntity>((Map<String, dynamic> e) => THPreSelectedStaffTableEntity.fromJson(e)).toList() as M;
    }
    if (<THPreSelectedStaffTableRows>[] is M) {
      return data.map<THPreSelectedStaffTableRows>((Map<String, dynamic> e) => THPreSelectedStaffTableRows.fromJson(e)).toList() as M;
    }
    if (<THPreSelectedTableEntity>[] is M) {
      return data.map<THPreSelectedTableEntity>((Map<String, dynamic> e) => THPreSelectedTableEntity.fromJson(e)).toList() as M;
    }
    if (<THPreSelectedTableRows>[] is M) {
      return data.map<THPreSelectedTableRows>((Map<String, dynamic> e) => THPreSelectedTableRows.fromJson(e)).toList() as M;
    }
    if (<THUploadFileEntity>[] is M) {
      return data.map<THUploadFileEntity>((Map<String, dynamic> e) => THUploadFileEntity.fromJson(e)).toList() as M;
    }
    if (<UKAttendanceEntity>[] is M) {
      return data.map<UKAttendanceEntity>((Map<String, dynamic> e) => UKAttendanceEntity.fromJson(e)).toList() as M;
    }
    if (<UKAttendanceRows>[] is M) {
      return data.map<UKAttendanceRows>((Map<String, dynamic> e) => UKAttendanceRows.fromJson(e)).toList() as M;
    }
    if (<UKAttendanceInOut>[] is M) {
      return data.map<UKAttendanceInOut>((Map<String, dynamic> e) => UKAttendanceInOut.fromJson(e)).toList() as M;
    }
    if (<UKReportAttendanceEntity>[] is M) {
      return data.map<UKReportAttendanceEntity>((Map<String, dynamic> e) => UKReportAttendanceEntity.fromJson(e)).toList() as M;
    }
    if (<UKReportAttendanceRows>[] is M) {
      return data.map<UKReportAttendanceRows>((Map<String, dynamic> e) => UKReportAttendanceRows.fromJson(e)).toList() as M;
    }
    if (<UKReportLabourEntity>[] is M) {
      return data.map<UKReportLabourEntity>((Map<String, dynamic> e) => UKReportLabourEntity.fromJson(e)).toList() as M;
    }
    if (<UKReportLabourRows>[] is M) {
      return data.map<UKReportLabourRows>((Map<String, dynamic> e) => UKReportLabourRows.fromJson(e)).toList() as M;
    }
    if (<UKReportWorkingHoursEntity>[] is M) {
      return data.map<UKReportWorkingHoursEntity>((Map<String, dynamic> e) => UKReportWorkingHoursEntity.fromJson(e)).toList() as M;
    }
    if (<UKReportWorkingHoursRows>[] is M) {
      return data.map<UKReportWorkingHoursRows>((Map<String, dynamic> e) => UKReportWorkingHoursRows.fromJson(e)).toList() as M;
    }
    if (<UKSecurityAttendanceEntity>[] is M) {
      return data.map<UKSecurityAttendanceEntity>((Map<String, dynamic> e) => UKSecurityAttendanceEntity.fromJson(e)).toList() as M;
    }
    if (<UKSecurityAttendanceRows>[] is M) {
      return data.map<UKSecurityAttendanceRows>((Map<String, dynamic> e) => UKSecurityAttendanceRows.fromJson(e)).toList() as M;
    }
    if (<UKSecurityInOut>[] is M) {
      return data.map<UKSecurityInOut>((Map<String, dynamic> e) => UKSecurityInOut.fromJson(e)).toList() as M;
    }
    if (<UKSecurityAttendanceOptionEntity>[] is M) {
      return data.map<UKSecurityAttendanceOptionEntity>((Map<String, dynamic> e) => UKSecurityAttendanceOptionEntity.fromJson(e)).toList() as M;
    }
    if (<UKSecurityAttendanceOptionFilter>[] is M) {
      return data.map<UKSecurityAttendanceOptionFilter>((Map<String, dynamic> e) => UKSecurityAttendanceOptionFilter.fromJson(e)).toList() as M;
    }
    if (<UKTemplateDetailEntity>[] is M) {
      return data.map<UKTemplateDetailEntity>((Map<String, dynamic> e) => UKTemplateDetailEntity.fromJson(e)).toList() as M;
    }
    if (<UKTemplateDetailRow>[] is M) {
      return data.map<UKTemplateDetailRow>((Map<String, dynamic> e) => UKTemplateDetailRow.fromJson(e)).toList() as M;
    }
    if (<UKTemplateEntity>[] is M) {
      return data.map<UKTemplateEntity>((Map<String, dynamic> e) => UKTemplateEntity.fromJson(e)).toList() as M;
    }
    if (<UKTemplateRows>[] is M) {
      return data.map<UKTemplateRows>((Map<String, dynamic> e) => UKTemplateRows.fromJson(e)).toList() as M;
    }
    if (<ServerTime>[] is M) {
      return data.map<ServerTime>((Map<String, dynamic> e) => ServerTime.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 = {
    (AddEditReviseViewSGEntity).toString(): AddEditReviseViewSGEntity.fromJson,
    (AgencyDetailEntity).toString(): AgencyDetailEntity.fromJson,
    (AgencyDetailPivot).toString(): AgencyDetailPivot.fromJson,
    (AgencyOptionEntity).toString(): AgencyOptionEntity.fromJson,
    (AgencyTableEntity).toString(): AgencyTableEntity.fromJson,
    (AgencyTableRows).toString(): AgencyTableRows.fromJson,
    (AttendanceEntity).toString(): AttendanceEntity.fromJson,
    (AttendanceList).toString(): AttendanceList.fromJson,
    (AttendanceReviewEntity).toString(): AttendanceReviewEntity.fromJson,
    (AttendanceReviewRows).toString(): AttendanceReviewRows.fromJson,
    (CheckSuccessEntity).toString(): CheckSuccessEntity.fromJson,
    (ContractDetailEntity).toString(): ContractDetailEntity.fromJson,
    (ContractDetailRow).toString(): ContractDetailRow.fromJson,
    (ContractOptionEntity).toString(): ContractOptionEntity.fromJson,
    (ContractPositionAddOptionEntity).toString(): ContractPositionAddOptionEntity.fromJson,
    (ContractPositionOptionEntity).toString(): ContractPositionOptionEntity.fromJson,
    (ContractPositionRateDetailEntity).toString(): ContractPositionRateDetailEntity.fromJson,
    (ContractPositionRateSpecificOptionEntity).toString(): ContractPositionRateSpecificOptionEntity.fromJson,
    (ContractPositionRateTableEntity).toString(): ContractPositionRateTableEntity.fromJson,
    (ContractPositionRateTableRows).toString(): ContractPositionRateTableRows.fromJson,
    (ContractPositionTableEntity).toString(): ContractPositionTableEntity.fromJson,
    (ContractPositionTableRows).toString(): ContractPositionTableRows.fromJson,
    (ContractTableEntity).toString(): ContractTableEntity.fromJson,
    (ContractTableRows).toString(): ContractTableRows.fromJson,
    (DeviceListEntity).toString(): DeviceListEntity.fromJson,
    (DeviceListRows).toString(): DeviceListRows.fromJson,
    (FianceReportEntity).toString(): FianceReportEntity.fromJson,
    (FianceReportRateList).toString(): FianceReportRateList.fromJson,
    (HotelInfoEntity).toString(): HotelInfoEntity.fromJson,
    (HotelInfoMenus).toString(): HotelInfoMenus.fromJson,
    (HotelInfoMenusChildren).toString(): HotelInfoMenusChildren.fromJson,
    (IdNameEntity).toString(): IdNameEntity.fromJson,
    (IndexOptionEntity).toString(): IndexOptionEntity.fromJson,
    (JobAppliedEditIndexSGEntity).toString(): JobAppliedEditIndexSGEntity.fromJson,
    (JobAppliedEditIndexSGStatusList).toString(): JobAppliedEditIndexSGStatusList.fromJson,
    (JobAppliedIndexSGEntity).toString(): JobAppliedIndexSGEntity.fromJson,
    (JobAppliedIndexSGStatusList).toString(): JobAppliedIndexSGStatusList.fromJson,
    (JobAppliedListSGEntity).toString(): JobAppliedListSGEntity.fromJson,
    (JobAppliedListSGRows).toString(): JobAppliedListSGRows.fromJson,
    (JobAppliedListSGRowsCheck).toString(): JobAppliedListSGRowsCheck.fromJson,
    (JobAppliedListSGRowsStatusList).toString(): JobAppliedListSGRowsStatusList.fromJson,
    (JobAppliedRemarkViewSGEntity).toString(): JobAppliedRemarkViewSGEntity.fromJson,
    (JobAppliedStaffSGEntity).toString(): JobAppliedStaffSGEntity.fromJson,
    (JobAppliedStaffSGRows).toString(): JobAppliedStaffSGRows.fromJson,
    (JobListAddStaffEntity).toString(): JobListAddStaffEntity.fromJson,
    (JobListAddStaffResultList).toString(): JobListAddStaffResultList.fromJson,
    (JobListAppliedEditEntity).toString(): JobListAppliedEditEntity.fromJson,
    (JobListAppliedEditReasonList).toString(): JobListAppliedEditReasonList.fromJson,
    (JobListAppliedInfoEntity).toString(): JobListAppliedInfoEntity.fromJson,
    (JobListAppliedStaffListEntity).toString(): JobListAppliedStaffListEntity.fromJson,
    (JobListAppliedStaffListRows).toString(): JobListAppliedStaffListRows.fromJson,
    (JobListAppliedStaffListRowsSecurityIn).toString(): JobListAppliedStaffListRowsSecurityIn.fromJson,
    (JobListAppliedStaffListRowsSecurityOut).toString(): JobListAppliedStaffListRowsSecurityOut.fromJson,
    (JobListAppliedStaffListRowsWorkIn).toString(): JobListAppliedStaffListRowsWorkIn.fromJson,
    (JobListAppliedStaffListRowsWorkOut).toString(): JobListAppliedStaffListRowsWorkOut.fromJson,
    (JobListAppliedStaffSearchEntity).toString(): JobListAppliedStaffSearchEntity.fromJson,
    (JobListAppliedStaffSearchRows).toString(): JobListAppliedStaffSearchRows.fromJson,
    (JobListAppliedWorkFlowEntity).toString(): JobListAppliedWorkFlowEntity.fromJson,
    (JobListAppliedWorkFlowRecords).toString(): JobListAppliedWorkFlowRecords.fromJson,
    (JobListDetailEntity).toString(): JobListDetailEntity.fromJson,
    (JobListDetailDepartmentList).toString(): JobListDetailDepartmentList.fromJson,
    (JobListERDetailEntity).toString(): JobListERDetailEntity.fromJson,
    (JobListERDetailJob).toString(): JobListERDetailJob.fromJson,
    (JobListEROptionEntity).toString(): JobListEROptionEntity.fromJson,
    (JobListEROptionFilter).toString(): JobListEROptionFilter.fromJson,
    (JobListEditIndexSGEntity).toString(): JobListEditIndexSGEntity.fromJson,
    (JobListEditIndexOption).toString(): JobListEditIndexOption.fromJson,
    (JobListEntity).toString(): JobListEntity.fromJson,
    (JobListRows).toString(): JobListRows.fromJson,
    (JobListIndexEntity).toString(): JobListIndexEntity.fromJson,
    (JobListIndexDepartmentList).toString(): JobListIndexDepartmentList.fromJson,
    (JobListIndexStatusList).toString(): JobListIndexStatusList.fromJson,
    (JobListIndexSGEntity).toString(): JobListIndexSGEntity.fromJson,
    (JobListIndexSGOption).toString(): JobListIndexSGOption.fromJson,
    (JobListRemarkViewEntity).toString(): JobListRemarkViewEntity.fromJson,
    (JobListSGEntity).toString(): JobListSGEntity.fromJson,
    (JobListSGRows).toString(): JobListSGRows.fromJson,
    (JobTemplateEditIndexEntity).toString(): JobTemplateEditIndexEntity.fromJson,
    (JobTemplateEditIndexAgeList).toString(): JobTemplateEditIndexAgeList.fromJson,
    (JobTemplateEditIndexSexList).toString(): JobTemplateEditIndexSexList.fromJson,
    (JobTemplateEditIndexLanguageList).toString(): JobTemplateEditIndexLanguageList.fromJson,
    (JobTemplateSGEntity).toString(): JobTemplateSGEntity.fromJson,
    (JobTemplateSGRows).toString(): JobTemplateSGRows.fromJson,
    (JobTitleEditIndexEntity).toString(): JobTitleEditIndexEntity.fromJson,
    (JobTitleEditIndexTemplate).toString(): JobTitleEditIndexTemplate.fromJson,
    (JobTitleSGEntity).toString(): JobTitleSGEntity.fromJson,
    (JobTitleSGRows).toString(): JobTitleSGRows.fromJson,
    (LabourListEREntity).toString(): LabourListEREntity.fromJson,
    (LabourListERRows).toString(): LabourListERRows.fromJson,
    (LabourReportEntity).toString(): LabourReportEntity.fromJson,
    (LabourReportRows).toString(): LabourReportRows.fromJson,
    (LabourReportTotal).toString(): LabourReportTotal.fromJson,
    (LabourReportVNEntity).toString(): LabourReportVNEntity.fromJson,
    (LabourReportVNRows).toString(): LabourReportVNRows.fromJson,
    (LabourReportVNTotal).toString(): LabourReportVNTotal.fromJson,
    (LabourRequestEREntity).toString(): LabourRequestEREntity.fromJson,
    (LabourRequestERCountList).toString(): LabourRequestERCountList.fromJson,
    (LabourRequestERSourceList).toString(): LabourRequestERSourceList.fromJson,
    (LabourRequestERSourceListRequestList).toString(): LabourRequestERSourceListRequestList.fromJson,
    (LabourRequestEROptionEntity).toString(): LabourRequestEROptionEntity.fromJson,
    (LabourRequestEditIndexEntity).toString(): LabourRequestEditIndexEntity.fromJson,
    (LabourRequestEditIndexTemplateList).toString(): LabourRequestEditIndexTemplateList.fromJson,
    (LabourRequestEditIndexDepartmentList).toString(): LabourRequestEditIndexDepartmentList.fromJson,
    (LabourRequestIndexEntity).toString(): LabourRequestIndexEntity.fromJson,
    (LabourRequestIndexDepartmentList).toString(): LabourRequestIndexDepartmentList.fromJson,
    (LabourRequestIndexStatusList).toString(): LabourRequestIndexStatusList.fromJson,
    (LabourRequestListEntity).toString(): LabourRequestListEntity.fromJson,
    (LabourRequestListRows).toString(): LabourRequestListRows.fromJson,
    (LabourRequestWorkFlowEntity).toString(): LabourRequestWorkFlowEntity.fromJson,
    (LabourRequestWorkFlowRecords).toString(): LabourRequestWorkFlowRecords.fromJson,
    (LabourReviewListEntity).toString(): LabourReviewListEntity.fromJson,
    (LabourReviewListRows).toString(): LabourReviewListRows.fromJson,
    (LabourReviewStatusEntity).toString(): LabourReviewStatusEntity.fromJson,
    (LabourReviewStatusRecords).toString(): LabourReviewStatusRecords.fromJson,
    (PositionTableEntity).toString(): PositionTableEntity.fromJson,
    (PositionTableRows).toString(): PositionTableRows.fromJson,
    (ReviseIndexSGEntity).toString(): ReviseIndexSGEntity.fromJson,
    (ReviseIndexSGStatusList).toString(): ReviseIndexSGStatusList.fromJson,
    (ReviseListSGEntity).toString(): ReviseListSGEntity.fromJson,
    (ReviseListSGRows).toString(): ReviseListSGRows.fromJson,
    (ReviseLogSGEntity).toString(): ReviseLogSGEntity.fromJson,
    (ReviseLogSGRecords).toString(): ReviseLogSGRecords.fromJson,
    (ReviseLogSGRecordsContent).toString(): ReviseLogSGRecordsContent.fromJson,
    (ReviseLogSGRecordsOption).toString(): ReviseLogSGRecordsOption.fromJson,
    (SGAttendanceReviewOptionEntity).toString(): SGAttendanceReviewOptionEntity.fromJson,
    (SGAttendanceReviewTableEntity).toString(): SGAttendanceReviewTableEntity.fromJson,
    (SGAttendanceReviewTableRows).toString(): SGAttendanceReviewTableRows.fromJson,
    (SGAttendanceReviewTableRowsCheck).toString(): SGAttendanceReviewTableRowsCheck.fromJson,
    (SGAttendanceReviewWorkflowEntity).toString(): SGAttendanceReviewWorkflowEntity.fromJson,
    (SGAttendanceReviewWorkflowRow).toString(): SGAttendanceReviewWorkflowRow.fromJson,
    (SGAttendanceReviewWorkflowRecords).toString(): SGAttendanceReviewWorkflowRecords.fromJson,
    (SGDashboardEntity).toString(): SGDashboardEntity.fromJson,
    (SGDashboardAgencyList).toString(): SGDashboardAgencyList.fromJson,
    (SGDashboardAgencyListDays).toString(): SGDashboardAgencyListDays.fromJson,
    (SGLabourRequestAddOptionEntity).toString(): SGLabourRequestAddOptionEntity.fromJson,
    (LabourRequestAgencyEntity).toString(): LabourRequestAgencyEntity.fromJson,
    (SGLabourRequestDetailEntity).toString(): SGLabourRequestDetailEntity.fromJson,
    (SGLabourRequestDetailLabReq).toString(): SGLabourRequestDetailLabReq.fromJson,
    (SGLabourRequestOptionEntity).toString(): SGLabourRequestOptionEntity.fromJson,
    (SGLabourRequestTableEntity).toString(): SGLabourRequestTableEntity.fromJson,
    (SGLabourRequestTableRows).toString(): SGLabourRequestTableRows.fromJson,
    (SGLabourRequestWorlFlowEntity).toString(): SGLabourRequestWorlFlowEntity.fromJson,
    (SGLabourRequestWorlFlowRow).toString(): SGLabourRequestWorlFlowRow.fromJson,
    (SGLabourRequestWorlFlowRecords).toString(): SGLabourRequestWorlFlowRecords.fromJson,
    (SGLabourReviewOptionEntity).toString(): SGLabourReviewOptionEntity.fromJson,
    (SGLabourReviewTableEntity).toString(): SGLabourReviewTableEntity.fromJson,
    (SGLabourReviewTableRows).toString(): SGLabourReviewTableRows.fromJson,
    (SignInSignOutEntity).toString(): SignInSignOutEntity.fromJson,
    (SignInSignOutRows).toString(): SignInSignOutRows.fromJson,
    (StaffDetailEntity).toString(): StaffDetailEntity.fromJson,
    (StaffDetailSGEntity).toString(): StaffDetailSGEntity.fromJson,
    (StaffDetailSGReviews).toString(): StaffDetailSGReviews.fromJson,
    (StaffDetailSGReviewsReviews).toString(): StaffDetailSGReviewsReviews.fromJson,
    (StaffJobHistorySGEntity).toString(): StaffJobHistorySGEntity.fromJson,
    (StaffJobHistorySGRows).toString(): StaffJobHistorySGRows.fromJson,
    (StaffLabourHistoryEntity).toString(): StaffLabourHistoryEntity.fromJson,
    (StaffLabourHistoryRows).toString(): StaffLabourHistoryRows.fromJson,
    (StaffLabourHistoryRowsSecurityIn).toString(): StaffLabourHistoryRowsSecurityIn.fromJson,
    (StaffLabourHistoryRowsSecurityOut).toString(): StaffLabourHistoryRowsSecurityOut.fromJson,
    (StaffLabourHistoryRowsWorkIn).toString(): StaffLabourHistoryRowsWorkIn.fromJson,
    (StaffLabourHistoryRowsWorkOut).toString(): StaffLabourHistoryRowsWorkOut.fromJson,
    (StaffRemarkHistoryEntity).toString(): StaffRemarkHistoryEntity.fromJson,
    (StaffRemarkHistoryRows).toString(): StaffRemarkHistoryRows.fromJson,
    (StaffReportVNEntity).toString(): StaffReportVNEntity.fromJson,
    (StaffRequestReportEntity).toString(): StaffRequestReportEntity.fromJson,
    (StaffReviewHistorySGEntity).toString(): StaffReviewHistorySGEntity.fromJson,
    (StaffReviewHistorySGReviews).toString(): StaffReviewHistorySGReviews.fromJson,
    (SwitchProjectEntity).toString(): SwitchProjectEntity.fromJson,
    (SwitchProjectUserList).toString(): SwitchProjectUserList.fromJson,
    (THAppliedEditEntity).toString(): THAppliedEditEntity.fromJson,
    (THAppliedEditApplied).toString(): THAppliedEditApplied.fromJson,
    (THAppliedEmployeeEntity).toString(): THAppliedEmployeeEntity.fromJson,
    (THAppliedEmployeeRows).toString(): THAppliedEmployeeRows.fromJson,
    (THAppliedIndexEntity).toString(): THAppliedIndexEntity.fromJson,
    (THAppliedIndexJob).toString(): THAppliedIndexJob.fromJson,
    (THAppliedTableEntity).toString(): THAppliedTableEntity.fromJson,
    (THAppliedTableRows).toString(): THAppliedTableRows.fromJson,
    (THAppliedTableCheckInOut).toString(): THAppliedTableCheckInOut.fromJson,
    (THEmployeeDetailEntity).toString(): THEmployeeDetailEntity.fromJson,
    (THEmployeeDetailStaff).toString(): THEmployeeDetailStaff.fromJson,
    (THEmployeeDetailReviews).toString(): THEmployeeDetailReviews.fromJson,
    (THEmployeeRemarksEntity).toString(): THEmployeeRemarksEntity.fromJson,
    (THEmployeeRemarksReviews).toString(): THEmployeeRemarksReviews.fromJson,
    (THOAAttachmentEntity).toString(): THOAAttachmentEntity.fromJson,
    (THOAAttachmentRows).toString(): THOAAttachmentRows.fromJson,
    (THOALabourDetailEntity).toString(): THOALabourDetailEntity.fromJson,
    (THOALabourDetailLabourRequest).toString(): THOALabourDetailLabourRequest.fromJson,
    (THOALabourReviewTableEntity).toString(): THOALabourReviewTableEntity.fromJson,
    (THOALabourReviewTableRows).toString(): THOALabourReviewTableRows.fromJson,
    (THOALabourTableEntity).toString(): THOALabourTableEntity.fromJson,
    (THOALabourTableRows).toString(): THOALabourTableRows.fromJson,
    (THPreSelectedOptionEntity).toString(): THPreSelectedOptionEntity.fromJson,
    (THPreSelectedStaffTableEntity).toString(): THPreSelectedStaffTableEntity.fromJson,
    (THPreSelectedStaffTableRows).toString(): THPreSelectedStaffTableRows.fromJson,
    (THPreSelectedTableEntity).toString(): THPreSelectedTableEntity.fromJson,
    (THPreSelectedTableRows).toString(): THPreSelectedTableRows.fromJson,
    (THUploadFileEntity).toString(): THUploadFileEntity.fromJson,
    (UKAttendanceEntity).toString(): UKAttendanceEntity.fromJson,
    (UKAttendanceRows).toString(): UKAttendanceRows.fromJson,
    (UKAttendanceInOut).toString(): UKAttendanceInOut.fromJson,
    (UKReportAttendanceEntity).toString(): UKReportAttendanceEntity.fromJson,
    (UKReportAttendanceRows).toString(): UKReportAttendanceRows.fromJson,
    (UKReportLabourEntity).toString(): UKReportLabourEntity.fromJson,
    (UKReportLabourRows).toString(): UKReportLabourRows.fromJson,
    (UKReportWorkingHoursEntity).toString(): UKReportWorkingHoursEntity.fromJson,
    (UKReportWorkingHoursRows).toString(): UKReportWorkingHoursRows.fromJson,
    (UKSecurityAttendanceEntity).toString(): UKSecurityAttendanceEntity.fromJson,
    (UKSecurityAttendanceRows).toString(): UKSecurityAttendanceRows.fromJson,
    (UKSecurityInOut).toString(): UKSecurityInOut.fromJson,
    (UKSecurityAttendanceOptionEntity).toString(): UKSecurityAttendanceOptionEntity.fromJson,
    (UKSecurityAttendanceOptionFilter).toString(): UKSecurityAttendanceOptionFilter.fromJson,
    (UKTemplateDetailEntity).toString(): UKTemplateDetailEntity.fromJson,
    (UKTemplateDetailRow).toString(): UKTemplateDetailRow.fromJson,
    (UKTemplateEntity).toString(): UKTemplateEntity.fromJson,
    (UKTemplateRows).toString(): UKTemplateRows.fromJson,
    (ServerTime).toString(): ServerTime.fromJson,
  };

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

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