code: def test_layout_shared_source_synced_update(self):
      hmap = HoloMap(
          {
              i: Dataset(
                  {
                      chr(65 + j): np.random.rand(i + 2)
                      for j in range(4)
                  },
                  kdims=["A", "B", "C", "D"],
              )
              for i in range(3)
          }
      )
  
      # Create two holomaps of points sharing the same data source
      hmap1 = hmap.map(
          lambda x: Points(x.clone(kdims=["A", "B"])), Dataset
      )
      hmap2 = hmap.map(
          lambda x: Points(x.clone(kdims=["D", "C"])), Dataset
      )
  
      # Pop key (1,) for one of the HoloMaps and make Layout
      hmap2.pop((1,))
      layout = (hmap1 + hmap2).opts(shared_datasource=True)
  
      # Get plot
      plot = bokeh_renderer.get_plot(layout)
  
      # Check plot created shared data source and recorded expected columns
      sources = plot.handles.get("shared_sources", [])
      source_cols = plot.handles.get("source_cols", {})
      self.assertEqual(len(sources), 1)
      source = sources[0]
      data = source.data
      cols = source_cols[id(source)]
      self.assertEqual(set(cols), {"A", "B", "C", "D"})
  
      # Ensure the source contains the expected columns
      self.assertEqual(set(data.keys()), {"A", "B", "C", "D"})
  
      # Update to key (1,) and check the source contains data
      # corresponding to hmap1 and filled in NaNs for hmap2,
      # which was popped above
      plot.update((1,))
      self.assertEqual(data["A"], hmap1[1].dimension_values(0))
      self.assertEqual(data["B"], hmap1[1].dimension_values(1))
      self.assertEqual(
          data["C"], np.full_like(hmap1[1].dimension_values(0), np.nan)
      )
      self.assertEqual(
          data["D"], np.full_like(hmap1[1].dimension_values(0), np.nan)
      )
  
imports: import datetime
  import re
  import numpy
  from bokeh.models import Div, GlyphRenderer, GridPlot, Spacer, Tabs, Title, Toolbar
  from bokeh.models.layouts import TabPanel
  from bokeh.plotting import figure
  from holoviews.core import Dataset, Dimension, DynamicMap, Empty, GridSpace, HoloMap, Layout, NdLayout, NdOverlay
  from holoviews.element import Curve, Histogram, Image, Points, Scatter
  from holoviews.streams import Stream
  from holoviews.util import opts, render
  from holoviews.util.transform import dim
  from ...utils import LoggingComparisonTestCase
  from .test_plot import TestBokehPlot, bokeh_renderer
label_desc: Use image node_id 17 for calling the TestLayoutPlot obj's underlying member method code with example usage: obj.test_layout_shared_source_synced_update() without return types