public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
if (!isset($data['UserMetadataCriterion'])) {
throw new Exceptions\Parser('Invalid <UserMetadataCriterion> format');
}
if (!isset($data['UserMetadataCriterion']['Target'])) {
throw new Exceptions\Parser('Invalid <Target> format');
}
$target = $data['UserMetadataCriterion']['Target'];
if (!isset($data['UserMetadataCriterion']['Value'])) {
throw new Exceptions\Parser('Invalid <Value> format');
}
if (!in_array(gettype($data['UserMetadataCriterion']['Value']), ['integer', 'string', 'array'])) {
throw new Exceptions\Parser('Invalid <Value> format');
}
$value = is_array($data['UserMetadataCriterion']['Value']) ? $data['UserMetadataCriterion']['Value'] : explode(',', $data['UserMetadataCriterion']['Value']);
return new UserMetadataCriterion($target, null, $value);
}