public static URI parse(String featureIdentifier) {
        requireNonNull(featureIdentifier, "featureIdentifier may not be null");
        if (featureIdentifier.isEmpty()) {
            throw new IllegalArgumentException("featureIdentifier may not be empty");
        }

        // Legacy from the Cucumber Eclipse plugin
        // Older versions of Cucumber allowed it.
        if (CLASSPATH_SCHEME_PREFIX.equals(featureIdentifier)) {
            return rootPackageUri();
        }

        if (nonStandardPathSeparatorInUse(featureIdentifier)) {
            String standardized = replaceNonStandardPathSeparator(featureIdentifier);
            return parseAssumeFileScheme(standardized);
        }

        if (isWindowsOS() && pathContainsWindowsDrivePattern(featureIdentifier)) {
            return parseAssumeFileScheme(featureIdentifier);
        }

        if (probablyURI(featureIdentifier)) {
            return parseProbableURI(featureIdentifier);
        }

        return parseAssumeFileScheme(featureIdentifier);
    }
@Test
    @EnabledOnOs(WINDOWS)
    void can_parse_windows_absolute_path_form() {
        URI uri = FeaturePath.parse("C:\\path\\to\\file.feature");

        assertAll(
            () -> assertThat(uri.getScheme(), is(is("file"))),
            () -> assertThat(uri.getSchemeSpecificPart(), is("/C:/path/to/file.feature")));
    }