implement ButtKicker; include "sys.m"; sys: Sys; include "draw.m"; include "foobar.m"; fb: FooBar; Foo, Bar: import fb; ButtKicker: module { init: fn(nil: ref Draw->Context, nil: list of string); }; init(nil: ref Draw->Context, nil: list of string) { sys = load Sys Sys->PATH; fb = load FooBar FooBar->PATH1; foo := ref Foo(); # this works: foo.kick(foo); # this also works: kicker(foo); sys->print("kicked foo\n"); bar := ref Bar[ref Foo](ref Foo()); # this works: bar.kick(bar); # but this DOES NOT work: #kicker(bar); sys->print("kicked bar\n"); } kicker[V](arg: V) for { V => kick: fn(me: V); } { arg.kick(arg); }