Accept IPv4-embedded IPv6 addresses in UrlValidator (#405).

Sort members.
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5d50df7..1262c5b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -87,6 +87,7 @@
     <action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary Gregory">Compare Exact value in BigDecimalValidator min/max range checks (#401).</action>
     <action type="fix" dev="ggregory" due-to="Gary Gregory, sahvx655-wq">Compare exact values in BigInteger and BigDecimal Number range checks (#404).</action>
     <action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary Gregory">Reject non-ASCII hex digits in isValidInet6Address (#403).</action>
+    <action type="fix" dev="ggregory" due-to="sahvx655-wq, Gary Gregory">Accept IPv4-embedded IPv6 addresses in UrlValidator (#405).</action>
     <!-- ADD -->
     <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use CheckDigitException.CheckDigitException(String, Object...) (#389).</action>
     <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ValidatorException.ValidatorException(Throwable). Call sites that previously called new ValidatorException(Throwable#getMessage()) now preserve that exception (#390).</action>
diff --git a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
index b229e51..63d5f16 100644
--- a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
@@ -161,6 +161,18 @@
         assertTrue(urlValidator.isValid("http://apache.org/a/b/c#frag"));
     }
 
+    @Test
+    void testIpv6EmbeddedIpv4() {
+        final UrlValidator urlValidator = new UrlValidator();
+        // ::FFFF: in upper case already worked (testValidator452); the lower-case mapped form
+        // and the other IPv4-embedded notations must validate the same way.
+        assertTrue(urlValidator.isValid("http://[::ffff:129.144.52.38]:80/index.html"));
+        assertTrue(urlValidator.isValid("http://[::1.2.3.4]/"));
+        assertTrue(urlValidator.isValid("http://[2001:db8::1.2.3.4]/"));
+        // an embedded IPv4 part with an out-of-range octet is still rejected
+        assertFalse(urlValidator.isValid("http://[::ffff:129.144.52.999]/"));
+    }
+
     @ParameterizedTest
     // @formatter:off
     @ValueSource(strings = {
@@ -669,18 +681,6 @@
     }
 
     @Test
-    void testIpv6EmbeddedIpv4() {
-        final UrlValidator urlValidator = new UrlValidator();
-        // ::FFFF: in upper case already worked (testValidator452); the lower-case mapped form
-        // and the other IPv4-embedded notations must validate the same way.
-        assertTrue(urlValidator.isValid("http://[::ffff:129.144.52.38]:80/index.html"));
-        assertTrue(urlValidator.isValid("http://[::1.2.3.4]/"));
-        assertTrue(urlValidator.isValid("http://[2001:db8::1.2.3.4]/"));
-        // an embedded IPv4 part with an out-of-range octet is still rejected
-        assertFalse(urlValidator.isValid("http://[::ffff:129.144.52.999]/"));
-    }
-
-    @Test
     void testValidator464() {
         final String[] schemes = { "file" };
         final UrlValidator urlValidator = new UrlValidator(schemes);