/**
  * Offset to set.
  *
  * @param mixed $index  The offset to assign the value to.
  * @param mixed $newval The value to set.
  *
  * @return void
  * @throws \InvalidArgumentException When invalid element given.
  */
 public function offsetSet($index, $newval)
 {
     $this->locateObject();
     parent::offsetSet($index, $newval);
 }
 /**
  * Locates object inside proxy.
  *
  * @return void
  */
 protected function locateObject()
 {
     if ($this->locatorUsed) {
         return;
     }
     // NodeElement + TargetElement = Proxy.
     $this->locatorUsed = true;
     /** @var AbstractTypifiedElementCollection $object */
     $object = call_user_func(array($this->className, 'fromNodeElements'), $this->locateElements(), null, $this->pageFactory);
     $object->setName($this->getName());
     AbstractElementCollection::offsetSet(null, $object);
     $iterator = $this->getIterator();
     /** @var ITypifiedElement $element */
     foreach ($iterator as $element) {
         $element->setName($this->getName());
     }
 }