public function visit(Visitor $visitor, Generator $generator, $data)
{
$generator->startObjectElement('ObjectStateGroup');
$visitor->setHeader('Content-Type', $generator->getMediaType('ObjectStateGroup'));
$visitor->setHeader('Accept-Patch', $generator->getMediaType('ObjectStateGroupUpdate'));
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadObjectStateGroup', array('objectStateGroupId' => $data->id)));
$generator->endAttribute('href');
$generator->startValueElement('id', $data->id);
$generator->endValueElement('id');
$generator->startValueElement('identifier', $data->identifier);
$generator->endValueElement('identifier');
$generator->startValueElement('defaultLanguageCode', $data->defaultLanguageCode);
$generator->endValueElement('defaultLanguageCode');
$generator->startValueElement('languageCodes', implode(',', $data->languageCodes));
$generator->endValueElement('languageCodes');
$generator->startObjectElement('ObjectStates', 'ObjectStateList');
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadObjectStates', array('objectStateGroupId' => $data->id)));
$generator->endAttribute('href');
$generator->endObjectElement('ObjectStates');
$this->visitNamesList($generator, $data->getNames());
$this->visitDescriptionsList($generator, $data->getDescriptions());
$generator->endObjectElement('ObjectStateGroup');
}