import typing


def get_actual_type(param_type: type) -> typing.List[type]:
    """ Gets the candidate actual types of a given type

    Args:
        param_type (type): The type to extract actual type from

    Returns:
        typing.List[type]: The candidate types
    """

    param_types = []
    if hasattr(param_type, '__origin__'):
        if param_type.__origin__ is typing.Union:
            for arg in param_type.__args__:
                param_types.extend(get_actual_type(arg))
        else:
            param_types.append(param_type.__origin__)
    else:
        param_types.append(param_type)
    return param_types