code: def copy_tree(self, src_dir, dst_dir, skip_variables=False):
      for src_root, _, files in os.walk(src_dir):
          if src_root != src_dir:
              rel_root = os.path.relpath(src_root, src_dir)
          else:
              rel_root = ""
          if skip_variables and rel_root.startswith("variables"):
              continue
          dst_root = os.path.join(dst_dir, rel_root)
          if not os.path.exists(dst_root):
              os.makedirs(dst_root)
          for f in files:
              shutil.copy(
                  os.path.join(src_root, f), os.path.join(dst_root, f)
              )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  import os
  import shutil
  from absl.testing import parameterized
  import numpy
  import tensorflow
  import tensorflow_probability
  from tf_agents.networks import actor_distribution_network
  from tf_agents.networks import q_network
  from tf_agents.networks import q_rnn_network
  from tf_agents.policies import actor_policy
  from tf_agents.policies import policy_saver
  from tf_agents.policies import q_policy
  from tf_agents.policies import tf_policy
  from tf_agents.specs import tensor_spec
  from tf_agents.trajectories import policy_step
  from tf_agents.trajectories import time_step
  from tf_agents.utils import common
  from tf_agents.utils import test_utils
label_desc: Use image node_id 19 for calling the PolicySaverTest obj's underlying member method code with example usage: obj.copy_tree(src_dir, dst_dir, skip_variables) without return types