public function substring($start, $length = null){
		
		if(!$this->offsetExists($start)){
			throw new \OutOfRangeException('$start is an invalid index');
		}
		
		if($length !== null && !\is_numeric($length) || $length < 0){
			throw new \InvalidArgumentException('$length is invalid');
		}
		
		return new static(\mb_substr($this->_Value, $start, $length, $this->_Encoding),
				$this->_Encoding);
		
	}