//// [asyncMethodWithSuper_es2017.ts]
class A {
    x() {}
    y() {}
}
class B extends A {
    // async method with only call/get on 'super' does not require a binding
    async simple() {
        // call with property access
        super.x();
        // call additional property.
        super.y();
        // call with element access
        super["x"]();
        // property access (read)
        const a = super.x;
        // element access (read)
        const b = super["x"];
    }
    // async method with assignment/destructuring on 'super' requires a binding
    async advanced() {
        const f = ()=>{};
        // call with property access
        super.x();
        // call with element access
        super["x"]();
        // property access (read)
        const a = super.x;
        // element access (read)
        const b = super["x"];
        // property access (assign)
        super.x = f;
        // element access (assign)
        super["x"] = f;
        // destructuring assign with property access
        ({ f: super.x } = {
            f
        });
        // destructuring assign with element access
        ({ f: super["x"] } = {
            f
        });
    }
}
