code: def _collect_new_io_core(self, original_io, io_names_to_extract):  # type: ignore
      original_io_map = self._build_name2obj_dict(original_io)
      original_io_names = set(original_io_map)
      s_io_names_to_extract = set(io_names_to_extract)
      io_names_to_keep = s_io_names_to_extract & original_io_names
      new_io_names_to_add = s_io_names_to_extract - original_io_names
  
      new_io_tensors = []
      for name in io_names_to_keep:
          new_io_tensors.append(original_io_map[name])
      for name in new_io_names_to_add:
          # activation become input or output
          new_io_tensors.append(self.vimap[name])
  
      # adjust sequence
      new_io_tensors_map = self._build_name2obj_dict(new_io_tensors)
      return [new_io_tensors_map[name] for name in io_names_to_extract]
  
file_path: catboost/contrib/libs/onnx/onnx/utils.py
imports: import os
  from typing import List, Tuple
  import onnx.checker
  import onnx.helper
  import onnx.shape_inference
  from onnx import FunctionProto, ModelProto, NodeProto, TensorProto, ValueInfoProto
label_desc: Use image node_id 3 for calling the Extractor obj's underlying member method code with example usage: obj._collect_new_io_core(original_io, io_names_to_extract) and returns: unknown