public function shift($size = 1, $value = false)
	{
		$size = (int) $size;

		if ($size > 0)
		{
			$min = min($this->size, $size);

			for ($i = $this->size - 1; $i >= $min; $i--)
			{
				$this[$i] = $this[$i - $min];
			}

			for ($i = 0; $i < $min; $i++)
			{
				$this[$i] = $value;
			}
		}
		else
		{
			$min = min($this->size, -$size);

			for ($i = 0; $i < $this->size - $min; $i++)
			{
				$this[$i] = $this[$i + $min];
			}

			for ($i = $this->size - $min; $i < $this->size; $i++)
			{
				$this[$i] = $value;
			}
		}

		return $this;
	}