def _explicit(root_node: ast.AST) -> Iterable[_ERROR]:
    return ((node.lineno, node.col_offset, 'ISC003 explicitly concatenated string should be implicitly concatenated', None) for node in ast.walk(root_node) if (isinstance(node, ast.BinOp) and isinstance(node.op, ast.Add) and all((isinstance(operand, (ast.Str, ast.Bytes, ast.JoinedStr)) for operand in [node.left, node.right]))))
def _explicit(root_node: ast.AST) -> Iterable[_ERROR]:
    return ((node.lineno, node.col_offset, 'ISC003 explicitly concatenated string should be implicitly concatenated', None) for node in ast.walk(root_node) if (isinstance(node, ast.BinOp) and isinstance(node.op, ast.Add) and all((isinstance(operand, (ast.Str, ast.Bytes, ast.JoinedStr)) for operand in [node.left, node.right]))))