/**
  * Hydrate an array of data onto an entity using a form
  *
  * @param AbstractEntity $entity
  * @param array $values
  * @param Form $form
  * @return AbstractEntity
  */
 private function hydrate(AbstractEntity $entity, array $values, Form $form)
 {
     $form->setObject($entity);
     if ($form->getBaseFieldset()) {
         $form->getBaseFieldset()->setObject($entity);
     }
     $form->setData($values);
     if (!$form->isValid()) {
         return $this->setErrorMessages($form->getMessages());
     }
     $result = $form->getData();
     if (!$result instanceof AbstractEntity) {
         throw new RuntimeException('Unable to retrieve entity from Form');
     }
     return $result;
 }