interface Widget{
mut:
init()
}
struct Button{}
fn (mut b Button) init(){}
struct Window{
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