class base {
    constructor() {}

    getValue() {
        return this._prop;
    }

    setValue(v) {
        this._prop = v;
    }
}

class derived extends base {
    constructor() { super(); }

    get a() { return super.getValue(); }
    set a(v) { super.setValue(v); }

    get b() { return eval('super.getValue()'); }
    set b(v) { eval('super.setValue(v);'); }

    test() {
        this.a = 15;
        assertEq(this.a, 15);

        assertEq(this.b, 15);
        this.b = 30;
        assertEq(this.b, 30);
    }
}

var derivedInstance = new derived();
derivedInstance.test();

if (typeof reportCompare === 'function')
    reportCompare(0,0,"OK");
