code: def test_clone():
      d = {
          "dct": {
              "foo0": "foo0",
              "bar0": "bar0",
              "foo1": "foo1",
              "bar1": "bar1",
          },
          "lst": [1, 2, 3],
      }
      c1 = Context(d)
      c2 = Context.clone(c1)
  
      c2["dct"]["foo0"] = "foo"
      del c2["dct"]["foo1"]
  
      assert c1 != c2
      assert c1 == Context(d)
      assert c2.select("lst.0") == Value(1)
      with pytest.raises(KeyNotInContext):
          c2.select("lst.1.not_existing_key")
  
imports: from dataclasses import asdict
  from math import pi
  import pytest
  from dvc.fs import LocalFileSystem
  from dvc.parsing import DEFAULT_PARAMS_FILE
  from dvc.parsing.context import Context, CtxDict, CtxList, KeyNotInContext, MergeError, ParamsLoadError, Value, recurse_not_a_node
  from dvc.utils import relpath
  from dvc.utils.serialize import dumps_yaml
label_desc: Use image node_id 13 for calling a global function with example usage: test_clone() without return types