code: def test_add_annotated_shape_multi_plot(multi_plot_fixture):
      multi_plot_fixture.add_hline(y=1, annotation_text="A")
      multi_plot_fixture.add_vline(x=2, annotation_text="B")
      multi_plot_fixture.add_hrect(y0=3, y1=4, annotation_text="C")
      multi_plot_fixture.add_vrect(x0=5, x1=6, annotation_text="D")
      ax_nums = ["", "2", "3", "4"]
      ret = len(multi_plot_fixture.layout.annotations) == 16
      for sh, d in zip(
          multi_plot_fixture.layout.annotations,
          [
              {
                  "text": "A",
                  "xref": "x%s domain" % (n,),
                  "yref": "y%s" % (n,),
              }
              for n in ax_nums
          ]
          + [
              {
                  "text": "B",
                  "xref": "x%s" % (n,),
                  "yref": "y%s domain" % (n,),
              }
              for n in ax_nums
          ]
          + [
              {
                  "text": "C",
                  "xref": "x%s domain" % (n,),
                  "yref": "y%s" % (n,),
              }
              for n in ax_nums
          ]
          + [
              {
                  "text": "D",
                  "xref": "x%s" % (n,),
                  "yref": "y%s domain" % (n,),
              }
              for n in ax_nums
          ],
      ):
          ret &= _cmp_partial_dict(sh, d)
      assert ret
  
imports: import plotly.graph_objects
  from plotly.subplots import make_subplots
  from itertools import product
  import os
  import sys
  import pytest
  import json
  from .common import _cmp_partial_dict, _check_figure_layout_objects
label_desc: Use image node_id 5 for calling a global function with example usage: test_add_annotated_shape_multi_plot(multi_plot_fixture) without return types