public function startsWith(self $str, MStringComparison $cmp = null){
		
		if($str->isNullOrEmpty()){
			throw new \InvalidArgumentException('$str is empty');
		}
		
		if($str->count() > $this->count()){
			throw new \InvalidArgumentException('$str is longer than $this');
		}
		
		if($cmp === null || $cmp->getValue() === MStringComparison::CASE_SENSITIVE){
			return $this->substring(0, $str->count())->_Value === $str->_Value;
		}
		else{
			return $this->substring(0, $str->count())->toLower()
					->_Value === $str->toLower()->_Value;
		}
		
	}