public function insert($index, self $str){
		
		if(!$this->offsetExists($index)){
			throw new \OutOfRangeException('$index is invalid');
		}
		
		return new static(
				$this->substring(0, $index) .
				$str->_Value .
				$this->substring($index),
			$this->_Encoding);
		
	}
public function insert($index, self $str){
		
		if(!$this->offsetExists($index)){
			throw new \OutOfRangeException('$index is invalid');
		}
		
		return new static(
				$this->substring(0, $index) .
				$str->_Value .
				$this->substring($index),
			$this->_Encoding);
		
	}
public function insert ( $ index , self $ str ) { if ( ! $ this -> offsetExists ( $ index ) ) { throw new \ OutOfRangeException ( '$index is invalid' ) ; } return new static ( $ this -> substring ( 0 , $ index ) . $ str -> _Value . $ this -> substring ( $ index ) , $ this -> _Encoding ) ; }
Returns a new string with a given string inserted at a given index
@param int $index
@param self $str
@return \static
Returns a new string with a given string inserted at a given index