text: //// [commentsInheritance.ts]
  /** i1 is interface with properties*/
  interface i1 {
      /** i1_p1*/
      i1_p1: number;
      /** i1_f1*/
      i1_f1(): void;
      /** i1_l1*/
      i1_l1: () => void;
      // il_nc_p1
      i1_nc_p1: number;
      i1_nc_f1(): void;
      i1_nc_l1: () => void;
      p1: number;
      f1(): void;
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  class c1 implements i1 {
      public i1_p1: number;
      // i1_f1
      public i1_f1() {
      }
      public i1_l1: () => void;
      public i1_nc_p1: number;
      public i1_nc_f1() {
      }
      public i1_nc_l1: () => void;
      /** c1_p1*/
      public p1: number;
      /** c1_f1*/
      public f1() {
      }
      /** c1_l1*/
      public l1: () => void;
      /** c1_nc_p1*/
      public nc_p1: number;
      /** c1_nc_f1*/
      public nc_f1() {
      }
      /** c1_nc_l1*/
      public nc_l1: () => void;
  }
  var i1_i: i1;
  var c1_i = new c1();
  // assign to interface
  i1_i = c1_i;
  class c2 {
      /** c2 c2_p1*/
      public c2_p1: number;
      /** c2 c2_f1*/
      public c2_f1() {
      }
      /** c2 c2_prop*/
      public get c2_prop() {
          return 10;
      }
      public c2_nc_p1: number;
      public c2_nc_f1() {
      }
      public get c2_nc_prop() {
          return 10;
      }
      /** c2 p1*/
      public p1: number;
      /** c2 f1*/
      public f1() {
      }
      /** c2 prop*/
      public get prop() {
          return 10;
      }
      public nc_p1: number;
      public nc_f1() {
      }
      public get nc_prop() {
          return 10;
      }
      /** c2 constructor*/
      constructor(a: number) {
          this.c2_p1 = a;
      }
  }
  class c3 extends c2 {
      constructor() {
          super(10);
      }
      /** c3 p1*/
      public p1: number;
      /** c3 f1*/
      public f1() {
      }
      /** c3 prop*/
      public get prop() {
          return 10;
      }
      public nc_p1: number;
      public nc_f1() {
      }
      public get nc_prop() {
          return 10;
      }
  }
  var c2_i = new c2(10);
  var c3_i = new c3();
  // assign
  c2_i = c3_i;
  class c4 extends c2 {
  }
  var c4_i = new c4(10);
  interface i2 {
      /** i2_p1*/
      i2_p1: number;
      /** i2_f1*/
      i2_f1(): void;
      /** i2_l1*/
      i2_l1: () => void;
      // i2_nc_p1
      i2_nc_p1: number;
      i2_nc_f1(): void;
      i2_nc_l1: () => void;
      /** i2 p1*/
      p1: number;
      /** i2 f1*/
      f1(): void;
      /** i2 l1*/
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  interface i3 extends i2 {
      /** i3 p1 */
      p1: number;
      /**
      * i3 f1
      */
      f1(): void;
      /** i3 l1*/
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  var i2_i: i2;
  var i3_i: i3;
  // assign to interface
  i2_i = i3_i;
  
  
  //// [commentsInheritance.js]
  var __extends = (this && this.__extends) || (function () {
      var extendStatics = Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
          function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
      return function (d, b) {
          extendStatics(d, b);
          function __() { this.constructor = d; }
          d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
      };
  })();
  var c1 = (function () {
      function c1() {
      }
      // i1_f1
      c1.prototype.i1_f1 = function () {
      };
      c1.prototype.i1_nc_f1 = function () {
      };
      /** c1_f1*/
      c1.prototype.f1 = function () {
      };
      /** c1_nc_f1*/
      c1.prototype.nc_f1 = function () {
      };
      return c1;
  }());
  var i1_i;
  var c1_i = new c1();
  // assign to interface
  i1_i = c1_i;
  var c2 = (function () {
      /** c2 constructor*/
      function c2(a) {
          this.c2_p1 = a;
      }
      /** c2 c2_f1*/
      c2.prototype.c2_f1 = function () {
      };
      Object.defineProperty(c2.prototype, "c2_prop", {
          /** c2 c2_prop*/
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      c2.prototype.c2_nc_f1 = function () {
      };
      Object.defineProperty(c2.prototype, "c2_nc_prop", {
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      /** c2 f1*/
      c2.prototype.f1 = function () {
      };
      Object.defineProperty(c2.prototype, "prop", {
          /** c2 prop*/
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      c2.prototype.nc_f1 = function () {
      };
      Object.defineProperty(c2.prototype, "nc_prop", {
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      return c2;
  }());
  var c3 = (function (_super) {
      __extends(c3, _super);
      function c3() {
          return _super.call(this, 10) || this;
      }
      /** c3 f1*/
      c3.prototype.f1 = function () {
      };
      Object.defineProperty(c3.prototype, "prop", {
          /** c3 prop*/
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      c3.prototype.nc_f1 = function () {
      };
      Object.defineProperty(c3.prototype, "nc_prop", {
          get: function () {
              return 10;
          },
          enumerable: true,
          configurable: true
      });
      return c3;
  }(c2));
  var c2_i = new c2(10);
  var c3_i = new c3();
  // assign
  c2_i = c3_i;
  var c4 = (function (_super) {
      __extends(c4, _super);
      function c4() {
          return _super !== null && _super.apply(this, arguments) || this;
      }
      return c4;
  }(c2));
  var c4_i = new c4(10);
  var i2_i;
  var i3_i;
  // assign to interface
  i2_i = i3_i;
  
  
  //// [commentsInheritance.d.ts]
  /** i1 is interface with properties*/
  interface i1 {
      /** i1_p1*/
      i1_p1: number;
      /** i1_f1*/
      i1_f1(): void;
      /** i1_l1*/
      i1_l1: () => void;
      i1_nc_p1: number;
      i1_nc_f1(): void;
      i1_nc_l1: () => void;
      p1: number;
      f1(): void;
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  declare class c1 implements i1 {
      i1_p1: number;
      i1_f1(): void;
      i1_l1: () => void;
      i1_nc_p1: number;
      i1_nc_f1(): void;
      i1_nc_l1: () => void;
      /** c1_p1*/
      p1: number;
      /** c1_f1*/
      f1(): void;
      /** c1_l1*/
      l1: () => void;
      /** c1_nc_p1*/
      nc_p1: number;
      /** c1_nc_f1*/
      nc_f1(): void;
      /** c1_nc_l1*/
      nc_l1: () => void;
  }
  declare var i1_i: i1;
  declare var c1_i: c1;
  declare class c2 {
      /** c2 c2_p1*/
      c2_p1: number;
      /** c2 c2_f1*/
      c2_f1(): void;
      /** c2 c2_prop*/
      readonly c2_prop: number;
      c2_nc_p1: number;
      c2_nc_f1(): void;
      readonly c2_nc_prop: number;
      /** c2 p1*/
      p1: number;
      /** c2 f1*/
      f1(): void;
      /** c2 prop*/
      readonly prop: number;
      nc_p1: number;
      nc_f1(): void;
      readonly nc_prop: number;
      /** c2 constructor*/
      constructor(a: number);
  }
  declare class c3 extends c2 {
      constructor();
      /** c3 p1*/
      p1: number;
      /** c3 f1*/
      f1(): void;
      /** c3 prop*/
      readonly prop: number;
      nc_p1: number;
      nc_f1(): void;
      readonly nc_prop: number;
  }
  declare var c2_i: c2;
  declare var c3_i: c3;
  declare class c4 extends c2 {
  }
  declare var c4_i: c4;
  interface i2 {
      /** i2_p1*/
      i2_p1: number;
      /** i2_f1*/
      i2_f1(): void;
      /** i2_l1*/
      i2_l1: () => void;
      i2_nc_p1: number;
      i2_nc_f1(): void;
      i2_nc_l1: () => void;
      /** i2 p1*/
      p1: number;
      /** i2 f1*/
      f1(): void;
      /** i2 l1*/
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  interface i3 extends i2 {
      /** i3 p1 */
      p1: number;
      /**
      * i3 f1
      */
      f1(): void;
      /** i3 l1*/
      l1: () => void;
      nc_p1: number;
      nc_f1(): void;
      nc_l1: () => void;
  }
  declare var i2_i: i2;
  declare var i3_i: i3;
  