public function visit(Visitor $visitor, Generator $generator, $data)
{
$generator->startObjectElement('Role');
$visitor->setHeader('Content-Type', $generator->getMediaType($data instanceof RoleDraft ? 'RoleDraft' : 'Role'));
$visitor->setHeader('Accept-Patch', $generator->getMediaType('RoleInput'));
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadRole', array('roleId' => $data->id)));
$generator->endAttribute('href');
$generator->startValueElement('identifier', $data->identifier);
$generator->endValueElement('identifier');
$generator->startObjectElement('Policies', 'PolicyList');
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadPolicies', array('roleId' => $data->id)));
$generator->endAttribute('href');
$generator->endObjectElement('Policies');
$generator->endObjectElement('Role');
}