/**
  * Decorate a given subject.
  *
  * @param object $subject
  *
  * @return object
  */
 public function decorate($subject)
 {
     foreach ($subject as $key => $atom) {
         $subject[$key] = $this->autoPresenter->decorate($atom);
     }
     return $subject;
 }
 /**
  * Decorate a given subject.
  *
  * @param object $subject
  *
  * @return object
  */
 public function decorate($subject)
 {
     $items = $this->getItems($subject);
     foreach ($items->keys() as $key) {
         $items->put($key, $this->autoPresenter->decorate($items->get($key)));
     }
     return $subject;
 }
 /**
  * Decorate a given subject.
  *
  * @param object $subject
  *
  * @return object
  */
 public function decorate($subject)
 {
     if (is_object($subject)) {
         $subject = clone $subject;
     }
     if ($subject instanceof Model) {
         foreach ($subject->getRelations() as $relationName => $model) {
             $subject->setRelation($relationName, $this->autoPresenter->decorate($model));
         }
     }
     if (!class_exists($presenterClass = $subject->getPresenterClass())) {
         throw new PresenterNotFoundException($presenterClass);
     }
     return $this->container->make($presenterClass, ['resource' => $subject]);
 }