//// [super2.ts]
// Case 5
class Base5 {
    public x() {
        return "BaseX";
    }
    
    public y() {
        return "BaseY";
    }
}

class Sub5 extends Base5 {
    public x() {
        return "SubX";
    }
}

class SubSub5 extends Sub5 {
    public x() {
        return super.x();
    }
    public y() {
        return super.y();
    }
}

// Case 6
class Base6 {
    public x() {
        return "BaseX";
    }
}

class Sub6 extends Base6 {
    public y() {
        return "SubY";
    }
}

class SubSub6 extends Sub6 {
    public y() {
        return super.y();
    }
}


var results1 = new SubSub5();
var results2 = new SubSub6();
results1.x() + results1.y() + results2.y();


//// [super2.js]
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 __();
};
// Case 5
var Base5 = (function () {
    function Base5() {
    }
    Base5.prototype.x = function () {
        return "BaseX";
    };
    Base5.prototype.y = function () {
        return "BaseY";
    };
    return Base5;
})();
var Sub5 = (function (_super) {
    __extends(Sub5, _super);
    function Sub5() {
        _super.apply(this, arguments);
    }
    Sub5.prototype.x = function () {
        return "SubX";
    };
    return Sub5;
})(Base5);
var SubSub5 = (function (_super) {
    __extends(SubSub5, _super);
    function SubSub5() {
        _super.apply(this, arguments);
    }
    SubSub5.prototype.x = function () {
        return _super.prototype.x.call(this);
    };
    SubSub5.prototype.y = function () {
        return _super.prototype.y.call(this);
    };
    return SubSub5;
})(Sub5);
// Case 6
var Base6 = (function () {
    function Base6() {
    }
    Base6.prototype.x = function () {
        return "BaseX";
    };
    return Base6;
})();
var Sub6 = (function (_super) {
    __extends(Sub6, _super);
    function Sub6() {
        _super.apply(this, arguments);
    }
    Sub6.prototype.y = function () {
        return "SubY";
    };
    return Sub6;
})(Base6);
var SubSub6 = (function (_super) {
    __extends(SubSub6, _super);
    function SubSub6() {
        _super.apply(this, arguments);
    }
    SubSub6.prototype.y = function () {
        return _super.prototype.y.call(this);
    };
    return SubSub6;
})(Sub6);
var results1 = new SubSub5();
var results2 = new SubSub6();
results1.x() + results1.y() + results2.y();
