function MakeDocPluginapi(genobj, genPrivate, docType, defValuesFunc) {
  // Save everything because we'll need it later:
  this.docType = docType
  this.genPrivate = genPrivate
  this.ogPluginsApi = genPrivate.plugs
  this.genobj = genobj
  this.defValuesFunc = defValuesFunc
  this.callbacksList = {}
  this.plugsList = []

  // Here we can put anything specific to this document type BUT it's not data so if we'll clear the data inside the document we'll not need to clear anything here:
  this.genPrivate.features.type[this.docType] = this

  // Prepare the object that we'll use to store data specific to this document type:
  this.genPrivate.type[this.docType] = {}
  if (typeof this.defValuesFunc === 'function') {
    // Put the default data:
    this.defValuesFunc(this)
  } // Endif.

  // Catch the clear document data event and connect it to us:
  genobj.on('clearDocType', clearDocData(this))
  return this
}
This function implementing the document plugins system so instead of implementing
everything inside a big mess document generator, you can implement each feature
as a plugin. For each document generator that want to enable this plugin system
you must create an instance of this object.

@param {object} genobj The document object to work on it.
@param {object} genPrivate Access to the internals of this object.
@param {string} docType Must be the same as the new_type parameter to the document generator's constructor.
@param {function} defValuesFunc The function to use to reset the document's data.
@summary Implementation of the pptx document plugins system so it'll be easier to add new features.
@constructor
@name MakeDocPluginapi