foreigner_class!(class Foo {
self_type Foo;
constructor Foo::new(_: i32, _: &str) -> Foo;
method Foo::f(&self, a: i32, b: i32) -> i32;
});
foreigner_class!(class TestReferences {
self_type TestReferences;
constructor TestReferences::new(foo_data: i32, foo_name: &str) -> TestReferences;
method TestReferences::get_foo_ref(&self) -> &Foo;
method TestReferences::update_foo(&mut self, foo: &Foo);
method TestReferences::update_mut_foo(&mut self, foo: &mut Foo);
});