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

  var Callable, __SystemJSRewritingHack;
  _export("default", void 0);
  return {
    setters: [],
    execute: function () {
      __SystemJSRewritingHack = {};
      _recorder_._https__lively_kernel_org_lively4_lively4_ansgar_src_client_utils_callable_js = _recorder_._https__lively_kernel_org_lively4_lively4_ansgar_src_client_utils_callable_js || {};
      /*MD # Callable MD*/
      _export("default", Callable = 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');
        }
      });
      Object.defineProperty(_recorder_._https__lively_kernel_org_lively4_lively4_ansgar_src_client_utils_callable_js, "Callable", {
        get() {
          return Callable;
        },
        set(thisIsVererySecretVariableName) {
          _export("default", Callable = thisIsVererySecretVariableName);
          return true;
        },
        enumerable: true,
        configurable: true
      });
    }
  };
});