/**
  * @param ResourceDefinition $resourceDefinition
  * @param string $action
  * @param string $cardinality
  * @return $this
  */
 public function addResourceDefinition(ResourceDefinition $resourceDefinition, string $action, string $cardinality = Cardinality::ONE)
 {
     $name = $this->entityNameLibrary->toPretty($resourceDefinition->getEntityClassName()) . '_' . $action;
     if (!array_key_exists($name, $this->schemas)) {
         $this->schemas[$name] = null;
         // Set key to avoid circular references
         $this->schemas[$name] = $resourceDefinition->toSwagger($this, $action);
     }
     $refId = '#/definitions/' . $name;
     if ($cardinality === Cardinality::ONE) {
         return $refId;
     } else {
         return $this->addItemListDefinition($this->entityNameLibrary->toPretty($resourceDefinition->getEntityClassName()), $refId, $action);
     }
 }
 /**
  * @param ResourceDefinition $resourceDefinition
  * @param $entity
  * @throws InvalidEntityException
  */
 private function checkEntityType(ResourceDefinition $resourceDefinition, $entity)
 {
     $entityClassName = $resourceDefinition->getEntityClassName();
     if (!$entity instanceof $entityClassName) {
         if (is_object($entity)) {
             $providedType = get_class($entity);
         } else {
             $providedType = gettype($entity);
         }
         throw new InvalidEntityException("ResourceTransformer expects {$entityClassName}, " . $providedType . " given.");
     }
 }