text: var __extends = this.__extends || function (d, b) {
      for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
      function __() { this.constructor = d; }
      __.prototype = b.prototype;
      d.prototype = new __();
  };
  var A = (function () {
      function A() {
      }
      A.prototype.foo = function () {
          return "";
      };
      return A;
  })();
  
  var B = (function (_super) {
      __extends(B, _super);
      function B() {
          _super.apply(this, arguments);
      }
      B.prototype.bar = function () {
          return 1;
      };
      return B;
  })(A);
  
  var C = (function (_super) {
      __extends(C, _super);
      function C() {
          _super.apply(this, arguments);
      }
      C.prototype.baz = function () {
          return 1;
      };
      return C;
  })(A);
  
  var a;
  var b;
  var c;
  
  function foo2(x) {
      var y = x;
      y = a; // error: cannot convert A to T
      y = b; // error: cannot convert B to T
      y = c; // error: cannot convert C to T
      y = a;
      y = b; // error: cannot convert B to T
      y = c; // error: cannot convert C to T
  }
  