class A {}
class B extends A {}

class Collection<T>{
  T t;
}

class Set<X> extends Collection<X>{

}

class Test {
  void g(Collection ancestors) {
    A a = (A) ancestors.t;
  }

  void f() {
    Set<B> x = null;
    g(x);
  }
}
