import mymod { Data, ImpNode }

fn foobar_mymod<U>(inode ImpNode<U>) ImpNode<U> {
	return ImpNode{}
}

fn simple<T>() T {
	return T{}
}

struct Foo {}

fn (_ Foo) simple<T>() T {
	return T{}
}

struct GenericStruct<A, B> {
	v Data<Data<A>, B>
}

fn proper_generics(gs GenericStruct<A, B>) GenericStruct<A, B> {
	return gs
}

fn main() {
	simple<int>()
	Foo{}.simple<int>()
}
