def METHOD_NAME(node: nodes.Subscript) -> str:
    # Accessing an element of a List with an incompatible index type (non-integers)
    subscript_concrete_type = (node.value.inf_type).getValue()
    if subscript_concrete_type is type(None):
        return f"NoneType is not subscriptable."
    if not isinstance(subscript_concrete_type, _GenericAlias):
        subscript_gorg = subscript_concrete_type
    else:
        subscript_gorg = _gorg(subscript_concrete_type)
    if subscript_gorg is list:
        slice_type = _get_name(node.slice.inf_type.getValue())
        slice_val = node.slice.value
        slice_str = slice_val.as_string() if isinstance(slice_val, nodes.NodeNG) else str(slice_val)
        return (
            f"You can only access elements of a list using an int. "
            f"You used {_correct_article(slice_type)}, {slice_str}."
        )
    elif subscript_gorg is tuple:
        slice_type = _get_name(node.slice.inf_type.getValue())
        slice_val = node.slice.value
        slice_str = slice_val.as_string() if isinstance(slice_val, nodes.NodeNG) else str(slice_val)
        return (
            f"You can only access elements of a tuple using an int. "
            f"You used {_correct_article(slice_type)}, {slice_str}."
        )
    elif subscript_gorg is dict:
        slice_type = _get_name(node.slice.inf_type.getValue())
        slice_val = node.slice.value
        slice_str = slice_val.as_string() if isinstance(slice_val, nodes.NodeNG) else str(slice_val)
        return (
            f"You tried to access an element of this dictionary using "
            f"{_correct_article(slice_type)}, {slice_str}, "
            f"but the keys are of type {_get_name(subscript_concrete_type.__args__[0])}."
        )
    else:
        return f"You make a type annotation with an incorrect subscript."