function mergeComposable(dstDescriptor, srcComposable) {
    function mergeAssign(propName, deep) {
      if (!isObject(srcComposable[propName])) {
        return;
      }
      if (!isObject(dstDescriptor[propName])) {
        dstDescriptor[propName] = {};
      }
      (deep || assign)(dstDescriptor[propName], srcComposable[propName]);
    }

    function concatAssignFunctions(propName) {
      const funcs = extractUniqueFunctions(
        dstDescriptor[propName],
        srcComposable[propName],
      );
      if (funcs) dstDescriptor[propName] = funcs;
    }

    srcComposable = srcComposable?.compose || srcComposable;
    if (isObject(srcComposable)) {
      mergeAssign("methods");
      mergeAssign("properties");
      mergeAssign("deepProperties", merge);
      mergeAssign("propertyDescriptors");
      mergeAssign("staticProperties");
      mergeAssign("staticDeepProperties", merge);
      mergeAssign("staticPropertyDescriptors");
      mergeAssign("configuration");
      mergeAssign("deepConfiguration", merge);
      concatAssignFunctions("initializers");
      concatAssignFunctions("composers");
    }

    return dstDescriptor;
  }
Mutates the dstDescriptor by merging the srcComposable data into it.
@param {Descriptor} dstDescriptor The descriptor object to merge into.
@param {Composable} [srcComposable] The composable
(either descriptor or stamp) to merge data form.
@returns {Descriptor} Returns the dstDescriptor argument.