### Summary

I'm seeing some breakage in collections caused (very likely) by #73703:
1. `AttributeError: 'AnsibleModule' object has no attribute '_check_type_dict'` (community.general, infoblox.nios_modules);
2. `ImportError: cannot import name 'handle_aliases'` (from `ansible.module_utils.common.parameters`) (community.crypto, community.sops).

While 1. could be considered 'own fault' because it is a private API, 2. looks like a bug, since that's a break in a public interface.

### Issue Type

Bug Report

### Component Name

core

### Ansible Version

devel

### Configuration

.

### OS / Environment

.

### Steps to Reproduce

.

### Expected Results

.

### Actual Results

.
"""For each key in requirements, check the corresponding list to see if they
    exist in parameters
    Accepts a single string or list of values for each key
    :arg requirements: Dictionary of requirements
    :arg parameters: Dictionary of parameters
    :returns: Empty dictionary or raises TypeError if the
    """
    result = {}
    if requirements is None:
        return result
    for (key, value) in requirements.items():
        if key not in parameters or parameters[key] is None:
            continue
        result[key] = []
        
        if isinstance(value, string_types):
            value = [value]
        for required in value:
            if required not in parameters or parameters[required] is None:
                result[key].append(required)
    if result:
        for key, missing in result.items():
            if len(missing) > 0:
                msg = "missing parameter(s) required by '%s': %s" % (key, ', '.join(missing))
                if options_context:
                    msg = "{0} found in {1}".format(msg, " -> ".join(options_context))
                raise TypeError(to_native(msg))
    return result
def check_required_arguments(argument_spec, parameters, options_context=None):