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",")",";","}"]
code: def _gen_code_optional_type(
      self, arg_name: str, out_name: str, t: OptionalType, ctype: CType
  ) -> Tuple[List[str], List[str]]:
      in_name = f"{arg_name}_opt_in"
      (
          res_name,
          base_type,
          res_code,
          decl,
      ) = self.argumenttype_evalue_convert(t.elem, in_name)
      return (
          f"""
      {ctype.cpp_type(strip_ref=True)} {out_name} = {arg_name}.toOptional<{base_type.cpp_type(strip_ref=True)}>();
              """.split(
              "\n"
          ),
          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 4 for calling the Unboxing obj's underlying member method code with example usage: obj._gen_code_optional_type(arg_name, out_name, t, ctype) and returns: str, ctype, str, out_name, str, arg_name, str, base_type, str,  decl