protected function hydrateCollection($object, $valueArray)
    {
        if (!method_exists($object, 'getValueClass') ||
            !method_exists($object, 'setCollection')) {
            return $object;
        }

        $collection = [];

        $class = $object->getValueClass();
        if (class_exists($class)) {
            foreach ($valueArray as $key => $value) {
                $dryItem = new $class();
                $item = $this->hydrateObject($dryItem, $value);
                $collection[$key] = $item;
            }
        }

        $object->setCollection($collection);

        return $object;
    }