private static Stream<String> badDoubleDotPatterns() {
        return Stream.of(
                "..", "/..", "../", "/../",
                "../foo", "/../foo",
                "foo/..", "/foo/..",
                "foo/../", "/foo/../",
                "foo/../bar", "/foo/../bar",

                // Dots escaped
                ".%2e", "/.%2e", "%2E./", "/%2E./", ".%2E/", "/.%2E/",
                "foo/.%2e", "/foo/.%2e",
                "foo/%2E./", "/foo/%2E./",
                "foo/%2E./bar", "/foo/%2E./bar",

                // Slashes escaped
                "%2f..", "..%2F", "/..%2F", "%2F../", "%2f..%2f",
                "/foo%2f..", "/foo%2f../", "/foo/..%2f", "/foo%2F..%2F",

                // Dots and slashes escaped
                ".%2E%2F",

                // With matrix variables
                "..;a=b", "/..;a=b",
                "..;a=b/foo", "/..;a=b/foo",
                "foo/..;a=b", "/foo/..;a=b",
                "foo/..;a=b/", "/foo/..;a=b/",
                "foo/..;a=b/bar", "/foo/..;a=b/bar",
                ".%2e;a=b", "/.%2e;a=b", "%2E.;a=b/", "/%2E.;a=b/", ".%2E;a=b/", "/.%2E;a=b/",
                "foo/.%2e;a=b", "/foo/.%2e;a=b",
                "foo/%2E.;a=b/", "/foo/%2E.;a=b/",
                "foo/%2E.;a=b/bar", "/foo/%2E.;a=b/bar",
                "%2f..;a=b", "..;a=b%2F", "/..;a=b%2F", "%2F..;a=b/", "%2f..;a=b%2f",
                "/foo%2f..;a=b", "/foo%2f..;a=b/", "/foo/..;a=b%2f", "/foo%2F..;a=b%2F"
        );
    }
{@link RequestTarget} treats the first `=` in a query parameter as `/` internally to simplify
the detection the logic. This test makes sure the `=` appeared later is not treated as `/`.
core/src/test/java/com/linecorp/armeria/internal/common/DefaultRequestTargetTest.java