- If the input is string, it is assumed to be a UUID. Then, the object is fetched from persistence. - If the input is array, we check if it has an identity property. - If the input has NO identity property, but additional properties, we create a new object and return it. However, we only do this if the configuration option "CONFIGURATION_CREATION_ALLOWED" is TRUE. - If the input has an identity property AND the configuration option "CONFIGURATION_IDENTITY_CREATION_ALLOWED" is set, we fetch the object from persistent or create a new object if none was found and then set the sub-properties. - If the input has an identity property and NO additional properties, we fetch the object from persistence. - If the input has an identity property AND additional properties, we fetch the object from persistence, and set the sub-properties. We only do this if the configuration option "CONFIGURATION_MODIFICATION_ALLOWED" is TRUE.
Inheritance: extends ObjectConverter
 /**
  * Builds a new instance of $objectType with the given $possibleConstructorArgumentValues.
  * If constructor argument values are missing from the given array the method looks for a
  * default value in the constructor signature.
  *
  * Furthermore, the constructor arguments are removed from $possibleConstructorArgumentValues
  *
  * @param array &$possibleConstructorArgumentValues
  * @param string $objectType
  * @return object The created instance
  * @throws InvalidTargetException if a required constructor argument is missing
  */
 protected function buildObject(array &$possibleConstructorArgumentValues, $objectType)
 {
     $className = $this->objectManager->getClassNameByObjectName($objectType) ?: static::$defaultNewAssetType;
     if (count($possibleConstructorArgumentValues)) {
         return parent::buildObject($possibleConstructorArgumentValues, $className);
     } else {
         return null;
     }
 }