def METHOD_NAME(domain, monthspan):
    user_tuple = GIRTableGenerator.classify_users(domain, monthspan)
    max_device = GIRTableGenerator.get_max_device(domain, monthspan)
    possible_experience = get_possibly_experienced(domain, monthspan)
    recently_active = GIRTableGenerator.get_active_recent(domain, monthspan)
    gir_dict = {
        'month': monthspan.startdate,
        'domain_name': domain.name,
        'country':
            ', '.join([str(COUNTRIES.get(abbr, abbr)) for abbr in domain.deployment.countries]),
        'sector': domain.internal.area,
        'subsector': domain.internal.sub_area,
        'bu': GIRTableGenerator.get_bu(domain),
        'self_service': domain.internal.self_started,
        'test_domain': TEST_COUCH_TO_SQL_MAP.get(domain.is_test, NOT_SET),
        'start_date': domain.date_created,
        'device_id': max_device,
        'pam': AMPLIFY_COUCH_TO_SQL_MAP.get(domain.internal.amplifies_project, NOT_SET),
        'wams_current': len(user_tuple.performing & user_tuple.experienced),
        'active_users': len(user_tuple.active | user_tuple.sms),
        'using_and_performing': len(user_tuple.performing),
        'not_performing': len(user_tuple.active - user_tuple.performing),
        'inactive_experienced':
            len((user_tuple.total - user_tuple.active) & user_tuple.experienced),
        'inactive_not_experienced':
            len((user_tuple.total - user_tuple.active) - user_tuple.experienced),
        'not_experienced': len(user_tuple.performing - user_tuple.experienced),
        'not_performing_not_experienced':
            len(user_tuple.active - user_tuple.performing - user_tuple.experienced),
        'active_ever': len(possible_experience | recently_active),
        'possibly_exp': len(possible_experience),
        'ever_exp': len(user_tuple.experienced),
        'exp_and_active_ever': len(user_tuple.active & user_tuple.experienced),
        'active_in_span': len(recently_active),
        'eligible_forms': user_tuple.eligible,
        'experienced_threshold': domain.internal.experienced_threshold or DEFAULT_EXPERIENCED_THRESHOLD,
        'performance_threshold': domain.internal.performance_threshold or DEFAULT_PERFORMANCE_THRESHOLD,
    }
    return gir_dict