protected function startsWith(string $haystack, string $needle) : bool { return substr($haystack, 0, strlen($needle)) === $needle; }