code: def test_shared_multi_axes(self):
      overlay1 = Overlay(
          [
              Curve(np.arange(10), label=f"Data {i}").opts(
                  subcoordinate_y=True
              )
              for i in range(2)
          ]
      )
      overlay2 = Overlay(
          [
              Curve(np.arange(10) + 5, label=f"Data {i}").opts(
                  subcoordinate_y=True
              )
              for i in range(2)
          ]
      )
  
      plot = bokeh_renderer.get_plot(overlay1 + overlay2)
  
      oplot1 = plot.subplots[(0, 0)].subplots["main"]
      oplot2 = plot.subplots[(0, 1)].subplots["main"]
      assert (
          oplot1.handles["y_range"].start,
          oplot1.handles["y_range"].end,
      ) == (-0.5, 1.5)
      assert oplot1.handles["extra_y_ranges"] == {}
      assert (
          oplot2.handles["y_range"].start,
          oplot2.handles["y_range"].end,
      ) == (-0.5, 1.5)
      assert oplot2.handles["extra_y_ranges"] == {}
  
imports: import numpy
  import pytest
  from bokeh.models.tools import WheelZoomTool, ZoomInTool, ZoomOutTool
  from holoviews.core import Overlay
  from holoviews.element import Curve
  from holoviews.element.annotation import VSpan
  from .test_plot import TestBokehPlot, bokeh_renderer
label_desc: Use image node_id 9 for calling the TestSubcoordinateY obj's underlying member method code with example usage: obj.test_shared_multi_axes() without return types