+ write!(w, " {{\n\t").unwrap();
+ if uncallable_function {
+ write!(w, "unreachable!();").unwrap();
+ } else {
+ write_method_var_decl_body(w, &$m.sig, "", types, Some(&meth_gen_types), false);
+ let mut takes_self = false;
+ for inp in $m.sig.inputs.iter() {
+ if let syn::FnArg::Receiver(_) = inp {
+ takes_self = true;
+ }
+ }
+
+ let mut t_gen_args = String::new();
+ for (idx, _) in $trait.generics.params.iter().enumerate() {
+ if idx != 0 { t_gen_args += ", " };
+ t_gen_args += "_"
+ }
+ if takes_self {
+ write!(w, "<native{} as {}<{}>>::{}(unsafe {{ &mut *(this_arg as *mut native{}) }}, ", ident, $trait_path, t_gen_args, $m.sig.ident, ident).unwrap();
+ } else {
+ write!(w, "<native{} as {}<{}>>::{}(", ident, $trait_path, t_gen_args, $m.sig.ident).unwrap();
+ }