def METHOD_NAME(
    self, contract: Contract
) -> Set[Tuple[Function, Node]]:
    """
    Detects and returns all nodes with storage-allocated signed integer array init/assignment
    :param contract: Contract to detect within
    :return: A list of tuples with (function, node) where function node has storage-allocated signed integer array init/assignment
    """
    # Create our result set.
    results: Set[Tuple[Function, Node]] = set()
    # Loop for each function and modifier.
    for function in contract.functions_and_modifiers_declared:
        # Loop for every node in this function, looking for storage-allocated
        # signed integer array initializations/assignments
        for node in function.nodes:
            if node.type == NodeType.EXPRESSION:
                for ir in node.irs:
                    # Storage-allocated signed integer array initialization expression
                    if isinstance(ir, InitArray) and self._is_vulnerable_type(ir):
                        results.add((function, node))
                    # Assignment expression with lvalue being a storage-allocated signed integer array and
                    # rvalue being a signed integer array of different base type than lvalue
                    if (
                        isinstance(ir, Assignment)
                        and isinstance(ir.lvalue.type, ArrayType)
                        and self._is_vulnerable_type(ir)
                        # Base type is signed integer and lvalue base type is different from rvalue base type
                        and ir.lvalue.type.type != ir.rvalue.type.type
                    ):
                        results.add((function, node))
    # Return the resulting set of tuples
    return results