public void testIsatapAddresses() {
    InetAddress ipv4 = InetAddresses.forString("1.2.3.4");
    String[] validIsatapAddresses = {
      "2001:db8::5efe:102:304",
      "2001:db8::100:5efe:102:304", // Private Multicast? Not likely.
      "2001:db8::200:5efe:102:304",
      "2001:db8::300:5efe:102:304" // Public Multicast? Also unlikely.
    };
    String[] nonIsatapAddresses = {
      "::1.2.3.4",
      "3ffe::1",
      "::",
      "::1",
      "2001:db8::0040:5efe:102:304",
      "2001:db8::5ffe:102:304",
      "2001:db8::5eff:102:304",
      "2001:0:102:203:200:5efe:506:708", // Teredo address; not ISATAP
    };

    for (int i = 0; i < validIsatapAddresses.length; i++) {
      InetAddress ip = InetAddresses.forString(validIsatapAddresses[i]);
      assertTrue(InetAddresses.isIsatapAddress((Inet6Address) ip));
      assertEquals(
          "checking '" + validIsatapAddresses[i] + "'",
          ipv4,
          InetAddresses.getIsatapIPv4Address((Inet6Address) ip));
    }
    for (int i = 0; i < nonIsatapAddresses.length; i++) {
      InetAddress ip = InetAddresses.forString(nonIsatapAddresses[i]);
      assertFalse(InetAddresses.isIsatapAddress((Inet6Address) ip));
      try {
        InetAddresses.getIsatapIPv4Address((Inet6Address) ip);
        fail("IllegalArgumentException expected for '" + nonIsatapAddresses[i] + "'");
      } catch (IllegalArgumentException expected) {
        // expected behavior
      }
    }
  }