code: def expand_annotations(src_dir, dst_dir):
      
      if src_dir[-1] == slash:
          src_dir = src_dir[:-1]
      
      if dst_dir[-1] == slash:
          dst_dir = dst_dir[:-1]
  
      annotated = False
  
      for src_subdir, dirs, files in os.walk(src_dir):
          assert src_subdir.startswith(src_dir)
          dst_subdir = src_subdir.replace(src_dir, dst_dir, 1)
          os.makedirs(dst_subdir, exist_ok=True)
  
          for file_name in files:
              src_path = os.path.join(src_subdir, file_name)
              dst_path = os.path.join(dst_subdir, file_name)
              if file_name.endswith('.py'):
                  annotated |= _expand_file_annotations(src_path, dst_path)
              else:
                  shutil.copyfile(src_path, dst_path)
  
          for dir_name in dirs:
              os.makedirs(os.path.join(dst_subdir, dir_name), exist_ok=True)
  
      return dst_dir if annotated else src_dir
docs: Expand annotations in user code.
      Return dst_dir if annotation detected; return src_dir if not.
      src_dir: directory path of user code (str)
      dst_dir: directory to place generated files (str)