public function getFieldDataFromRESTObject(array $rest_data, Tracker_FormElement_Field_List $field)
 {
     $project = $field->getTracker()->getProject();
     if (isset($rest_data['id'])) {
         $representation_class = '\\Tuleap\\Project\\REST\\UserGroupRepresentation';
         $value = call_user_func_array($representation_class . '::getProjectAndUserGroupFromRESTId', array($rest_data['id']));
         $id = $value['user_group_id'];
         $bind_value = $this->getValueByUGroupId($id);
         if ($bind_value) {
             return Tracker_FormElement_Field_OpenList::BIND_PREFIX . $bind_value->getId();
         }
         $user_group = $this->ugroup_manager->getUGroup($project, $id);
         if (!$user_group) {
             throw new Tracker_FormElement_InvalidFieldValueException('User Group with ID ' . $id . ' does not exist for field ID ' . $field->getId());
         }
         if (!$bind_value) {
             $identifier = $user_group->getName();
         }
     } else {
         if (isset($rest_data['short_name'])) {
             $name = (string) $rest_data['short_name'];
             $user_group = $this->ugroup_manager->getUGroupByName($project, $name);
             if (!$user_group) {
                 throw new Tracker_FormElement_InvalidFieldValueException('User Group with short_name ' . $name . ' does not exist for field ID ' . $field->getId());
             }
             $identifier = $name;
         } else {
             throw new Tracker_FormElement_InvalidFieldValueException('OpenList static fields values should be passed as an object with at least one of the properties "id" or "short_name"');
         }
     }
     $row = $this->getOpenValueDao()->searchByExactLabel($field->getId(), $identifier)->getRow();
     if ($row) {
         return Tracker_FormElement_Field_OpenList::OPEN_PREFIX . $row['id'];
     }
     return Tracker_FormElement_Field_OpenList::NEW_VALUE_PREFIX . $identifier;
 }