/**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroupCreateStruct
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     // Since ContentTypeGroupInput is used both for creating and updating ContentTypeGroup and identifier is not
     // required when updating ContentTypeGroup, we need to rely on PAPI to throw the exception on missing
     // identifier when creating a ContentTypeGroup
     // @todo Bring in line with XSD which says that identifier is required always
     $contentTypeGroupIdentifier = null;
     if (array_key_exists('identifier', $data)) {
         $contentTypeGroupIdentifier = $data['identifier'];
     }
     $contentTypeGroupCreateStruct = $this->contentTypeService->newContentTypeGroupCreateStruct($contentTypeGroupIdentifier);
     if (array_key_exists('modificationDate', $data)) {
         $contentTypeGroupCreateStruct->creationDate = new DateTime($data['modificationDate']);
     }
     // @todo mainLanguageCode, names, descriptions?
     if (array_key_exists('User', $data) && is_array($data['User'])) {
         if (!array_key_exists('_href', $data['User'])) {
             throw new Exceptions\Parser("Missing '_href' attribute for User element in ContentTypeGroupInput.");
         }
         $contentTypeGroupCreateStruct->creatorId = $this->requestParser->parseHref($data['User']['_href'], 'userId');
     }
     return $contentTypeGroupCreateStruct;
 }
 /**
  * Instantiates a new content type group create class
  *
  * @param string $identifier
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroupCreateStruct
  */
 public function newContentTypeGroupCreateStruct($identifier)
 {
     return $this->service->newContentTypeGroupCreateStruct($identifier);
 }