code: def test_share_params_linear(self):
      # A's params are shared with B and C so that all the three share the
      # same parameter arrays
  
      model_a = L.Linear(2, 2)
  
      arrays = async_.share_params_as_shared_arrays(model_a)
      assert isinstance(arrays, dict)
      assert set(arrays.keys()) == {"/W", "/b"}
  
      model_b = L.Linear(2, 2)
      model_c = L.Linear(2, 2)
  
      async_.set_shared_params(model_b, arrays)
      async_.set_shared_params(model_c, arrays)
  
      # Pointers to parameters must be the same
      _assert_same_pointers_to_param_data(model_a, model_b)
      _assert_same_pointers_to_param_data(model_a, model_c)
      # Pointers to gradients must be different
      _assert_different_pointers_to_param_grad(model_a, model_b)
      _assert_different_pointers_to_param_grad(model_a, model_c)
      _assert_different_pointers_to_param_grad(model_b, model_c)
      # Pointers to persistent values must be the same
      _assert_same_pointers_to_persistent_values(model_a, model_b)
      _assert_same_pointers_to_persistent_values(model_a, model_c)
  
imports: import multiprocessing
  import os
  import signal
  import sys
  import unittest
  import warnings
  import chainer
  import chainer.links
  from chainer import optimizers
  import copy
  import numpy
  import chainerrl
  from chainerrl.misc import async_
label_desc: Use image node_id 2 for calling the TestAsync obj's underlying member method code with example usage: obj.test_share_params_linear() without return types