protected function initFlagsByPatternOrReverse ($pattern) {
		$scheme = static::FLAG_SCHEME_NO;
		if (mb_strpos($pattern, '//') === 0) {
			$scheme = static::FLAG_SCHEME_ANY;
		} else if (mb_strpos($pattern, 'http://') === 0) {
			$scheme = static::FLAG_SCHEME_HTTP;
		} else if (mb_strpos($pattern, 'https://') === 0) {
			$scheme = static::FLAG_SCHEME_HTTPS;
		}
		$host = static::FLAG_HOST_NO;
		if ($scheme) {
			if (mb_strpos($pattern, static::PLACEHOLDER_HOST) !== FALSE) {
				$host = static::FLAG_HOST_HOST;
			} else if (mb_strpos($pattern, static::PLACEHOLDER_DOMAIN) !== FALSE) {
				$host = static::FLAG_HOST_DOMAIN;
			} else {
				if (mb_strpos($pattern, static::PLACEHOLDER_TLD) !== FALSE) 
					$host += static::FLAG_HOST_TLD;
				if (mb_strpos($pattern, static::PLACEHOLDER_SLD) !== FALSE) 
					$host += static::FLAG_HOST_SLD;
			}
			if (mb_strpos($pattern, static::PLACEHOLDER_BASEPATH) !== FALSE) 
				$host += static::FLAG_HOST_BASEPATH;
		}
		$queryString = mb_strpos($pattern, '?') !== FALSE 
			? static::FLAG_QUERY_INCL 
			: static::FLAG_QUERY_NO;
		$this->flags = [$scheme, $host, $queryString];
	}