class_docstr: Takes a sequence of Bindings and unbox EValues to these Bindings. Return generated code that performs correct unboxing.
  A sample generated code:
  // aten::mul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!)
  void mul_out(EValue** stack) {
      EValue& self = *stack[0];
      EValue& other = *stack[1];
      EValue& out = *stack[2];
      const torch::executor::Tensor & self_base = self.to<torch::executor::Tensor>();
      const torch::executor::Tensor & other_base = other.to<torch::executor::Tensor>();
      torch::executor::Tensor & out_base = out.to<torch::executor::Tensor>();
  
      EXECUTORCH_SCOPE_PROF("native_call_mul.out");
      torch::executor::mul_outf(self_base, other_base, out_base);
  
  
  }
class_docstr_tok: ["Takes","a","sequence","of","Bindings","and","unbox","EValues","to","these","Bindings",".","Return","generated","code","that","performs","correct","unboxing",".","A","sample","generated","code",":","\/\/","aten",":",":mul.out","(","Tensor","self",",","Tensor","other",",","*",",","Tensor","(","a","!",")","out",")","-",">","Tensor","(","a","!",")","void","mul_out","(","EValue","*","*","stack",")","{","EValue","&","self","=","*","stack","[","0","]",";","EValue","&","other","=","*","stack","[","1","]",";","EValue","&","out","=","*","stack","[","2","]",";","const","torch",":",":executor",":",":Tensor","&","self_base","=","self.to","<","torch",":",":executor",":",":Tensor",">","(",")",";","const","torch",":",":executor",":",":Tensor","&","other_base","=","other.to","<","torch",":",":executor",":",":Tensor",">","(",")",";","torch",":",":executor",":",":Tensor","&","out_base","=","out.to","<","torch",":",":executor",":",":Tensor",">","(",")",";","EXECUTORCH_SCOPE_PROF","(","``","native_call_mul.out","''",")",";","torch",":",":executor",":",":mul_outf","(","self_base",",","other_base",",","out_base",")",";","}"]
docstr: Takes in the type, name and mutability corresponding to an argument, and generates a tuple of:
  (1) the C++ code necessary to unbox the argument
  (2) A Binding corresponding to the newly created unboxed variable, including variable name and its CType
  :param t: a `Type` of an argument
  :param arg_name: argument name
  :param mutable: boolean for whether this argument type is mutable
  :return: unboxed result
docstr_tok: ["Takes","in","the","type",",","name","and","mutability","corresponding","to","an","argument",",","and","generates","a","tuple","of",":","(","1",")","the","C++","code","necessary","to","unbox","the","argument","(","2",")","A","Binding","corresponding","to","the","newly","created","unboxed","variable",",","including","variable","name","and","its","CType",":","param","t",":","a","`","Type","`","of","an","argument",":","param","arg_name",":","argument","name",":","param","mutable",":","boolean","for","whether","this","argument","type","is","mutable",":","return",":","unboxed","result"]
code: def argumenttype_evalue_convert(
      self, t: Type, arg_name: str, *, mutable: bool = False
  ) -> Tuple[str, CType, List[str], List[str]]:
      """
      Takes in the type, name and mutability corresponding to an argument, and generates a tuple of:
      (1) the C++ code necessary to unbox the argument
      (2) A Binding corresponding to the newly created unboxed variable, including variable name and its CType
      :param t: a `Type` of an argument
      :param arg_name: argument name
      :param mutable: boolean for whether this argument type is mutable
      :return: unboxed result
      """
      ctype = self.argument_type_gen(
          t, mutable=mutable, binds=arg_name
      ).type
  
      if isinstance(t, BaseType):
          out_name = f"{arg_name}_base"
          code, decl = self._gen_code_base_type(
              arg_name=arg_name, out_name=out_name, ctype=ctype
          )
      elif isinstance(t, OptionalType):
          out_name = f"{arg_name}_opt_out"
          code, decl = self._gen_code_optional_type(
              arg_name=arg_name, out_name=out_name, t=t, ctype=ctype
          )
      elif isinstance(t, ListType):
          out_name = f"{arg_name}_list_out"
          code, decl = self._gen_code_list_type(
              arg_name=arg_name, out_name=out_name, t=t, ctype=ctype
          )
      else:
          raise Exception(
              f"Cannot handle type {t}. arg_name: {arg_name}"
          )
      return out_name, ctype, code, decl
  
file_path: pytorch/torchgen/executorch/api/unboxing.py
imports: from dataclasses import dataclass
  from typing import Callable, List, Sequence, Tuple
  from torchgen.api.types import Binding, CType, NamedCType
  from torchgen.model import Argument, BaseTy, BaseType, ListType, NativeFunction, OptionalType, Type
label_desc: Use image node_id 2 for calling the Unboxing obj's underlying member method code with example usage: obj.argumenttype_evalue_convert(t, arg_name) and returns: out_name,  ctype,  code,  decl