Text::Treesitter::Language    T_PTROBJ
Text::Treesitter::_Node       T_STRUCTOBJ
Text::Treesitter::Parser      T_PTROBJ
Text::Treesitter::Query       T_PTROBJ
Text::Treesitter::QueryCursor T_PTROBJ
Text::Treesitter::QueryMatch  T_STRUCTOBJ
Text::Treesitter::_Tree       T_PTROBJ

INPUT
T_STRUCTOBJ
    if(SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
        $var = *($type *)(SvPVX(SvRV($arg)));
    }
    else {
      const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
      Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
          ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
          \"$var\", \"$ntype\",
          refstr, $arg);
    }

OUTPUT
T_STRUCTOBJ
    sv_setref_pvn($arg, \"${ntype}\", (void *)&$var, sizeof($var));
