/*
The fact that this works is a design choice, since
the type system cannot determine right now whether
or not Array<'T> implements Test for every 'T.
*/
interface Test {
fn test(v: Self);
}
fn test(v: Array<Int>) {}
fn test(v: Array<Float>) {}
implement<T> Test for Array<'T>;
fn<T> test2(v: 'T [Test]) {}
test2(arr<Int>());
test2(arr<Float>());