code: def test_unsupported_nodes_analysis_with_missing_aten_op(self):
      # NOTE: simulate unsupported nodes
      aten_mul_tensor = registration.OpName.from_name_parts(
          namespace="aten", op_name="mul", overload="Tensor"
      )
      aten_mul_default = registration.OpName.from_name_parts(
          namespace="aten", op_name="mul"
      )
      aten_add_tensor = registration.OpName.from_name_parts(
          namespace="aten", op_name="add", overload="Tensor"
      )
      aten_add_default = registration.OpName.from_name_parts(
          namespace="aten", op_name="add"
      )
  
      self.registry._registry.pop(aten_mul_tensor)
      self.registry._registry.pop(aten_mul_default)
      self.registry._registry.pop(aten_add_tensor)
      self.registry._registry.pop(aten_add_default)
  
      diagnostic_context = diagnostics.DiagnosticContext(
          "torch.onnx.dynamo_export", torch.__version__
      )
      dispatcher = onnxfunction_dispatcher.OnnxFunctionDispatcher(
          self.registry, diagnostic_context
      )
  
      graph: torch.fx.Graph = torch.fx.Graph()
      x: torch.fx.Node = graph.create_node("placeholder", "x")
      x.meta["val"] = torch.tensor(3.0)
      b: torch.fx.Node = graph.create_node(
          "call_function", target=torch.ops.aten.mul.Tensor, args=(x, x)
      )
      c: torch.fx.Node = graph.create_node(
          "call_function", target=torch.ops.aten.add.Tensor, args=(b, b)
      )
      output: torch.fx.Node = graph.output(c)
      module = torch.fx.GraphModule(torch.nn.Module(), graph)
  
      with self.assertRaises(infra.RuntimeErrorWithDiagnostic):
          analysis.UnsupportedFxNodesAnalysis(
              diagnostic_context, module, dispatcher
          ).analyze(infra.levels.ERROR)
  
      try:
          analysis.UnsupportedFxNodesAnalysis(
              diagnostic_context, module, dispatcher
          ).analyze(infra.levels.ERROR)
      except infra.RuntimeErrorWithDiagnostic as e:
          self.assertIn(
              "Unsupported FX nodes: {'call_function': ['aten.mul.Tensor', 'aten.add.Tensor']}.",
              e.diagnostic.message,
          )
  
imports: from __future__ import annotations
  import logging
  import operator
  from typing import TypeVar, Union
  import onnxscript
  import torch
  import torch.fx
  from onnxscript import BFLOAT16, DOUBLE, FLOAT, FLOAT16
  from onnxscript.function_libs.torch_lib import ops
  from onnxscript.onnx_opset import opset15
  from torch.onnx._internal.diagnostics import infra
  from torch.onnx._internal.fx import analysis, diagnostics, onnxfunction_dispatcher, registration
  from torch.testing._internal import common_utils
label_desc: Use image node_id 5 for calling the TestRegistration obj's underlying member method code with example usage: obj.test_unsupported_nodes_analysis_with_missing_aten_op() without return types