abstract class A {
abstract foo() : number;
}
class B extends A {
foo() { return 1; }
abstract class C extends A {
var a = new B;
a.foo();
a = new C;