code: def test_fuse_roots_annotations():
      x = da.ones(10, chunks=(2,))
      y = da.zeros(10, chunks=(2,))
  
      with dask.annotate(foo="bar"):
          y = y**2
  
      z = (x + 1) + (2 * y)
      hlg = dask.blockwise.optimize_blockwise(z.dask)
      assert len(hlg.layers) == 3
      assert {"foo": "bar"} in [
          l.annotations for l in hlg.layers.values()
      ]
      za = da.Array(hlg, z.name, z.chunks, z.dtype)
      assert_eq(za, z)
  
imports: from __future__ import annotations
  import pytest
  import numpy
  import dask
  import dask.array
  from dask.array.chunk import getitem
  from dask.array.core import getter
  from dask.array.core import getter_nofancy
  from dask.array.optimization import _is_getter_task, fuse_slice, optimize, optimize_blockwise, optimize_slices
  from dask.array.utils import assert_eq
  from dask.highlevelgraph import HighLevelGraph
  from dask.optimization import SubgraphCallable, fuse
  from dask.utils import SerializableLock
label_desc: Use image node_id 27 for calling a global function with example usage: test_fuse_roots_annotations() without return types