class ClassWithArrows {
    hi = () => {
        return 'Hi' + '!';
    }
    
    bye = () => {
        return 'Bye' + '!';
    }
    
    message = () => {
        return this.hi() + this.bye();
    }
}
class ClassWithArrowsTranspiled {
    constructor() {
        this.hi = () => {
            return 'Hi' + '!';
        };
        
        this.bye = () => {
            return 'Bye' + '!';
        };
        
        this.message = () => {
            return this.hi() + this.bye();
        };
    }
}
class ClassWithBindInCtor {
    constructor() {
        this.message = this.message.bind(this);
    }
    
    hi() {
        return 'Hi' + '!';
    }
    
    bye() {
        return 'Bye' + '!';
    }
    
    message() {
        return this.hi() + this.bye();
    }
}
let counter;
const classWithArrows = new ClassWithArrows();
const arrowMethodRef = classWithArrows.message;
counter += arrowMethodRef().length;
const classWithArrows = new ClassWithArrowsTranspiled();
const arrowMethodRef = classWithArrows.message;
counter += arrowMethodRef().length;const classWithBindInCtor = new ClassWithBindInCtor();
const boundMethodRef = classWithBindInCtor.message;
counter += boundMethodRef().length;
console.log(counter);
counter = 0;