/**
  * Iterator: get current item
  *
  * @return mixed
  */
 public function current()
 {
     if (isset($this->buffer[$this->position])) {
         return $this->buffer[$this->position];
     }
     $this->ensurePosition();
     $data = $this->resultSet->current();
     $this->buffer[$this->position] = $data;
     return $data;
 }
 /**
  * @return ArrayObject|object|null
  */
 public function current()
 {
     $data = parent::current();
     if (is_array($data)) {
         /** @var $ao ArrayObject */
         $ao = clone $this->arrayObjectPrototype;
         if ($ao instanceof ArrayObject || method_exists($ao, 'exchangeArray')) {
             $ao->exchangeArray($data);
         }
         return $ao;
     }
     return $data;
 }