interface Output[T] {
	val  T
	name string
}

struct Coil {
pub mut:
	val int
pub:
	name string @[required]
}

struct Light {
pub mut:
	val int
pub:
	name string @[required]
}

fn main() {
	mut outs := []Output{}
	outs << Coil{
		name: 'outhole'
	}
	outs << Light{
		name: 'shoot again'
	}
}
