[GenericAccessors] interface Foo : Object { public virtual G get_foo (G g) { assert (typeof (G) == typeof (string)); G g_copy = g; assert (GLib.strcmp ((string) g_copy, "foo") == 0); assert (g_copy != g); return g; } } class Bar : Object, Foo { } void main () { var bar = new Bar (); assert ("foo" == bar.get_foo ("foo")); }