code: function defineLazyConstant(target, property, callback, options) {
    defineGetter(target, property, function () {
      const value = callback.call(this);
      defineConstant(this, property, value, options);
      return value;
    }, {
      configurable: true,
      enumerable: options && options.enumerable
    });
    return target;
  }
docs: Create a getter that transforms then to a property
  
  @param {Object} target
  @param {string} property name of the property
  @param {Function} callback function called when the property is accessed the first time
  @param {Object} [options]
  @param {boolean} [options.enumerable=false]
  @return {Object} target