code: function (scope, key, getter) {
        var value = null, args = Array.prototype.slice.call(arguments);
        var params = (args.length > 3) ? args.slice(3) : [];
  
        Object.defineProperty(scope, key, {
          get: function () {
            if (value === null) value = getter.apply(scope, params);
            return value;
          }
        });
      }
docs: Create an implicit getter that caches its `getter()`
  lookup value