System.register([], function (_export, _context) {
  "use strict";

  return {
    setters: [],
    execute: function () {
      const __SystemJSRewritingHack = {};
      _recorder_._src_client_utils_callable_js = _recorder_._src_client_utils_callable_js || {};

      /*MD # Callable MD*/
      class Callable extends Function {
        constructor() {
          // there are various ways to do this, see https://hackernoon.com/creating-callable-objects-in-javascript-d21l3te1
          super('...args', 'return this._bound.__call__(...args)');
          this._bound = this.bind(this);
          return this._bound;
        }
        __call__(...args) {
          throw new Error('subclass responsibility');
        }
      }

      _export('default', Callable);

      Object.defineProperty(_recorder_._src_client_utils_callable_js, 'Callable', {
        get() {
          return Callable;
        },

        set(thisIsVererySecretVariableName) {
          _export('default', Callable = thisIsVererySecretVariableName);

          return true;
        },

        enumerable: true,
        configurable: true
      });
    }
  };
});