public function offsetGet($offset)
    {
        if (false === array_key_exists($offset, $this->container)) {
            throw OutOfBoundsException::arrayKey($offset);
        }

        if (is_callable($this->container[$offset])) {
            return $this->container[$offset]($this);
        }

        return $this->container[$offset];
    }