code: function boundMethod(objPrototype, method, descriptor) {
    var fn = descriptor.value;
  
    return {
      configurable: true,
      get: function get() {
        if (this === objPrototype || this.hasOwnProperty(method)) {
          return fn;
        }
  
        var boundFn = fn.bind(this);
        Object.defineProperty(this, method, {
          value: boundFn,
          configurable: true,
          writable: true
        });
        return boundFn;
      }
    };
  }
docs: From autobind-decorator (https://github.com/andreypopp/autobind-decorator/tree/master)
  Return a descriptor removing the value and returning a getter
  The getter will return a .bind version of the function
  and memoize the result against a symbol on the instance