interface Widget { mut: init() } struct Button {} fn (mut b Button) init() {} struct Window { mut: widgets []Widget } fn (mut w Window) add(mut widget Widget) {} fn main() { mut win := Window{} mut btn := Button{} win.add(btn) // should be an error here }