function createStamp(descriptor) {
    const factory = createFactory();

    const sdp = descriptor.staticDeepProperties;
    if (sdp) merge(factory, sdp);

    const sp = descriptor.staticProperties;
    if (sp) assign(factory, sp);

    const spd = descriptor.staticPropertyDescriptors;
    if (spd) Object.defineProperties(factory, spd);

    const c = isFunction(factory.compose) ? factory.compose : compose;
    assign(
      (factory.compose = function () {
        return c.apply(this, arguments);
      }),
      descriptor,
    );

    return factory;
  }
Returns a new stamp given a descriptor and a compose function implementation.
@param {Descriptor} [descriptor={}] The information about the object the stamp will be creating.
@returns {Stamp} The new stamp