public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
if (!array_key_exists('NOT', $data) && !is_array($data['NOT'])) {
throw new Exceptions\Parser('Invalid <NOT> format');
}
if (count($data['NOT']) > 1) {
throw new Exceptions\Parser('NOT element can only contain one subitem');
}
list($criterionName, $criterionData) = each($data['NOT']);
$criteria = $this->dispatchCriterion($criterionName, $criterionData, $parsingDispatcher);
return new LogicalNotCriterion($criteria);
}