public function offsetSet($k, $v)
	{
		if (null === $k || !array_key_exists($k, $this->_container)) {
			$v = (is_object($v) && get_class($v) === $this->_type) ? $v : new $this->_type($v);

			if (null === $k) {
				$this->_container[] = $v;
			}
			else {
				$this->_container[$k] = $v;
			}

			return;
		}

		if (is_a($this->_type, AtomicInterface::class, true)) {
			$this->_container[$k]->set($v);
			return;
		}

		if (is_a($this->_type, TypedAbstract::class, true)) {
			$this->_container[$k]->replace($v);
			return;
		}

		$this->_container[$k] = new $this->_type($v);
	}