/**
  * Creates instance of an Entity class and fills it
  * with provided data. New instance is created without
  * calling constructor.
  *
  * @param array $data
  * @param Text  $entityClass
  *
  * @return \AGmakonts\DddBricks\Entity\EntityInterface
  * @throws InvalidEntityException
  */
 private function _createInstance(array $data, Text $entityClass = NULL)
 {
     if (NULL === $entityClass) {
         $entityClass = new \ReflectionClass($this->getEntityType()->value());
     } else {
         $entityClass = new \ReflectionClass($entityClass->value());
     }
     if (FALSE === $entityClass->isSubclassOf(EntityInterface::class)) {
         throw new InvalidEntityException($this->getEntityType(), InvalidEntityException::NOT_A_ENTITY);
     } elseif (FALSE === $entityClass->isInstantiable()) {
         throw new InvalidEntityException($this->getEntityType(), InvalidEntityException::NOT_INSTANTIABLE);
     }
     /* @var $entity EntityInterface */
     $entity = $entityClass->newInstanceWithoutConstructor();
     $properties = $this->_getProperties($entityClass);
     $filteredData = $this->_validateAndFilterDataKeys($data, $properties);
     unset($entityClass);
     return $this->_fillEntity($entity, $properties, $filteredData);
 }