class TypeA {
    public string foo = "foo";
}

class TypeB {
}

void print_collection(Gee.Collection<TypeA> list) {
    foreach(TypeA a in list)
        stdout.printf("%s\n", a.foo);
}

void print_list(Gee.List<TypeA> list) {
    foreach(TypeA a in list)
        stdout.printf("%s\n", a.foo);
}

void main() {
    Gee.List<TypeB> list = new Gee.ArrayList<TypeB>();
    list.add(new TypeB());
    
    print_collection(list); // NO ERROR!!!!
    print_list(list); // error: Argument 1: Cannot convert from `Gee.List<TypeB>?' to `Gee.List<TypeA>'
    
    return;
}

