public function processCategories($contact, $categories)
{
$get = function ($category) {
return $category->getId();
};
$delete = function ($category) use($contact) {
return $contact->removeCategory($category);
};
$add = function ($category) use($contact) {
return $this->addCategories($contact, $category);
};
$entities = $contact->getCategories();
$result = $this->processSubEntities($entities, $categories, $get, $add, null, $delete);
$this->resetIndexOfSubentites($entities);
return $result;
}